Dzago 2 Denunciar post Postado Junho 28, 2012 Fala galera, Tô fazendo um programa em C que conta quantas vezes cada nota aparece em uma turma. E para encerrar a pessoa tem que entrar com EOF (end of file). Alem de não dar certo o programa imprime 3x um printf que dei. Ajuda aeh!! Lá vai o código: #include <stdio.h> int main (void){ int nota; int ac = 0, bc = 0, cc = 0, dc = 0; //contadores das notas a,b,c,d printf("Digite as notas em letras.\n"); printf("Digite EOF para encerrar.\n"); while((nota = getchar()) != EOF){ switch(nota){ case 'A': case 'a': ++ac; break; case 'B': case 'b': ++bc; break; case 'C': case 'c': ++cc; break; case 'D': case 'd': ++dc; break; case '\n': case '\t': case ' ': break; default: printf("Letra de nota incorreta.\n"); //ta imprimindo 3x essa sequencia de print. PQ? printf("Digite nova nota"); break; } } printf("A: %d\n", ac); printf("B: %d\n", bc); printf("C: %d\n", cc); printf("D: %d\n", dc); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
GBecker 51 Denunciar post Postado Junho 29, 2012 Dzago, Compilei e executei o seu código. Ele está em loop infinito. Sua condição de parada do while, sugiro que utilize outra. Espero ter ajudado, FLW! :grin: Compartilhar este post Link para o post Compartilhar em outros sites
Dzago 2 Denunciar post Postado Junho 29, 2012 Mas como encerrá-lo se uso o getchar e amarrei as notas com aquelas q qro, qq outra letra o programa pede para entrar com as notas corretas (esperadas). Dei uma olhada e o EOF era para retornar o valor -1, mas o programa ta pegando letra por letra( E O F). Já tentei com "", '' e até sem aspas. Alguem me dá uma dica ae!! Vlw. Compartilhar este post Link para o post Compartilhar em outros sites
Dzago 2 Denunciar post Postado Junho 30, 2012 Achei o problema. Para inserir o EOF é só apertar Ctrl d (linux) e Ctrl z(Windows) que ele retorna valor de -1 e encerra o programa. Meu problema estava em usar Eclipse para C, ele não entende isso. Fazer o q, né? Vlw Compartilhar este post Link para o post Compartilhar em outros sites