Ir ao conteúdo
  • Cadastre-se

cyer

Membro Pleno
  • Posts

    150
  • Cadastrado em

  • Última visita

Tudo que cyer postou

  1. cyer

    C++ iniciante em c ++

    Não consegui ler seu código, está muito desorganizado, tente melhorar a organização e alinhamento dele. #include <iostream> // Classe std::cout e std::cin #include <locale> // Função setlocale int main() { setlocale(LC_ALL, "Portuguese"); int nPares = 0, nPositivos = 0, nImpares = 0, nNegativos = 0; std::cout << "Insira 5 numeros:\n"; for (int i = 0; i < 5; i++) { int n = 0; std::cin >> n; if (n % 2 == 0) nPares++; else nImpares++; if (n > 0) nPositivos++; else nNegativos++; } std::cout << "Possui " << nPares << " pares e " << nImpares << " ímpares\nPossui " << nPositivos << " números positivos e " << nNegativos << " números negativos." << std::endl; return 0; }
  2. @devair1010 ia responder, mas você foi mais rápido, só uma pequena correção: funciona também no C++ com a string: std::string Numero10ComoString = "10"; std::cout << "Numero 10 como inteiro[C++]: " << atoi(Numero10ComoString.c_str()) << std::endl; Mas não é o ideal para usar na linguagem C++ visto que já existe uma classe no C++ apenas para conversões de tipos.
  3. Variaveis não existe, mas existe uma classe chamada map que pode fazer isso que você quer, fiz um exemplo simples: #include <iostream> #include <string> #include <map> int main() { std::map<char, int> teste; teste['a'] = 0xFF; teste['b'] = 0xD; teste['c'] = 0xA; teste['d'] = 0x10; // ... for (std::map<char, int>::iterator it = teste.begin(); it != teste.end(); ++it) { // Mostrando todos os valores: std::cout << it->first << ": " << std::hex << it->second << std::endl; } // Com string: std::map<std::string, int> idades; idades["Joao"] = 19; idades["Maria"] = 30; idades["Sicrano"] = 10; idades["Fulano"] = 20; idades["Sicrana"] = 30; idades["Fulana"] = 21; std::cout << std::dec << std::endl; // Exemplo simples de uso: for (std::map<std::string, int>::iterator it = idades.begin(); it != idades.end(); ++it) { // Comparando e alterando a idade do João: if (it->first == "Joao") { std::cout << std::endl << "Ola Joao!" << std::endl; // Alterando a idade do Joao para 150 it->second = 150; std::cout << "A nova idade do Joao: " << it->second << std::endl << std::endl; } // Mostrando: std::cout << "Nome: " << it->first << " - Idade: " << it->second << std::endl; } std::cin.clear(); std::cin.get(); return 0; } Resultado:
  4. A sua pergunta não foi especifica, ocupa mais espaço em que? Memória? Em disco? Ou nos arquivos do projeto? Se você estiver falando em tamanho dos arquivos do projeto a resposta é sim, agora se esta falando no tamanho do arquivo em disco a resposta é sim(o AnsiC já explicou o porque disso). Agora, se o que você quer dizer ocupa mais espaço na memória a resposta é não(Explico isso nas linhas abaixo). O nome da variável é algo irrelevante, não vai ser isso que vai fazer ocupar mas espaço na memoria, ate porque a CPU não interpreta nomes de variável, mas sim registrador e endereços de memória, por exemplo: void MinhaFuncao(int minhaVariavelEnormeEblablalblablblalalbla) Apos compilado e executado, isso ai vai se tornar um registrador(geralmente fica no registrador esp, mas pode ficar no ebp), o que eu quero dizer é que o registrador ebp + 8 vai ser onde esta contida o valor da sua variável, o processador não trabalha com nomes de variáveis, mas com endereços de memória. O que vai deixar maior vai ser o tipo de variável(char, bool, int, float, long, double, long long, ...) por exemplo: uma variável do tipo int(para números inteiros) ocupa na memória 4 bytes, enquanto uma variável do tipo double ocupana memoria 8 bytes. Sobre a segunda pergunta: Sim, tem algumas diferenças, enquanto o \n e apenas um carácter ansi que pula uma linha, o endl é um manipulador de stream, que forca o flush do buffer a pular uma linha. o endl não existe na linguagem C, apenas na linguagem C++. Dicas para aprender rápido? Apenas se esforce e meta a mão nos códigos, você só vai aprender lendo e praticando.
  5. @Lucas Akio Fujita Sato se você está programando na linguagem C++, use as funções e recursos da linguagem C++, deve-se evitar o máximo o uso de funções e recursos da linguagem C em um compilador C++. void analisa_dados_brutos(double* s, long t) //sinal e seu tamanho { ofstream file; // Biblioteca fstream, #include <fstream> file.open("sinal.txt"); if (!file.is_open()) { cout << "Falha ao criar o arquivo: sinal.txt!" << endl; return; } double m = fabs(s[0]); for(long i=1; i<t; i++) if(fabs(s[i])>m) m = fabs(s[i]); for(long i=0; i<t; i++) s[i] /= m; double* y = new double[t+t-1]; //sinal autocorrelacionado for(long n=0; n<t+t-1; n++) { y[n] = 0; for(long k=0; k<t; k++) if((n-k>=0) && (n-k<t)) y[n] += s[n-k]*s[t-k-1]; } for(long n=t; n<t+t-1; n++) file << setprecision(5) << y[n] << endl; // setprecision biblioteca: iomanip, #include <iomanip> file.close(); } Resultado: Como o @AnsiC disse, sem a documentação não tem como saber se a saída esta correta, mas esta saindo.
  6. cyer

    C++ Erro no Visual C++

    Estranho, já tentou reinstalar a aplicação? Você poderia tentar instalar uma versão mais recente do Visual Studio, como o Visual Studio 2017 por exemplo, a versão 2013 tem vários bugs.
  7. Você poderia adicionar uma verificação(if) dentro do loop para ignorar isso.
  8. @Coelhinho.com boa tentativa, você precisava de um outro for dentro: for (int i = 0; i < n; i++) { for (int j = 0; j <= i; j++) printf("*"); printf("\n"); }
  9. Sabe quando você usa o for da forma? for (int i = 0; i < 10; i++) Então, nessa forma ai seria equivalente a isso: for (int i = 10 - 1; i--;) No caso vai começar do 9 e ir até o 0, assim como na forma de cima só que ao contrario: começar do 0 e terminar no 9 Eu coloquei o - 1, apenas para não começar em uma linha inválida pelo fato de começar do 0(lembra do 0 a 9?, então, seria 10 números, mas começando do 0 e terminando no 9) Na parte do if (i == contador - 2), eu tive que fazer essa verificação apenas para poder corrigir a saída da ultima linha, visto que a sem por o \n na ultima linha, ficava dessa forma: Como pode ver os ... ficaram tudo na mesma linha porque na ultima linha do arquivo não contem o \n, então esse if (i == contador - 2) seria apenas para verificar se está na ultima linha, se tiver adiciona o \n para arrumar esse problema.
  10. Desculpe, não tinha visto a tag do tópico então achei que era em C++ #include <stdio.h> #include <Windows.h> #include <stdlib.h> #define MAX_LINHAS 600 #define MAX_CARACTERESPORLINHA 1000 int main() { FILE* arquivo = NULL; fopen("meuarquivo.txt", "r"); if (arquivo == NULL) { printf("[ERRO] Falha ao abrir o arquivo: meuarquivo.txt!\n"); system("pause"); return 0; } char linhas[MAX_LINHAS][MAX_CARACTERESPORLINHA]; size_t numLinhas = 0; while (fgets(linhas[numLinhas++], MAX_CARACTERESPORLINHA, arquivo) != NULL); for (size_t i = numLinhas - 1; i--;) { if (linhas[i]) { printf("%s", linhas[i]); if (i == numLinhas - 2) printf("\n"); } } fclose(arquivo); system("pause"); return 0; } Resultado:
  11. Você pode usar a classe deque + classe string e usar a função push_front da classe deque. #include <iostream> #include <string> #include <fstream> #include <deque> int main() { std::ifstream file; file.open("meuarquivo.txt"); if (!file.is_open()) { std::cout << "[ERRO] Falha ao abrir o arquivo: meuarquivo.txt." << std::endl; std::cin.clear(); std::cin.get(); return 0; } std::string txt; std::deque<std::string> strings; while (!file.eof()) { std::getline(file, txt); strings.push_front(txt); } for (std::deque<std::string>::iterator it = strings.begin(); it != strings.end(); ++it) std::cout << *it << std::endl; file.close(); std::cin.clear(); std::cin.get(); return 0; } Arquivo meuarquivo.txt: Resultado(no caso usei o console como saida em vez de um arquivo por preguiça mesmo):
  12. @Simon Viegas em resposta a sua pergunta: talvez passando um pouco o tempo. "Encontre alguém para fazer por você o seguinte algoritmo...", realmente foi isso que aconteceu, mas talvez não tenha sido em vão, talvez ele olhe como o código funciona e estude o que cada linha faz e consiga aprender algo, resultando no ganho de conhecimento ou talvez ele apenas de um Ctrl+C e Ctrl+V e envie para o professor da faculdade para ganhar os seus pontos. De qualquer forma acredito estar ajudando ele(Seja passando conhecimento ou ajudando ele ganhar os pontos na faculdade ou ambos).
  13. Exatamente, apenas troca a chamada da função pelo código que está dentro da função(embora você não consiga ver isso no compilador), se você for olhar o código gerado pelo compilador, vai ver que não existe a chamada para tal função, mas sim o código que fica dentro da função que está inline.
  14. #include <stdio.h> int main() { int numeroA = 0, numeroB = 0; printf("Informe um numero(Na faixa de 1 a 9): "); scanf("%i", &numeroA); if (numeroA < 0 || numeroA > 9) { printf("O numero informado esta fora da faixa.\nTente novamente com um numero na faixa de 1 a 9.\n"); return 0; } printf("Informe um numero qualquer: "); scanf("%i", &numeroB); int qntVezes = 0, tempNum = numeroB; while (tempNum) { if (numeroA == (tempNum % 10)) qntVezes++; tempNum /= 10; } printf("O numero %i apareceu %i %s no numero %i.\n", numeroA, qntVezes, (qntVezes != 1) ? "vezes" : "vez", numeroB); return 0; } Só precisa de uma verificação simples se o número informado é maior que o limite de um int(2147483647).
  15. @LuisGCarv siga a dica que foi dada pelo @Mauro Britivaldo, se mesmo assim não funcionar, poste o código todo(ou pelo menos o suficiente para que ele possa ser compilado), é meio difícil dizer onde está o erro sem poder testar o código.
  16. @Davi Lobo inline é uma palavra chave para dar a dica do compilador para sempre que a função for chamada substituir a chamada(call) pelo código de dentro da função. Com isso você evitaria o custo de chamada de uma função(embora minimo) podendo ganhar mais desempenho na sua aplicação. Exemplo(sem inline): void Ola() { printf("Ola!\n"); } int main() { // Iria demorar cerca de ~ 1 millisegundo para chamar essa função sem inline, obvio que depende do processador, alguns mais lento seria aproximadamente entre 2 ou 3 millisegundos Ola(); return 0; } Exemplo(com inline): inline void Ola() { printf("Ola!\n"); } int main() { // Não vai demorar nenhum milisegundo para chamar essa função, pois quando ela é uma função inline, o compilador em tempo de compilação, simplesmente troca o Ola() pelo código de dentro da função(printf("Ola!\n")) Ola(); // Seria a mesma coisa de apenas escrever: printf("Ola!\n"); return 0; } Tudo na computação não é apenas de ganhos, sempre vai ter perdas, nesse caso você vai ganhar desempenho, mas vai aumentar o tamanho do arquivo(obvio que vai depender de quantas vezes a função Ola for chamada no seu projeto e de quantas linhas tem essa função), e vai demorar mais tempo para compilar o seu projeto(em projetos pequenos isso não faz muita diferença, agora em projetos grandes, já vi casos que demorava cerca de 20 minutos para compilar o projeto inteiro, obvio que não era apenas por conta dos inlines mas sim por conta do grande número de códigos que tinha no projeto e de funções). Links falando mais sobre funções inlines(de forma mais completa e melhor explicado): http://www.tiexpert.net/programacao/c/funcoes-inline.php https://pt.stackoverflow.com/questions/110886/qual-é-a-finalidade-do-uso-de-funções-inline-na-linguagem-c
  17. Me parece que o valor está incorreto, o que é o valor? um inteiro? um array? de que tipo? Se você desse mais informações ficaria mais fácil saber onde está o problema
  18. Tem 2 problemas no seu código, o primeiro é nos printf depois da virgula, você está passando o endereço de memória das variáveis: x, y, z. Isso só é usado na função scanf, na printf você apenas passa a variável. O segundo é no else que está fazendo o uso incorreto da sintaxe. Erro 1(printf): printf ("%d", &x); -> printf ("%d", x); printf ("%d", &y); -> printf ("%d", y); printf("%d", &z); -> printf("%d", z); Erro 2(else): }else{ if (y > x && y > z) printf ("%d", &y); Forma correta: }else if (y > x && y > z){ printf ("%d", y); } else { printf("%d", z); } Código corrigido: #include <stdio.h> #include <stdlib.h> int main() { int x, y, z; printf ("Digite um numero: "); scanf("%d", &x); printf("Digite outro numero: "); scanf("%d", &y); printf("Digite mais um numero: "); scanf("%d", &z); printf("\n\n"); if (x > y && x > z) { printf ("%d", x); } else if (y > x && y > z) { printf ("%d", y); } else { printf("%d", z); } return 0; } Uma sugestão: para melhorar a legibilidade do código e organização recomendo que use a as tags: [ code ] seu código [ / code ] PS: É sem espaços, coloquei esses espaços apenas para poder mostrar para você, sem o espaços não é possível mostrar a tag.
  19. Sim, tem como engajar trabalhando em casa, você pode trabalhar como programador free lancer por exemplo. Uma área de especialização que está muito forte no mercado é Administração de Banco de Dados. Alguns cursos EAD que indico(Não estou recebendo nada para indicar esses cursos ou algo do tipo, apenas estou indicando pois conheço a qualidade dos cursos e dos professores): https://www.cursoemvideo.com/ - Possui vários cursos grátis e de uma excelente qualidade http://cfbcursos.com.br/ - Possui também cursos grátis e com uma boa qualidade
  20. Se você for fazer algo complexo, como por exemplo, usando Forms, prefira o uso da C# do que a C++, embora a linguagem C++ possua suporte a criação de Forms ainda não é algo muito evoluído quanto o C#.
  21. cyer

    C++ Como formatar o CPF??

    Talvez seja isso que você queira? #include <iostream> #include <Windows.h> #include <string> bool CPFEstaFormatado(std::string CPF) { for (size_t i = 0; i < CPF.size(); i++) { if (CPF[i] == '.') return true; } return false; } int main() { std::string CPF; std::cout << "Insira o CPF: "; std::cin >> CPF; std::string CPFSemFormatacao = CPF; if (CPFEstaFormatado(CPF)) { CPFSemFormatacao.clear(); for (size_t i = 0; i < CPF.size(); i++) { if (CPF[i] != '.' && CPF[i] != '-') CPFSemFormatacao.push_back(CPF[i]); } } else // Se não tiver formatado adiciona a formatação no CPF { std::string temp; for (int i = 0; i < CPF.size(); i++) { if (i != 3 && i != 6 && i != 9) temp.push_back(CPF[i]); else { temp.push_back(i == 9 ? '-' : '.'); temp.push_back(CPF[i]); } } CPF = temp; } std::cout << "CPF sem formatacao: " << CPFSemFormatacao << std::endl; std::cout << "CPF com formatacao: " << CPF << std::endl; // Seu código... system("pause"); return 0; }
  22. Coloquei comentários no código para você entender o que cada linha faz. Espero que seja o que você precise. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MaiorMenorNum { class Program { static void Main(string[] args) { // Lista onde vai armazenar os números inseridos pelo usuário List<int> numeros = new List<int>(); // Variável onde vai receber o valor inserido pelo usuário int Numero = 0; while (true) { Console.Write("Informe o número(Informe o número 0 caso deseja sair): "); // Pega o número inserido pelo usuário e salva na variável "Numero" Numero = int.Parse(Console.ReadLine()); if (Numero < 0) // Verifica se o número inserido pelo usuário é negativo, se for exibe uma mensagem e volta para o inicio do loop { Console.WriteLine("Você inseriu um número negativo, insira um número positivo."); // Aguarda o usuário pressionar uma tecla Console.ReadKey(); // Limpa a tela Console.Clear(); // Quebra o loop atual continue; } else if (Numero == 0) // Verifica se o número inserido é igual 0 para sair da entrada de dados { // Limpa a tela Console.Clear(); // Quebra o loop break; } // Adiciona o número inserido pelo usuário na lista numeros.Add(Numero); } // Variável onde vai ficar armazenada o maior número int Maior = 0; // Variável onde vai ficar armazenada o menor número int Menor = 999999; // Pecorre a lista onde está salvo os números inseridos pelo usuário para pegar o maior e o menor foreach(int element in numeros) { if (element < Menor) // Verifica se o número atual é menor que o número salvo na variável "Menor", se for salva esse número na variável "Menor" Menor = element; else if (element > Maior) // Verifica se o número atual é maior que o número salvo na variável "Maior", se for salva esse número na variável "Maior" Maior = element; } // Mostra o maior e menor número inserido pelo usuário Console.WriteLine("O maior número é: {0}", Maior); Console.WriteLine("O menor número é: {0}", Menor); // Aguarda o usuário pressionar alguma tecla para sair Console.ReadKey(); } } }
  23. cyer

    C++ Como formatar o CPF??

    Você quer mostrar o CPF na tela com os pontos e o hífen?
  24. @Mauro Britivaldo realmente o código assembly vai ser igual tanto usando inline como macros pois ambos fazem basicamente a mesma coisa, ambos vão apenas substituir a chamada pelo código ((x) > (y)? (x):(y)), então com certeza vai ser igual(pode até mudar um pouco como foi esse caso, mas não vai ter grande diferenças assim, tanto no código como no resultado)
  25. @Mauro Britivaldo Bom foi só uma dica, mas se você se ofendeu desculpe, não falei que você não é um programador super experiente ou que eu era, até porque não conheço você, não preciso apresentar para você um programador super experiente, falei apenas isso para alertar você pois como eu falei sobre o __forceinline achei uma boa ideia dar essa dica para evitar problemas no seu código caso você deseje um dia forçar essa otimização, posso lhe mostrar varias fontes falando sobre isso. Fora que eu não falei que quando você define uma função como inline vai aumentar o tamanho do executável mais do que devia(Acredito que você já deva saber disso) e também aumenta o tempo de compilação. Agora imagine o uso de inline em milhares de funções de um projeto extremamente grande, como um jogo por exemplo, imagine o tamanho enorme do executável do jogo ou do tempo que vai demorar para compilar esse projeto, tudo isso por causa de alguns milissegundos a menos. https://pt.stackoverflow.com/questions/110886/qual-é-a-finalidade-do-uso-de-funções-inline-na-linguagem-c Leia as partes abaixo: "O compilador costuma ser muito esperto quanto a isto. É raro o programador saber quando fazer inline melhor que o compilador sabe." "Se o programador forçar onde não deve, não só pode perder performance, principalmente por encher o cache mais facilmente, como também pode ter alguns problemas nem sempre fáceis de perceber." Link em inglês: https://stackoverflow.com/questions/151919/when-should-i-use-forceinline-instead-of-inline Esse link é apenas um tópico da Microsoft falando um pouco mais sobre funções embutidas: https://msdn.microsoft.com/pt-br/library/bw1hbe6y.aspx Se você quiser mais, existe muito mais conteúdo na internet sobre isso(infelizmente a maioria é inglês) estou com preguiça de procurar outras fontes mas caso se interesse recomendo que olhe.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!