Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/08/2008, 11:52
rubbieta
 
Fecha de Ingreso: agosto-2008
Mensajes: 28
Antigüedad: 16 años, 4 meses
Puntos: 0
Pregunta donde tengo el error??

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;
}