Programa en c. Problemas con resultados. Ayuda.

#1
Buenas a todos, de nuevo.

Bien el siguiente programa muestra 10 letras por pantalla, y el usuario introduce la letra mostrada.

Se mide el Tiempo máximo y minimo de respuesta.
El tiempo medio.
El nº de fallos.

este es el codigo:

Código:
#include <stdio.h>
#include <stdlib.h>

int main (void)
{   
    int i;
    int fallo=0;
    int media=0;
    int tmax=0;
    int tmin=0;
    int antes;
    int despues;
    int aleatorio;
    char posible_caracter [4]="abcd";
    char letra_pulsada [10];
    int tiempo [10];
    
    printf ("Veamos sus reflejos\n");
    
    for (i=0; i<=10; i++)
    {  srand (time (NULL));
       aleatorio=rand()%4;
       printf ("%c", posible_caracter [aleatorio]);
       antes=time (NULL);
       scanf ("%c",&letra_pulsada [i]);
       despues= time(NULL);
          if (letra_pulsada [i]!=posible_caracter [aleatorio])
              fallo++;
       tiempo [i]= despues-antes; 
       media=media+ tiempo [i];
       
     }
     
     tiempo [0]=tmax;
     tiempo [0]=tmin;
     
     for (i=1; i<10; i++)
     {
          if (tiempo [i]>tmax)
          {
              tiempo [i]=tmax;      
                  
           }
          if (tiempo [i]<tmin)
          {
              tiempo [i]=tmin;       
                  
           } 
           
       
       
      }
      
      media=media/10;
      printf ("\nEl tiempo medio de respuesta es: %d", media);
      printf ("\nEl tiempo maximo es: %d\nEl tiempo minimo: %d", tmax, tmin);
      printf ("\nEl numero de fallos es: %d\n", fallo);
     
       system ("pause");
     
     
}
Utilizo Dev++

Pues hay dos problemas.

1 Son los Tiempos maximos y minimos. No sé por que muestran 0.

2 Se supone que debe mostrar 10 caracteres, pero muestra unos 6.

Me he dado cuenta que si no contesto, y solo pulso enter, entonces si muestra 10, ¿alguien sabe porque sucede esto?

Disculparme por escribir tantos mensajes:oops:

Muchas gracias.
 
#4
ok,

la funcion time regresa los segundos desde la medianoche las varibles
tiene que ser de tipo long, ademas a la hora de buscar el maximo y el minimo
tenias la instrucion al reves

tiempo =tmax;

es
tmax = tiempo;





int main (void)
{
int i;
int fallo=0;
int aleatorio;
long media=0;
long tmax=0;
long tmin=0;
long antes;
long despues;
long tiempo [10];
char posible_caracter [5]="abcd";
char letra_pulsada [10];


printf ("Veamos sus reflejos\n");

for (i=0; i<10; i++)
{
srand (time (NULL));
aleatorio=rand()%4;
printf ("\n%i) %c :",i+1, posible_caracter [aleatorio]);
antes=time (NULL);

scanf (" %c",&letra_pulsada );
despues=time(NULL);

if (letra_pulsada !=posible_caracter [aleatorio]) fallo++;
tiempo = despues-antes;
media=media+ tiempo ;

}

tmax = tiempo [0];
tmin = tiempo [0];

for (i=1; i<10; i++)
{
if (tiempo >tmax)tmax = tiempo ;
if (tiempo <tmin)tmin = tiempo ;
}
media=media/10;
printf ("\nEl tiempo medio de respuesta es: %d", media);
printf ("\nEl tiempo maximo es: %d\nEl tiempo minimo: %d", tmax, tmin);
printf ("\nEl numero de fallos es: %d\n", fallo);

system ("pause");


}

a mi me marco error en esta linea

char posible_caracter [4]="abcd";

la tube cambiar por

char posible_caracter [5]="abcd";

:)

No crees tantos temas relacionados con lo mismo por que te censuran.
;)
 
Última edición:
#6
Si algún dia recibo el titulo y me coloco en un puesto de trabajo, te deberé parte de mi sueldo... jeje

Muchas gracias por todo, me has ayudado muchisimo...

Disculparme por abrir varios temas, no lo volvere a hacer.

Un saludo
 
Arriba