Ver Mensaje Individual
  #6 (permalink)  
Antiguo 20/01/2011, 12:05
Avatar de Munire
Munire
 
Fecha de Ingreso: julio-2010
Ubicación: en el ciberdespacio (España)
Mensajes: 150
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Mostrar el mayor de 2 registros

Código:
void exito (produc prod, provee prov, int p_prod, int p_prov)
{
  cout << endl << "Exito: " << endl;
 for (int i=0; i< p_prod-1; i++)
 {
   if (prod[i].sto_ac < prod[i].sto_min)   
     if ((prod[i].sto_ac - prod[i].sto_min) < (prod[i+1].sto_ac - prod[i+1].sto_min))
      cout << prod[i].cod;
 }
}
creo que el error esta aqui:
if ((prod[i].sto_ac - prod[i].sto_min) < (prod[i+1].sto_ac - prod[i+1].sto_min))
cout << prod[i].cod


estas comparando un producto con el siguiente. es decir comparas el primero con el segundo y el que tenga mas diferencia lo imprimes, con lo cual puedes imprimir varias veces los "cod" de los productos.

pero a ti solo te piden un producto el que tenga mas diferencia
Cita:
y se devuelve como resultado el producto cuya diferencia sea máxima.
por lo que tendrias que coger el primer producto (me refiero siempre a la diferencia ya me entiendes) guardarlo en un auxiliar e ir comparando con el siguiente, si es mayor el siguiente, lo guardas en el auxiliar. lo comparas con el tercero, (imaginate que es menor) pues no haces nada, pasas al cuarto.

de manera que al final te quedas con el producto que mayor diferencia tiene, y lo imprimes, el codigo o lo que sea.