Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.

cyer

Membros Plenos
  • Total de itens

    129
  • Registro em

  • Última visita

  • Qualificações

    N/D

Reputação

106

3 Seguidores

Informações gerais

  • Cidade e Estado
    Fortaleza/CE
  • Sexo
    Masculino
  1. @isrnick realmente esse algoritmo é muito melhor que o que eu tinha feito.
  2. Com esse algoritmo vai acabar passando da faixa limitada(com muitos números gerados), tentei rodar com o Visual Studio, gerava exceção para números grandes.
  3. Um pequeno exemplo(basta implementar no seu código): #include <iostream> #include <Windows.h> // Se quiser algo mais preciso que o GetTickCount, pode usar timeGetTime ou QueryPerformanceCounter ou a classe chrono #define TempoAtual GetTickCount class Contador { private: DWORD tempoAtual = 0; public: Contador(bool Iniciar = false) { if (Iniciar) this->Iniciar(); } void Iniciar() { tempoAtual = TempoAtual(); } void Zerar() { tempoAtual = 0; } void Resetar() { this->Zerar(); this->Iniciar(); } const double Millisegundos() const { return (TempoAtual() - this->tempoAtual); } const double Segundos() const { return (TempoAtual() - this->tempoAtual) / 1000.0; } }; int main() { while (true) { static Contador contador(true); if (contador.Segundos() > 10) { contador.Resetar(); std::cout << "10 segundos passados, pressionando dois enter.\n\n"; } } system("pause"); return 0; }
  4. Se fosse em C++ ficaria mais fácil fazer isso, mas até que não ficou tão ruim: #include <stdio.h> #include <Windows.h> #include <time.h> bool numJaFoiGerado(int* vet, int size, int num) { for (int i = 0; i < size; i++) if (vet[i] == num) return true; return false; } int gerarNum(int min, int max) { return rand() % (max - min + 1) + min; } int main() { srand((unsigned int)GetTickCount()); int tam = sizeof(int) * 2; // * 2 para ficar uma posição livre no vetor, ficando equivalente a int vet[1] em vez de int vet[0] int* vet = (int*)malloc(tam); int qntNum = 0; while (qntNum < 30) // Gera 30 números { int num = gerarNum(1, 50); // Gera números entre 1 e 50 while (numJaFoiGerado(vet, qntNum, num)) // Verifica se o número gerado já existe no vetor, se existir gera novamente um número num = gerarNum(1, 50); // Gera novamente números entre 1 e 50 // Número gerado não existe ainda no vetor, então adiciona no vetor e aloca mais memória para o vetor vet[qntNum++] = num; tam += sizeof(int); // Realoca uma nova posição para o vetor vet = (int*)realloc(vet, tam); // Mostra o número printf("%i\n", num); Sleep(200); } // Libera memória que foi alocada para o vetor free(vet); system("pause"); return 0; } Saída: 1 44 20 48 37 50 4 24 7 28 16 40 32 38 30 36 39 5 6 15 23 11 9 27 29 13 49 10 41 14 Pressione qualquer tecla para continuar. . .
  5. C Questão de matriz C

    @kadafimatatu por favor poderia postar a pergunta da questão?
  6. @giu_d realmente o código ficou bem mais limpo, não tinha pensado em usar a função substr para limitar, muito boa sua ideia.
  7. C Questão de matriz C

    Como foi dito pelo AnsiC, seu código passa longe de ser C++, isso é C, você quer em qual linguagem C ou C++? E não entendi bem o que você quer fazer(você esqueceu de postar a pergunta da questão e embora seja simples meu Portugol/VisualAlg é péssimo), parece que você quer apenas multiplicar uma matriz até uma coluna tal, é isso? Por favor poste a questão
  8. Eu não falei que ia abandonar ou trocar, só perguntei porque na minha região você dificilmente vai encontrar trabalhos para programadores em C, a maioria prefere o C++(embora ainda prefiro a linguagem C), apenas para você ter uma ideia de como o C++ está ficando cada vez mais forte no mercado
  9. @AnsiC onde você mora encontra muito mercado para linguagem C? Pois onde eu moro não. Não, podemos programar em algo muito mais baixo, como por exemplo em Assembly, utilizando até IDEs para C/C++, como por exemplo o Visual Studio ou CodeBlocks, ambos possuem suporte para inline assembly. Tudo que se pode fazer em C pode fazer em C++ e em 99% dos casos de uma forma até melhor.
  10. Antigamente era sim isso, hoje em dia esse pode se dizer que esse conceito mudou, C++ está praticamente superior(ou quase) que o C(no quesito de recursos, funções e projetos), ainda perde um pouco no desempenho em comparação a linguagem C, mas não é grande coisa, tanto que aplicativos que precisam do máximo desempenho possível, como jogos, a maioria hoje em dia é feita em C++. Um bom programador tem sempre que se manter atualizado para o mercado de trabalho. Se você aprende a programar em C++ você aprende a programar em qualquer linguagem Orientada a objetos(Java, C# e varias outras).
  11. No if se você usar o operador = significa que você está igualando uma variável em vez de comparar, para comparar são ==. E depois do = você tinha que usar " " pois é uma string(pelo menos era pra ser) #include <iostream> // std::cout, std::cin #include <string> // std::string using namespace std; int main() { string oper; int x = 0, y = 0; cout << "Digite um valor para x: "; cin >> x; cout << "Digite um valor para y: "; cin >> y; cout << "Se voce for somar digite som, se for subtrair digite sub, se for dividir, digite div, se for multipicar digite mult: "; cin >> oper; if (oper == "som") cout << x + y; else if (oper == "sub") cout << x - y; else if (oper == "mult") cout << x * y; else if (oper == "div") cout << x / y; // cuidado para não passar 0 no y, se você passar 0 no y vai ocasionar problemas por tentar fazer uma divisão por zero. system("pause"); return 0; }
  12. #include <iostream> // std::cout, std::cin #include <string> // std::string, std::to_string, std::stoi int main() { int num = 0; std::cout << "Insira um numero inteiro: "; std::cin >> num; std::string numStr = std::to_string(num), numInvertedStr; for (size_t i = numStr.size(); i--;) numInvertedStr.push_back(numStr[i]); std::cout << "Numero: " << std::stoi(numInvertedStr) << std::endl; system("pause"); return 0; } Saída primeiro teste: Saída segundo teste: Saída terceiro teste:
  13. Como assim não está rodando? Poderia postar algo para identificar onde está o erro? Aqui rodou sem problema algum. Tente esse código: #include <stdio.h> #include <Windows.h> int main() { float alturachico = 1.50f, alturaze = 1.10f; float crescimentoanualchico = 0.2f, crescimentoanualze = 0.3f; int qntAnos = 0; // Verifica se o Chico é maior que o Zé bool Pessoa1MaiorQuePessoa2 = (alturachico > alturaze) ? true : false; while (Pessoa1MaiorQuePessoa2 ? alturaze < alturachico : alturachico < alturaze) { qntAnos++; alturachico += crescimentoanualchico; alturaze += crescimentoanualze; } if (qntAnos > 100 || qntAnos == 0) { printf("Nao eh possivel %s ser maior que %s.\n", Pessoa1MaiorQuePessoa2 ? "Ze" : "Chico", Pessoa1MaiorQuePessoa2 ? "Chico" : "Ze"); return 0; } printf("%s vai ser maior que a %s em %d anos.\n", Pessoa1MaiorQuePessoa2 ? "Ze" : "Chico", Pessoa1MaiorQuePessoa2 ? "Chico" : "Ze", qntAnos); system("pause"); return 0; }
  14. @Marcela da Silva de Souza exatamente, e atribuir os valores. Apenas remova a linha abaixo que vai compilar: setlocale(NULL, "Portuguese");
  15. Da linguagem C não podem retirar, mas da linguagem C++ podem retirar o goto, inclusive já fizeram algo parecido na nova versão do C++ Moderno chamada de "C++ 11", na versão mais recente do C++(C++ 17), retiraram a keyword register, é provável que nas próximas versões do C++ moderno retire algumas "keywords" que são inúteis nos dias de hoje da mesma forma que o register é. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4340 https://stackoverflow.com/questions/20618008/replacement-for-deprecated-register-keyword-c-11

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×