Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FelipeFerrer

[Resolvido] Nãe sei porque não esta funcionando..

Recommended Posts

Estou fazendo uma cadeira na faculdade de Algoritimo e Programação de computadores..

O professor mandou um exercicio para casa:

1- Ler diversos numeros inteiros até conseguir armazenar 10 numeros primos.

2- Mostrar a media desses valores.

3- Mostrar os numeros primos maiores do que a media.

main(){
      int N, S, J;
      float M, X;
      int D[10];
      J=0;
      while(J<=9){
             printf("Digite o valor: ");
             scanf("%d", &N);
             if(N==2 || N==3){
                    D[J]=N;
                    J++;
             }else{
                    if(N==1 || N==0){
                           J=J;
                    }else{       
                           S=0;
                           if(N%2==0){
                                  X=(N/2);
                           }else{
                                  X=(N/2)-0.5;
                           }
                           for(int I=2;I<=X;I++){
                                  if(N%I==0){
                                         S++;
                                  }
                           }
                           if(S==0){
                                  D[J]=N;
                                  J++;
                           }
                    }

             }
      }
      S=0; 
      for(int I=0;I<10;I++){
             S=S+D[i];
      }
      M=S/10;
      printf("A Media e: %f\n", M);
      printf("Numeros maiores do que a media: ");
      for(int I=0;I<10;I++){
             if(D[i]>M) printf("%d ", D[i]);
      }

      system("pause");      
}

O problema é que quando o programa calcula a media, a media fica como se fosse cravada..

Por exemplo:

eu digito 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29.

os numeros primos são: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29.

A media deles é 12,9, mas o printf só mostra 12.000.

 

Errei alguma besteira? Espero por ajuda ;)

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

FelipeFerrer,

 

A media deles é 12,9, mas o printf só mostra 12.000.

 

A média deles sempre fica em 12000 pois você esta armazenado a soma dos elementos numa variável do tipo int. E quando o compilador calcula a média, estará considerando um valor do tipo int. Ou seja, só considera o que for inteiro, as "frações"(se é que é essa a palavra correta), o compilador descarta.

 

Para resolver o seu problema basta mudar 'S' do tipo int para float. Ou fazer casting no cálculo de média. Assim:

M = (float)S/10;

 

No printf você pode definir quantas casa decimais quer imprimir. Deste jeito:

printf("A Media e: %.02f\n", M);

 

Mais explicações neste link.

 

Espero ter ajudado, FLW!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi mal, mas o que é N, S, J? M? X? Não entendo nada disso. Custa escrever tipo media, numero, soma ao invés de letras? Porque assim fica difícil de outras pessoas lerem, e também vocêm mesmo. Esperimente tentar ler isso depois de 6 meses que mexeu com ele e ver se é fácil x)

 

Conserte isso, vai ver que tudo fica mais simples de entender.

 

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu GBecker, deu certo ;@@ muito obrigado

Valeu ai tambem pela dica Renato hehehe, é mania mesmo,

mas M é de media, S de soma e por ai vai ueheuha

Obrigado de novo pela ajuda ;@@

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.