Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Programa busca segundo mayor c++

Estas en el tema de Programa busca segundo mayor c++ en el foro de C/C++ en Foros del Web. Hola, me gustaria que me digan cual es el error de este programa que busca los dos mejores resultados... el profesor nos explico otra forma ...
  #1 (permalink)  
Antiguo 19/06/2009, 10:19
Avatar de Payaso73  
Fecha de Ingreso: abril-2009
Ubicación: Argentina
Mensajes: 309
Antigüedad: 15 años
Puntos: 20
Programa busca segundo mayor c++

Hola, me gustaria que me digan cual es el error de este programa que busca los dos mejores resultados... el profesor nos explico otra forma con variables auxiliares, pero yo lo habia hecho asi al principio y "de vista" me gustaba, compila sin error, pero cuando lo ejecuto no anda... yo se que hay una forma mejor de buscar el primero y segundo mejor, pero me gustaria saber en donde esta mi error

Código:
int main(int argc, char *argv[]) {
	
	int puntaje[5];
	int ganador;
	int sub;
	
	for(int i=0; i<5; i++)
	{
		cout<<"ingrese el puntaje: ";
		cin>>puntaje[i];
	}
	
	for(int i=0; i<4; i++)
	{
		if(puntaje[i]>puntaje[i+1])
			ganador=i;
	}
	for(int i=0; i<4; i++)
	{
		if(puntaje[i]>puntaje[i+1])
		{
			if(i!=ganador)
				sub=i;
		}
	}
	
	cout<<"el ganador es el participante "<<ganador+1<<" con "<<puntaje[ganador]<<" puntos";
	cout<<endl<<"el segundo es el participante "<<sub+1<<" con "<<puntaje[sub]<<" puntos";
	
	return 0;
}
Gracias por el tiempo, saludos
  #2 (permalink)  
Antiguo 19/06/2009, 10:45
 
Fecha de Ingreso: junio-2009
Mensajes: 8
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Programa busca segundo mayor c++

Con mejor puntaje te referís a mayor puntaje?
  #3 (permalink)  
Antiguo 19/06/2009, 10:55
 
Fecha de Ingreso: junio-2009
Mensajes: 8
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Programa busca segundo mayor c++

Te marco algunos errores :

*Estás definiendo la variable "i" tres veces (una en cada for). Defini una al principio de main.
*Al no poner ningúna pausa, el programa se va a ejecutar tan rapido que ni lo vas a ver se cierra enseguida. Poné :
system("pause");
ó
system("pause > nul");

Igual ahora en un ratito trato de arreglarlo
  #4 (permalink)  
Antiguo 19/06/2009, 11:01
 
Fecha de Ingreso: diciembre-2008
Ubicación: Vigo, Spain
Mensajes: 141
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Programa busca segundo mayor c++

Para estas cosas tienes que usar auxiliares en mi opinión.

Código:
for(int i=0; i<4; i++)
	{
		if(puntaje[i]>puntaje[i+1])
			ganador=i;
	}
Aquí nunca registrarás el 4to número del array como ganador, aparte de que, pongo un ejemplo:

Numeros: 4 3 5 2 9
FOR 1: 4 > 3? ganador=0(4);
FOR 2: 3 > 5? ganador=0(4);
FOR 3: 5 > 2? ganador=3(5);
FOR 4: 2 > 9? ganador=3(5);

En todo caso tendría que ser algo asi:

Código:
    numero=0;
                numero2=0;
                for(int i=0; i<5; i++)
	{
	       if(numero<puntaje[i])
                       {
                             if(numero2<numero)
                             {
                                  sub=ganador;
                                  numero2=numero;
                              }
                               numero=puntaje[i];
                               ganador=i;
                        }
                        else
                         {
                                if(numero2<puntaje[i])
                                {
                                      sub=i;
                                      numero2=puntaje[i];
                                 }
                          }
	}
  #5 (permalink)  
Antiguo 19/06/2009, 11:48
Avatar de Payaso73  
Fecha de Ingreso: abril-2009
Ubicación: Argentina
Mensajes: 309
Antigüedad: 15 años
Puntos: 20
Respuesta: Programa busca segundo mayor c++

Gracias ahrion ya solucione la declaración del i y en cuanto a la pausa no me hace falta porque lo veo igual... si con mejor puntaje me refiero al mayor.

Si Annoying, ahí tenes razon, se me habia pasado eso

Cita:
Aquí nunca registrarás el 4to número del array como ganador, aparte de que, pongo un ejemplo:

Numeros: 4 3 5 2 9
FOR 1: 4 > 3? ganador=0(4);
FOR 2: 3 > 5? ganador=0(4);
FOR 3: 5 > 2? ganador=3(5);
FOR 4: 2 > 9? ganador=3(5);
y tambien podría comparar el "ganador" además de los dos puntajes... algo asi:

Código:
for(i=0; i<4; i++)
	{
		if((puntaje[i]>puntaje[i+1])&&(puntaje[i]>puntaje[ganador]))
			ganador=i;
	}
¿no?

Aclaro que sé que se puede hacer mejor con varias variables auxiliares... pero queria encontrar mi error.

Gracias a los dos.
Saludos
  #6 (permalink)  
Antiguo 19/06/2009, 14:57
 
Fecha de Ingreso: diciembre-2008
Ubicación: Vigo, Spain
Mensajes: 141
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Programa busca segundo mayor c++

El problema sigue en que el último elemento nunca será el número ganador(mayor) y que al tener un número que sea mayor que el actual ganador, este ganador pasa casi automáticamente a ser el segundo mayor.

Código:
for(i=0; i<4; i++)
	{
		if((puntaje[i]>puntaje[i+1])&&(puntaje[i]>puntaje[ganador]))
			ganador=i;
	}
  #7 (permalink)  
Antiguo 19/06/2009, 16:17
Avatar de Payaso73  
Fecha de Ingreso: abril-2009
Ubicación: Argentina
Mensajes: 309
Antigüedad: 15 años
Puntos: 20
Respuesta: Programa busca segundo mayor c++

Claro... entiendo... voy a seguir buscando otra forma que no sea con variables auxiliares... solo de terco! jaja

Gracias a los dos...
Saludos
  #8 (permalink)  
Antiguo 19/06/2009, 17:24
 
Fecha de Ingreso: diciembre-2008
Ubicación: Vigo, Spain
Mensajes: 141
Antigüedad: 15 años, 5 meses
Puntos: 12
Respuesta: Programa busca segundo mayor c++

Cita:
Iniciado por Payaso73 Ver Mensaje
Claro... entiendo... voy a seguir buscando otra forma que no sea con variables auxiliares... solo de terco! jaja

Gracias a los dos...
Saludos
El persistir es una virtud, suerte :P
  #9 (permalink)  
Antiguo 20/06/2009, 07:27
Avatar de Payaso73  
Fecha de Ingreso: abril-2009
Ubicación: Argentina
Mensajes: 309
Antigüedad: 15 años
Puntos: 20
Respuesta: Programa busca segundo mayor c++

Si encuentro una nueva forma te mando un MP, llamamos a amigos y hacemos una fiesta para festejar jaja (por las dudas ya compre el fernet)

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:09.