Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: cinquleur en 16 Agosto 2013, 03:41 am



Título: cuestionario en c
Publicado por: cinquleur en 16 Agosto 2013, 03:41 am
buenas tardes, estoy elaborando un programa que tiene varias opciones, una de ellas ejecuta un examen que el usuario debe responder correctamente cada pregunta añade +1 a acumulador y si equivoca se le sumara +1 a error, asi al final del examen se hace la operación acumulador=acumulador-errores asi te daria la calificacion.

Mi problema es que siempre me da 0, no suma ni resta y se salta preguntas y lo he revisado muchas veces y no encuentro el error, les anexo una parte del codigo


int juego (char a, char b,char c,char r,int error,int acum)
 {
 acum=0;
 error=0;
 clrscr();
 gotoxy(1,10);cprintf("1)cual es el comando que nos permite acceder al modo privilegiado?");
 gotoxy(15,12);cprintf("a)router#config terminal       b)router>enable");
 scanf("%c",&r);
 if((r!=b))
 {
 error=error+1;
 }
 acum=acum+1;
 
 clrscr();
 gotoxy(1,10);cprintf("2)el comando config terminal es para entrar al modo configuracion ?");
 gotoxy(15,12);cprintf("a)verdadero      b)falso ");
 scanf("%c",&r);
 if((r!=a))
 {
 error=error+1;
 }
 acum=acum+1;
 
 clrscr();
 gotoxy(1,10);cprintf("3)cual es el comando para ver la configuracion actual del router ");
 gotoxy(15,12);cprintf("a)show running-config     b) show interface brief   c)show ip route");
 scanf("%c",&r);
 if((r!=a))
 {
 error=error+1;



(...)

acum=acum-error;
 
 if((acum>=6))
 {
 clrscr();
 cprintf("tu total del examen es %f",acum);
 gotoxy(1,10);cprintf("FELICIDADES!!! APROBASTE EL EXAMEN!!! AHORA LITTLE MAC PODRA SEGUIR SU CAMINO COMO INGENIERO");
 gotoxy(15,12);cprintf("PRESIONA ENTER PARA VOLVER AL MENU ");

 }
 else
 clrscr();
 cprintf("tu total del examen es %f",acum);
 gotoxy(3,10);cprintf("BUENO... SIEMPRE SE PUEDE INTENTAR EL SIGUIENTE SEMESTRE, ");
 
 gotoxy(15,12);cprintf("PRESIONA ENTER PARA VOLVER AL MENU ");
 getch();
 getch();
 



Título: Re: cuestionario en c
Publicado por: noalg en 16 Agosto 2013, 10:33 am
Bueno no yltengo mucho tiempo, pero he visto este error:
Código
  1. if((r!=b))
  2. {
  3. error=error+1;
  4. }
  5. acum=acum+1;
Estas haciendo un if simple, es decir si se cumple la condicion se sumara 1 a error, pero tamboen se sumara 1 a acum
Deberias hacer algo asi.
Código
  1. if(r==b) {acum++; } else {error++;}


Otra cosa que veo es que pones como parametros los char a,b y c. Si les vas a pasar sus respectivas letras deberias ponerlas como constantes, o declararlas dentro de las funcion.