Test Foro de elhacker.net SMF 2.1

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 (cpp) [Seleccionar]
if((r!=b))
{
error=error+1;
}
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 (cpp) [Seleccionar]
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.