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.

alecounter

Membros Plenos
  • Total de itens

    30
  • Registro em

  • Última visita

  • Qualificações

    N/D
  1. a complexidade computacional dos algoritmos não é igual. no meu algoritmo, a decisão de o número 'n' ser um primo ou não se baseia no fato de algum número contido em {2,3,...,int(sqrt(n))} dividir n. Se isso acontecer, a função cospe a resposta imediatamente. No caso do algoritmo do colega acima, o laço percorre o conjunto {1,2,...,n-1} em todos os casos e ainda itera sobre uma variável toda vez que ocorre uma divisão inteira. Podemos observar também que valores acima de int(sqrt(n)) nem precisariam ser verificados, pelo teorema fundamental da aritmética...
  2. não vejo outra alternativa a não ser usar exceções, em especial pelo caso n=0. pelo algoritmo de euclides, se um número 'a' natural divide 0, então o quociente também é 0 e podemos escrever 0=0a. Percebe-se assim que qualquer valor contido no conjunto dos inteiros satisfaz isso, logo fica indeterminado. Contar divisores nesse caso não funciona(mesmo). adicionado 2 minutos depois algoritmo da divisão ***
  3. aí é só tratar exceções... só colocar um if-else que leva alguns nanossegundos para ser computado
  4. não amigo, eu simplesmente copiei o código que estava aqui no post no meu codeblock para windows e tudo funcionou bem. precisei apenas fazer uma alteração aqui: for(int i = 2; i <= int(sqrt(n)); i++) pois realmente não sabia que o valor de sqrt(n) seria truncado, pensei que fosse arredondado. Não sei o motivo pelo qual não funcionou no ambiente Linux onde estava anteriormente. Basicamente eu nem segui nada do que vcs disseram aqui adicionado 2 minutos depois entendi a lógica sim, obrigado pelo algoritmo como já disse, fiz uma alteração no código que fiz anteriormente e tudo funcionou bem
  5. Eu já sei a definição de número primo. O que isso tem a ver com o problema? adicionado 9 minutos depois Problema resolvido. Uma pequena alteração no código resolveu o problema estranho que na faculdade eu fiz a mesma coisa e não funcionou por lá... Lá na faculdade é Linux e aqui windows, será que tem algo a ver? adicionado 17 minutos depois se o meu número n for da forma n=2k, pra k natural, então deveria funcionar para o 2 também. o código não funcionou por algum motivo desconhecido, já que copiei e colei aqui no codeblocks em casa e tudo funcionou bem...
  6. por qual motivo isto está acontecendo?
  7. eu coloquei outra condição, fiz assim for(int i = 2; i < n; i++) e mesmo assim a coisa ainda não funciona!
  8. Pessoal, tudo bem? alguém poderia por gentileza me indicar o erro deste algoritmo que verifica se o número é primo ou não? O erro é que a função só retorna true! bool primo(int n) { for(int i = 2; i < int(sqrt(n)); i++) if(n % i == 0) return false; return true; } int main() { std::cout << primo(5); }
  9. Obrigado gente, estou usando o Code::blocks aqui na faculdade
  10. Pessoal tudo bem? Alguém sabe me informar se o codeblocks funciona para C++? fiz um código aqui mas não está compilando...
  11. o trecho em vermelho está dizendo o que você precisa fazer. basicamente o codeblocks não conseguiu invocar o compilador (provavelmente você instalou o codeblocks sem ele).
  12. bom, eu reparei que você declarou o vetor de estrutura gente dentro da função registro, do jeito que você fez ela seria perdida, o certo seria você declarar assim: static struct gente aaa[e]; pois dessa forma esse vetor não seria perdido quando a função deixasse de executar. mas eu particularmente não gosto de fazer assim, então declarei esse vetor dentro de main e coloquei todas as outras funções para cima de main, pra não precisar fazer apenas a declaração das mesmas.
  13. você declarou aaa como uma estrutura e não como um vetor de estruturas. deveria fazer assim struct gente aaa[e]; adicionado 1 minuto depois ops, acho que li o codigo de maneira errada, perai adicionado 8 minutos depois mexi no seu código e agora parece que rodou #include <stdio.h> #include <stdlib.h> struct gente { char sexo[11]; char cor[11]; char cabelo [11]; int id; }; void registro(struct gente *aaa, int e) { int i; for(i = 0; i < e; i++) { printf("Informe o sexo: "); scanf("%s%*c", &aaa[i].sexo); printf("Informe a cor dos olhos: "); scanf("%s%*c", &aaa[i].cor); printf("Informe a cor do cabelo: "); scanf("%s%*c", &aaa[i].cabelo); printf("Informe a idade: "); scanf("%d%*c", &aaa[i].id); } } void imprimir(struct gente *aaa, int e){ int i; printf("Fique agora com os dados das pesquisas.\n\n"); for(i=0;i<e;i++){ printf("A pessoa do sexo %s, ",aaa[i].sexo); printf("tem os olhos %s, ",aaa[i].cor); printf("tem os cabelos %s, ", aaa[i].cabelo); printf("tem a idade de %d anos.\n\n", aaa[i].id); } } void main() { int e, *a; printf("Informe a quantidade de pessoas que passaram pela pesquisa.\n"); scanf("%d", &e); a = &e; struct gente aaa[e]; registro(aaa, e); imprimir(aaa, e); } adicionado 11 minutos depois na verdade não entendi porque você criou o ponteiro para inteiro a, ele não foi usado no código
  14. Usa uma variável para guardar o número de alunos aprovados e outra para guardar o número de alunos reprovados.
  15. Moça, depois que calcular a média, você terá que varrer o vetor inteiro de novo, comparando cada elemento com a média e incrementando um contador para o caso aprovado e outro para o caso reprovado, conforme o caso. adicionado 0 minutos depois ops, você não precisa comparar com a média, precisa comparar com o número 5 na verdade.

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

×