Ir para conteúdo

POWERED BY:

Arquivado

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

Dzago

[Resolvido] Encerrar while com ((nota = getchar() != EOF)

Recommended Posts

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

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

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

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

×

Informação importante

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