Ayuda programa c++

Iniciado por sec21, 18 Febrero 2014, 19:58 PM

0 Miembros y 1 Visitante están viendo este tema.

sec21

Hola a todos estoy intentando crear un programilla que tras introducir los tiempos que han tardado una serie de personas al llegar a la meta de una carrera, nos indique el nombre de la persona que lha ganado y el tiempo medio (en segundos) de todas.




Tras hacer los cálculos necesarios para obtener los resultados finales, se preguntara si se desea introducir los datos de otra persona (obliga a que tecleen una S o N no importando que sea mayúscula o minúscula)
Si se responde con una S, el programa repetirá de nuevo el proceso. Solo cuando se teclee una N se mostrara una segunda pantalla mostrando el nombre de la persona que ha llegado en menos tiempo y el tiempo medio (en segundos) de todas las personas que han participado





Mi codigo es este : #include <iostream.h>
#include <conio.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>

void main()
{
   int hora, minuto, segundo, total1, total2, total;
   char afir, nombre1[20], nombre2[20],campeon[20];

  total1=0;
  total2=0;

  cout<<"\tIntroduce el nombre de la primera persona\n";
  gets(nombre1);
   cout<<"\tHora(0..23) ...: ";
   cin>>hora;
   cout<<"\tMinutos(0..59).: ";
   cin>>minuto;
   cout<<"\tSegundos(0..59): ";
   cin>>segundo;
   total1=((hora*3600)+(minuto*60)+segundo);

 do{cout<<"¿Otra persona? (S o N)";
    cin>>afir;
   }while (toupper(afir=='S') || toupper(afir=='N'))

 if (afir=='N') then{
  cout<<"\nNombre campeón/a.........: "<<nombre1;
   cout<<"\nSegundos que ha tardado .: "<<total1;
   }

 else{
 
 do{
   cout<<"\tIntroduce el nombre de la persona siguiente\n";
   gets(nombre2);
   cout<<"\tHora(0..23) ...: ";
   cin>>hora;
   cout<<"\tMinutos(0..59).: ";
   cin>>minuto;
   cout<<"\tSegundos(0..59): ";
   cin>>segundo;
   total2=(hora*3600+minuto*60+segundo);

  do{cout<<"¿Otra persona? (S o N)";
    cin>>afir;
   }while (toupper(afir=='S') || toupper(afir=='N'))
     }

  if (total1>total2) then{
        total2=total;
        strcpy(campeon, nombre2);
  }

  else{
      total1=total;
      strcpy(campeon, nombre1);
  }

   }while (afir=='N')

      cout<<"\nNombre campeón/a.........: "<<campeon;
   cout<<"\nSegundos que ha tardado .: "<<total;

}



si alguien puede corregirlo por favor estaría muy agradecido!!!

Gracias

xaps

Primero de todo, cuando quieras mostrar código usa las etiquetas GeSHi para encapsularlo y que sea más fácil leerlo.

Veo varios fallos en tu aplicación:
Código (cpp) [Seleccionar]

do{cout<<"¿Otra persona? (S o N)";
     cin>>afir;
    }while (toupper(afir=='S') || toupper(afir=='N'))

Primero de todo, ¿sabes como funciona toupper()? Le estás pasando un boleano cuando espera un número entero.
Segundo, ese bucle no hace nada. Estaría ejecutándose a si mismo (en el caso de que toupper() estuviera bien empleado) hasta que introdujeras una N.

Replanteate como resolver este problema. Deberías tener un único bucle en el que se pidieran los datos y operara con ellos en cada iteracción.

Saludos.
"The programmers of tomorrow are the wizards of the future" - Gave Newel