[ Foro para dudas y novedades ]

por que no me retorna el resultado

04-May-2011 18:38
oscar gomez
1 Respuestas

cordial saludo profesor Nacho cabanes.
Cordial saludo profesor Nacho y colaboradores.
Estoy realizando un programa de funciones en c++ sin utilizar arrays y bueno no se por que no se me muestran los resultados en el siguiente planteamiento:
La idea es atraves de una funcion leer los datos de tres empleados( codigo de empleado) y un numero escogido por cada uno de ellos al azar.

luego otra funcion debe calcular y devolver el codido del empleado con el numero mayor obtenido por cada uno de ellos.
y otra funcion debe mostrar en pantalla al empleado y el numero mayor obtenido por éste (codigo de empleado y numero mayor con el que gano)

mi codigo es el siguiente:

#include<iostream>
#include <windows.h>
using namespace std;

//ESTA FUNCION FUNCIONA CORRECTAMENTE//
int leer_datos(string codempl1,string codempl2,string    codempl3,int numazar1,int numazar2,int numazar3)
   {
   
     int i=1;      
     system("cls");              
     cout<<"\n\tCodigo del empleado "<<i<<"(ej.S001)"<<":  "; //S001 para denotar el codigo del empleado del departamento de sistemas
     cin>>codempl1;
     cout<<"\n";
     numazar1=1+rand()%100;
     cout<<"El numero escogido al azar por este empleado fue:"<<numazar1<<"\n";
     cout<<"\n";
   
     i++;
     cout<<"\n\tCodigo del empleado "<<i<<"(ej.S001)"<<":  "; //S001 para denotar el codigo del empleado del departamento de sistemas
     cin>>codempl2;
     cout<<"\n";
     numazar2=1+rand()%100;
     cout<<"El numero escogido al azar por este empleado fue:"<<numazar2<<"\n";
     cout<<"\n";
     i++;
     cout<<"\n\tCodigo del empleado "<<i<<"(ej.S001)"<<":  "; //S001 para denotar el codigo del empleado del departamento de sistemas
     cin>>codempl3;
     cout<<"\n";
     numazar3=1+rand()%100;
     cout<<"El numero escogido al azar por este empleado fue:"<<numazar3<<"\n";
     cout<<"\n";
     system("pause");
 
           
}


// EN ESTA FUNCION NO SE POR QUE NO ME RETORNA EL VALOR DE maxim??????

 int numero_mayor(int nazar1,int nazar2,int nazar3)
 {
 int maxim;

 if((nazar1>nazar2)&&(nazar1>nazar3))
   {
   maxim=nazar1;
   return maxim;
   }
   else if((nazar2>nazar1)&&(nazar2>nazar3))
   {
     maxim=nazar2;

     return maxim;
     }
     else
     {
     maxim=nazar3;
     return maxim;
     }
 
 
 }

// EN ESTA FUNCION NO SE POR QUE NO ME MUESTRA mayor Y NO SE COMO PODRIA MOSTRAR EL CODIGO DEL EMPLEADO QUE OBTUVO EL MAYOR DE LOS NUMEROS????
int muestra_datos(int mayor,string cod_empleado1,string cod_empleado2,string cod_empleado3)
{
   cout<<"El numero mayor escogido fue: "<<mayor<<"\n";
 // cout<<" Y correponde al empleado:"
   cout<<"\n";

}              
               



int main()
{
int numaleatorio1,numaleatorio2,numaleatorio3,mayor;
string cod_empleado1,cod_empleado2,cod_empleado3;
srand(time(0));

 cout<<"el departamento de sistemas se acaba de ganar un automovil"<<"\n";
 cout<<"vamos a realizar un concurso entre los mejores empleados de esta area"<<"\n";
 cout<<"ya sabemos que solo quedaron 3 participantes"<<"\n";
 cout<<"pero solo 1 de ellos se adjudicara con el auto"<<"\n\n";
 cout<<"estan listos?"<<"\n\n";
 cout<<"ok, aqui vamos...."<<"\n";
 Sleep(5000);

 leer_datos(cod_empleado1,cod_empleado2,cod_empleado3,numaleatorio1,numaleatorio2,numaleatorio3);
 mayor=numero_mayor(numaleatorio1,numaleatorio2,numaleatorio3);
 muestra_datos(mayor,cod_empleado1,cod_empleado2,cod_empleado3);
 system ("pause");
return 0;
}

POR SU AYUDA MIL GRACIAS


06-May-2011 19:12
Nacho Cabanes (+84)

Es que en ese fuente hay varias cosas que están mal. Por ejemplo:

- Los valores de los números al azar y los de los códigos de los empleados se pierden: los pasas como parámetro, pero no los están por referencia.

- La función "leer_datos" es "int" pero no devuelve ningún valor.

- La función "int numero_mayor" es correcta, sólo que no necesita la variable auxiliar "maxim", puedes devolver el valor correctamente. Pruebala desde un programa más sencillo, con algo como "cout << numero_mayor(1, 3, 2)" y verás que va bien.

- La función "int muestra_datos(int mayor,string cod_empleado1,string cod_empleado2,string cod_empleado3)" no puede mostrar el código de empleado porque no se sabe a quién corresponde ese número. Tendrás que pasar también los valores de cada uno de ellos, además de los códigos (o mostrar datos desde la función "numero_mayor").

- ¿Para qué quieres la variable "i" si todo es tan repetitivo? Usa arrays, o bien escribe simplemente

cout<<"\n\tCodigo del empleado 2 (ej.S001)";






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)