hola de nuevos a todos, estoy realizando un programa que me muestre mediante un fichro los trabajadores que hay en la empresa y su saldo, pero cuando compilo y elijo la opcion de mostrar listado me sale solo el nombre de uno de ellos, ¿porque puede ser? aqui dejo mi programa para que le echeis un vistazo muchas gracias.
#include <iostream>
using namespace std;
#include <stdlib.h>
#include <string>
#include <fstream>
struct Valor
{
string nombre;
float sueldo;
};
struct Nodo;
typedef Nodo *Pnodo;
struct Nodo
{
Valor info;
Pnodo sig;
};
typedef Pnodo Lista;
void leer_lista (Lista &);
void Lista_empleados (Lista );
void buscar_SueldoEmpleado(Lista );
void Introducir_empleado (Lista & );
void guardar_informacionempleados (Lista );
void leer_lista (Lista &l)
{
ifstream entrada;
Pnodo nuevo, anterior;
string nombre;
float sueldo;
entrada.open ("trabajadores.txt");
if(!entrada)
cout << "Error al abrir el fichero" << endl;
entrada >> nombre;
entrada >> sueldo;
while (!entrada.eof())
{
entrada >> nombre;
entrada >> sueldo;
}
nuevo=new (Nodo);
(*nuevo).info.nombre=nombre;
(*nuevo).info.sueldo=sueldo;
if (l==NULL)
l=nuevo;
else
{
(*anterior).sig=nuevo;
anterior=nuevo;
}
(*nuevo).sig=NULL;
entrada.close();
return;
}
void Lista_empleados (Lista l)
{
while (l != NULL)
{
cout << "Nombre: " << (*l).info.nombre << endl;
cout << "Sueldo: " << (*l).info.sueldo << endl;
l=(*l).sig;
}
return;
}
void buscar_SueldoEmpleado(Lista l)
{
string nombre;
bool encontrado;
encontrado = false;
Pnodo ant;
cout << "Introduce el nombre del empleado que quieres buscar : "<< endl;
cin >> nombre;
while ((l != NULL )&& (!encontrado))
{
if ((*l).info.nombre == nombre)
{
encontrado = true;
}
else
{
ant =l;
l=(*l).sig;
}
}
if (encontrado == true)
{
cout << "El trabajador se encuentra en la lista" << endl;
cout << "su sueldo es de " << (*l).info.sueldo << " €" << endl;
}
else
cout << "El trabajador no se encuentra en la lista" << endl;
return;
}
void Introducir_empleado (Lista & l)
{
string nombre;
float sueldo;
Pnodo anterior, nuevo;
char c;
do
{
cout << "Introduce el nombre del nuevo empleado: ";
cin >> nombre;
cout << "Introduce su sueldo: ";
cin >> sueldo;
nuevo = new(Nodo);
(*nuevo).info.nombre = nombre;
(*nuevo).info.sueldo = sueldo;
if (l==NULL)
l = nuevo;
else
(*anterior).sig=nuevo;
anterior=nuevo;
(*nuevo).sig=NULL;
cout << "Has acabado? (s/S)" << endl;
cin >> c;
}while ((c != 's') && (c != 'S'));
return;
}
void guardar_informacionempleados (Lista l)
{
ofstream salida;
salida.open ("informacionempleados.txt");
if(!salida)
cout << "error al abrir el fichero" << endl;
while (l != NULL)
{
salida << (*l).info.nombre << endl;
salida << (*l).info.sueldo << endl;
l=(*l).sig;
}
salida.close();
return;
}
int main (void)
{
int x;
Lista l;
l=NULL;
leer_lista(l);
do
{
cout << "Introduce la opcion que deseas realizar: " << endl;
cout << "1-Realizar un listado de los empleados" << endl;
cout << "2-Buscar el sueldo de un empleado " << endl;
cout << "3-Añadir un nuevo empleado" << endl;
cout << "4-Guardar la informacion de los empleados " << endl;
cout << "5-Salir" << endl;
cin >> x;
switch (x)
{
case 1:
Lista_empleados (l);
break;
case 2:
buscar_SueldoEmpleado(l);
break;
case 3:
Introducir_empleado (l);
break;
case 4:
guardar_informacionempleados (l);
break;
default :;
}
}while (x!=5);
system ("pause");
return 0;
}