[ Foro de C++ ]

introducir una nombre completo

08-May-2011 19:31
oscar gomez
3 Respuestas

Cordial saludo profesor Nacho, gracias por tu amable y preciado tiempo junto con tus excelentes explicaciones y ayudas.

profesor es que este programa que te adjunto me funciona perfectamente, pero lo que quiero en el ahora es asi
como esta, que debo hacer para que la lectura por teclado
no solo me reciba un nombre como mario, sino completo,porejemplo mario perez pardo, eso si nota que necesito que los nombres queden almacenamos en arrays de una dimension por que luego los utilizo para el reporte final, he intentado usar char empleados[50] pero luego no se como leerlo como podria ser o dime cual es la forma correcta mil gracias por tu ayuda:

#include <iostream>
#include <string>
/*se busca obtener en este programa  pedir al usuario el nombre de n empleados, su edad y el sueldo para generar un reporte que lo muestre en pantalla de la siguiente manera:
 el nombre del empleado, edad, sueldo, el empleado con mayor sueldo, el sueldo del empleado que gana más y su edad.
*/    
using namespace std;

int main()
 {
   string empleados[50];
   float sueldos[50];
   int edades[50];
   int indice,n;
   float mayorsueldo=0;
   
   cout<<"ingrese el numero de empleados: ";
   cin>>n;
   cout<<endl;
   for(int i=0;i<n;i++)
    {
      cout<<"Ingrese el nombre del empleado"<<i+1<<": ";
      cin>>empleados[i];
      cout<<"ingrese el sueldo: \t\t"<<" ";
      cin>>sueldos[i];
      cout<<"Ingrese la edad del empleado: "<<"\t ";
      cin>>edades[i];
      cout<<"\n";
      system("cls");
      if(mayorsueldo<sueldos[i])
       {
         mayorsueldo=sueldos[i];
         indice=i;
         }
     
     }                            
     //muestra  datos de empleados
     cout<<"\n\t\t\t          EMPLEADOS       \n";
     cout<<"=============================================================================="<<"\n\n";
     cout<<"_______________________________________________________________________________"<<"\n";
     for(int i=0;i<n;i++)
     {
       cout<<"empleado"<<i+1<<": "<<"\t\t"<<empleados[i]<<endl;
       cout<<"sueldo: "<<"\t\t"<<sueldos[i]<<endl;
       cout<<"edad del empleado: "<<"\t"<<edades[i]<<endl;
       cout<<"_______________________________________________________________________________"<<"\n";
      }        
      cout<<"\n\n";

      cout<<"\n************** EMPLEADO CON MEJOR SUELDO *************     "<<"\n\n\n";
      cout<<"empleado"<<indice+1<<": \t\t"<<empleados[indice]<<endl;
      cout<<"sueldo: \t\t"<<sueldos[indice]<<endl;
      cout<<"edad del empleado: \t"<<edades[indice]<<endl;
      system("pause");
}    




08-May-2011 21:36
oscar gomez


hola profesor nacho.

mira y si lo intento hacer asi con cin.getline y definiendo empleados como un arrays de char( char empleados[30] ), me sale el siguiente error en ejecucion:

function `int main()':
invalid conversion from `char' to `char*'
initializing argument 1 of `std::basic_istream<_CharT, _Traits>& std::basic_istream<_CharT, _Traits>::getline(_CharT*, std::streamsize) [with _CharT = char, _Traits = std::char_traits<char>]'


#include <iostream>
#include <string>
#include <stdio.h>

int main()
 {
   char empleados[30];
   float sueldos[50];
   int edades[50];
   int indice,n;
   float mayorsueldo=0;
   
   cout<<"ingrese el numero de empleados: ";
   cin>>n;
   cout<<endl;
   for(int i=0;i<n;i++)
    {
      cout<<"Ingrese el nombre del empleado"<<i+1<<": ";
      cin.getline(empleados[i],30);
      cin.ignore();
      cout<<"ingrese el sueldo: \t\t"<<" ";
      cin>>sueldos[i];
      cout<<"Ingrese la edad del empleado: "<<"\t ";
      cin>>edades[i];
      cout<<"\n";
      system("cls");
      if(mayorsueldo<sueldos[i])........
       ....


#include <stdio.h> // creo que esta cabecera sobra,pero el mensaje de error en compilacion es el mismo que te indique al inicio.

pido tu ayuda ,quiza sea muy simple pero tu ayuda es muy valiosa.gracias


09-May-2011 01:23
Nacho Cabanes (+83)

O usas C, o usas C++

Si usas C, incluyes <stdio.h> y defines tus cadenas como char[].

Si usas C++, no incluyes <stdio.h>, no defines tus cadenas como char[] sino como string, y lees de texto con getline(cin, cadena) o con cin.getline.


09-May-2011 11:32
oscar gomez

Mil gracias profesor Nacho por tu ayuda , lo he solucionado tal como me lo explicaste,disculpanos si a veces no lo vemos tan claro,y quiza detalles pero es lo que nos ayuda a crecer y aprender y gracias a ti nos damos cuenta de loque no vemos mil gracias.






(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.)