[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico]
[Índice de assunto]
RE: Exercicio
- Subject: RE: Exercicio
- From: Yoshiharu Kohayakawa <yoshi@ime.usp.br>
- Date: Sun, 26 Nov 2000 17:40:12 -0200
Camila de Almeida wrote (on Sunday, 26 Nov 2000, at 12:07:00 -0200):
> Olá pessoal!
>
> Bom, estou estudando uns probleminhas aqui...
>
> Vejam só:
>
> Problema:
>
> Deseja-se publicar o número de acertos de cada aluno em uma prova de foma
> de testes. A prova consta de 10 questões, cada uma com cinco alternativas
> identificadas por A, B, C, D e E. Para isso são dados: cartão gabarito e
> cartão de respostas para cada aluno, contendo o seu número e suas
> respostas.
>
> Bom, digamos então que o gabarito seja:
>
> A, B, C, D, E, A, B, D, C, E.
>
> e o cartão de respostas de um certo aluno seja
>
> A, B, D, E, C, A, D, D, E, C.
>
> Bom, o problema é o seguinte:
>
> Se o usuário digita as respostas do gabarito (ou do cartão) com espaços
>
> A B C D E.......
>
> ou teclando "enter" após cada letra,
>
> A
> B
> C
> D
> E
> .
> .
> .
>
>
> o programa que fiz acaba contando o espaço (bem como o "enter") como caracter....
> Será que alguém saberia como fazer para que o programa lesse somente as letrinhas???
Experimento o programa abaixo. Ele usa o isspace() do ctype para ignorar os
brancos. Até mais, Yoshi
============================================================
#include <stdio.h>
#include <ctype.h>
#define NMAX 1000
/* leia_char(): le caracteres de stdin. Ignora todos os brancos (isto 'e,
brancos, \n, e \t (TAB)), e devolve o primeiro caracter nao-branco. Caso a
entrada acabe antes de aparecer um caracter nao-branco, devolve EOF. */
int leia_char();
int main()
{
int ch, i=0, n;
char v_ch[NMAX];
while ((ch=leia_char()) != EOF) {
v_ch[i] = ch;
i++;
}
n = i;
for (i=0; i<n; i++)
putchar(v_ch[i]);
putchar('\n');
return 0;
}
int leia_char()
{
int ch;
ch = getchar();
while (isspace(ch)&&(ch!=EOF))
ch = getchar();
return ch;
}
============================================================
> Bom, aí abaixo está o programa que escrevi:
>
> #include <stdio.h>
> #define TAM 10
> int main()
> {
> int i, ch, gab[TAM], resp[TAM], t;
> t=0;
> for (i=0; i<TAM; i++){
> ch=getchar();
> gab[i]=ch;
> }
>
> for (i=0; i<TAM; i++){
> ch=getchar();
> resp[i]=ch;
> if (gab[i]==resp[i])
> t++;
> }
>
>
>
> Obrigada!!!
>
> Camila.
- References:
- Exercicio
- From: "Camila de Almeida" <camila17@uol.com.br>