[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

RE: Exercicio



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.