Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Urgente ejercicio c++

Estas en el tema de Urgente ejercicio c++ en el foro de C/C++ en Foros del Web. hola a todo el mundo tengo un ejercicio que hacer y no sé como empezar aver si alguien puede ayudarme a resolverlo ,aqui os dejo ...
  #1 (permalink)  
Antiguo 10/03/2010, 07:39
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 1 mes
Puntos: 0
De acuerdo Urgente ejercicio c++

hola a todo el mundo tengo un ejercicio que hacer y no sé como empezar aver si alguien puede ayudarme a resolverlo ,aqui os dejo el ejercicio :


se pretende implementar una agenda en c++ para gestionar la informacion del personal de una empresa,cada persona se desea almacenar lo siguiente:

nombre,apellidos,dni
y puestos(director ,encargado,cajero)
el numero maximo de los empleados sera 100

bueno se trata de un menu que me muestra:
1-ingresar empleados
2-buscar por dni
3-mostrar todos los datos de la agenda
4-eliminar persona por dni
5- dado un puesto devuelva el numero de empleados que hay en este puesto

OS LO AGRADEZCO
  #2 (permalink)  
Antiguo 10/03/2010, 10:16
Avatar de Payaso73  
Fecha de Ingreso: abril-2009
Ubicación: Argentina
Mensajes: 309
Antigüedad: 15 años
Puntos: 20
Respuesta: Urgente ejercicio c++

Para empezar tendrías que hacer un struct con los datos de cada empleado (nombre, apellidos, dni y puestos), y con un arreglo del tipo struct (de tamaño 100, ya que el máximo es 100) vas recorriendo los diferentes empleados... después haces el menú y con el arreglo vas accediendo a los diferentes datos de los diferentes empleados...

Cuando tengas algún código hecho pegalo acá que seguro alguien te va a ayudar...
Saludos
  #3 (permalink)  
Antiguo 10/03/2010, 13:55
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Urgente ejercicio c++

lo que he hecho yo es este codigode abajo pero en meter() me coje solo uno y me lo muestra con mostrar() pero el problema me muestra solo el ultimo que he registrado
aqui os dejo el codigo se alguien me puede ayudar saludo

// Incluir E/S y Librerías Standard
#include <iostream>
#include <cstdlib>
#define MAX 99
using namespace std;

// Zona de Declaración de Constantes

// Zona de Declaración de Tipos

// Zona de Cabeceras de Procedimientos y Funciones
struct Persona
{
char apellidos[25];
char nombre[10];
char dni[];
char edad[];

}Agenda[MAX];

char Menu();
bool ConfirmarSalir();
void Meter(void);
void Mostrar(void);
// Programa Principal
int main()
{
// Zona de Declaración de Variables del Programa principal
char op;
bool salir;


salir = false;

while (!salir)
{
op = Menu();
switch(op)
{
case 'A': Meter();
break;
case 'B': Mostrar();
break;
case 'C':
break;
case 'D':
break;
case 'E':
break;
case 'F': salir=ConfirmarSalir();
break;
default: cout << "Opción Incorrecta ... " << endl;
break;
}
system("Pause"); // Hacer una pausa
system("CLS"); // Borrar la Pantalla
}

return 0; // Valor de retorno al S.O.
}

// Implementación de Procedimientos y Funciones
char Menu()
{
char op;

cout << " MENU" << endl;
cout << " ====" << endl;
cout << "Elaborado Por : Jad Joubair" << endl;
cout << "E.T.S.I Informatica 1ºX Gestión/Sistemas" << endl;
cout << "Fecha: 03 de marzo de 2010" << endl;
cout << endl;
cout << "A. Meter persona" << endl;
cout << "B. Sacar persona" << endl;
cout << "C. Mostrar agenda" << endl;
cout << "D. Buscar persona" << endl;
cout << "E. Cuenta de puestos" << endl;
cout << "F. Salir" << endl;
cout << endl;
cout << "Introduzca Opción: ";

cin >> op;
cin.ignore(); // Ignoro el ENTER
op = toupper(op);

return op;
}

bool ConfirmarSalir()
{
char si_no;

cout << "¿Está Seguro/a (S/N)?" << endl;
cin >> si_no;
cin.ignore(); // Ignoro el ENTER
si_no = toupper(si_no);

return (si_no=='S');

}
void Meter(void)
{

for(int i=MAX;i<=MAX;++i)
{
cout<<"Apellidos: "<<endl;
gets(Agenda[i].apellidos);

cout<<"Nombre: "<<endl;
gets(Agenda[i].nombre);

cout<<"Dni: "<<endl;
gets(Agenda[i].dni);

cout<<"Edad: "<<endl;
gets(Agenda[i].edad);
}

}
void Mostrar(void)
{
for(int i=MAX;i<=MAX;++i)
{
cout<<("Apellidos: ",Agenda[i].apellidos);
cout<<endl;

cout<<("Nombre: ",Agenda[i].nombre);
cout<<endl;

cout<<("Dni: ",Agenda[i].dni);
cout<<endl;

cout<<("Edad: ",Agenda[i].edad);
cout<<endl;
}
}
  #4 (permalink)  
Antiguo 10/03/2010, 15:59
Avatar de Payaso73  
Fecha de Ingreso: abril-2009
Ubicación: Argentina
Mensajes: 309
Antigüedad: 15 años
Puntos: 20
Respuesta: Urgente ejercicio c++

Fijate que en Meter y Mostrar inicializaste i=MAX (osea igual 99) y después pones i<=MAX;++i;

for(int i=MAX;i<=MAX;++i)

i tendría que ser igual a 0 (cero)

Saludos
  #5 (permalink)  
Antiguo 11/03/2010, 07:32
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Urgente ejercicio c++

Siiiiiii lo he arreglado ,pero el proplema es que no veas introduciendo 100 empleado
lo que quiero es meter una quantidad de empleados por ejemplo 5 de 100 y luego pasar al menu cuando termino de meterles se puede hacer ??

GRACIAS POR LA AYUDA !!!!
  #6 (permalink)  
Antiguo 11/03/2010, 08:38
Avatar de Payaso73  
Fecha de Ingreso: abril-2009
Ubicación: Argentina
Mensajes: 309
Antigüedad: 15 años
Puntos: 20
Respuesta: Urgente ejercicio c++

Si se puede... por ejemplo podrías poner un while en la función Meter(), y cuando el usuario quiera dejar de meter datos que ingrese -1 por ejemplo... entonces sale del while y afuera del while (todavía adentro de la función Meter()) llamas a la función Menu(). Tendrias que acomodarlo de alguna forma para que puedas usar las variables que tenes para que corte el ciclo del while, nose si se entiende.


Saludos
  #7 (permalink)  
Antiguo 11/03/2010, 09:18
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Urgente ejercicio c++

Si entiendo lo que quieres decir pero podrias ilustrarlo en un ejemplo porque no llego a hacerlo ???
lo que quiero hacer yo es implementar una pregunta que te dice quieres ingresar mas empleados como viene en meter()

void Meter(void)
{
for( inti=0;i<=MAX;++i)
{
cout<<"Apellidos: "<<endl;
gets(Agenda[i].apellidos);

cout<<"Nombre: "<<endl;
gets(Agenda[i].nombre);

cout<<"Dni: "<<endl;
gets(Agenda[i].dni);

cout<<"Edad: "<<endl;
gets(Agenda[i].edad);
cout<<endl;

cout<<"¿quieres ingresar otro empleado (S/N)?";
}



gracias por la ayuda
  #8 (permalink)  
Antiguo 11/03/2010, 09:35
Avatar de Payaso73  
Fecha de Ingreso: abril-2009
Ubicación: Argentina
Mensajes: 309
Antigüedad: 15 años
Puntos: 20
Respuesta: Urgente ejercicio c++

Bueno, de esta forma capaz sea algo molesto para el usuario que tenga que ingresar 1000 empleados por ejemplo, porque tiene que poner 1000 'S'

Pero anda, y eso es lo que sirve... despues se ve la forma de mejorarlo...

lo que yo te decia es que pongas algo asi:

Código C++:
Ver original
  1. void Meter(void)
  2. {
  3.  
  4.         char op='S'; //declaro op y la inicializo con 'S' para que entre al while()
  5.         int i=0; //declaro i para usarlo de subindice
  6.  
  7.         while((op=='S') && (i<=MAX)) //mientras op sea igual a 'S' entre al ciclo
  8.         {
  9.         //con el while no hace falta poner el for() (en este ejemplo)
  10.                  cout<<"Apellidos: "<<endl;
  11.                  gets(Agenda[i].apellidos);
  12.  
  13.                  cout<<"Nombre: "<<endl;
  14.                  gets(Agenda[i].nombre);
  15.  
  16.                  cout<<"Dni: "<<endl;
  17.                  gets(Agenda[i].dni);
  18.  
  19.                  cout<<"Edad: "<<endl;
  20.                  gets(Agenda[i].edad);
  21.                  cout<<endl;
  22.  
  23.                  i++; //le sumo uno a i, ya que no tengo el for()
  24.  
  25.                  cout<<"¿quieres ingresar otro empleado (S/N)?";
  26.                  cin>>op; //si responde 'S' entra al while y pide nuevos datos
  27.  
  28.          }
  29.  
  30.           if(op=='N') //si responde 'N' sale del while y entra al if y llama a la funcion Menu()
  31.              Menu();
  32.  
  33. }

Algo asi quedaría... fijate si anda.
Saludos
  #9 (permalink)  
Antiguo 11/03/2010, 09:49
Avatar de Payaso73  
Fecha de Ingreso: abril-2009
Ubicación: Argentina
Mensajes: 309
Antigüedad: 15 años
Puntos: 20
Respuesta: Urgente ejercicio c++

otra que podrias hacer es poner un break;

Código C++:
Ver original
  1. void Meter(void)
  2. {
  3.  
  4. char op; //declaro variable
  5.  
  6. for( inti=0;i<=MAX;++i)
  7. {
  8. cout<<"Apellidos: "<<endl;
  9. gets(Agenda[i].apellidos);
  10.  
  11. cout<<"Nombre: "<<endl;
  12. gets(Agenda[i].nombre);
  13.  
  14. cout<<"Dni: "<<endl;
  15. gets(Agenda[i].dni);
  16.  
  17. cout<<"Edad: "<<endl;
  18. gets(Agenda[i].edad);
  19. cout<<endl;
  20.  
  21. cout<<"¿quieres ingresar otro empleado (S/N)?";
  22. cin>>op;
  23.  
  24. if(op=='N') // si es igual a 'N' entra al if y sale con el break;
  25. break; // si en lugar del break; pones un exit(1); sale del for y de la funcion meter()
  26. }
  27.  
  28. Menu(); // y afuera llama automaticamente a Menu
  29. }



Salute
  #10 (permalink)  
Antiguo 11/03/2010, 12:15
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Urgente ejercicio c++

El ejemplo esta muy muy claro he probado el primero con el while y el segundo tambien pero en ambos me sale un error que dice

C:document en setting \....\.... i function 'void meter()';

C:document en setting \....\.... stray '\160' in program
C:document en setting \....\.... stray '\160' in program
C:document en setting \....\.... stray '\160' in program
C:document en setting \....\.... stray '\160' in program
C:document en setting \....\.... stray '\160' in program
C:document en setting \....\.... stray '\160' in program
C:document en setting \....\.... stray '\160' in program
  #11 (permalink)  
Antiguo 11/03/2010, 14:10
 
Fecha de Ingreso: marzo-2010
Mensajes: 14
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Urgente ejercicio c++

Aqui te dejo el codigo para verlo creo que es un error de conversion



// Incluir E/S y Librerías Standard
#include <iostream>
#include <cstdlib>
#define MAX 99
using namespace std;

// Zona de Declaración de Constantes

// Zona de Declaración de Tipos

// Zona de Cabeceras de Procedimientos y Funciones
struct Persona
{
char apellidos[25];
char nombre[10];
char dni[9];
char edad[2];

}Agenda[MAX];

char Menu();
bool ConfirmarSalir();
void Meter(void);
void Mostrar(void);
// Programa Principal
int main()
{
// Zona de Declaración de Variables del Programa principal
char op;
bool salir;


salir = false;

while (!salir)
{
op = Menu();
switch(op)
{
case 'A': Meter();
break;
case 'B': Mostrar();
break;
case 'C':
break;
case 'D':
break;
case 'E':
break;
case 'F': salir=ConfirmarSalir();
break;
default: cout << "Opción Incorrecta ... " << endl;
break;
}
system("Pause"); // Hacer una pausa
system("CLS"); // Borrar la Pantalla
}

return 0; // Valor de retorno al S.O.
}

// Implementación de Procedimientos y Funciones
char Menu()
{
char op;

cout << " MENU" << endl;
cout << " ====" << endl;
cout << "Elaborado Por : Jad Joubair" << endl;
cout << "E.T.S.I Informatica 1ºX Gestión/Sistemas" << endl;
cout << "Fecha: 03 de marzo de 2010" << endl;
cout << endl;
cout << "A. Meter persona" << endl;
cout << "B. Sacar persona" << endl;
cout << "C. Mostrar agenda" << endl;
cout << "D. Buscar persona" << endl;
cout << "E. Cuenta de puestos" << endl;
cout << "F. Salir" << endl;
cout << endl;
cout << "Introduzca Opción: ";

cin >> op;
cin.ignore(); // Ignoro el ENTER
op = toupper(op);

return op;
}

bool ConfirmarSalir()
{
char si_no;

cout << "¿Está Seguro/a (S/N)?" << endl;
cin >> si_no;
cin.ignore(); // Ignoro el ENTER
si_no = toupper(si_no);

return (si_no=='S');

}

void Meter(void)
{
*

char op; //declaro variable
*
for( int i=0;i<=MAX;++i)
{
cout<<"Apellidos: "<<endl;
gets(Agenda[i].apellidos);
*
cout<<"Nombre: "<<endl;
gets(Agenda[i].nombre);
*
cout<<"Dni: "<<endl;
gets(Agenda[i].dni);
*
cout<<"Edad: "<<endl;
gets(Agenda[i].edad);
cout<<endl;
*
cout<<"¿quieres ingresar otro empleado (S/N)?";
cin>>op;
*
if(op=='N') // si es igual a 'N' entra al if y sale con el break;
break; // si en lugar del break; pones un exit(1); sale del for y de la funcion meter()
}
*
Menu(); // y afuera llama automaticamente a Menu
}


void Mostrar(void)
{

for( int i=0;i<=MAX;++i)
{

cout<<"------ datos del empleado ------"<<endl;
cout<<("Apellidos: ",Agenda[i].apellidos);
cout<<endl;

cout<<("Nombre: ",Agenda[i].nombre);
cout<<endl;

cout<<("Dni: ",Agenda[i].dni);
cout<<endl;

cout<<("Edad: ",Agenda[i].edad)<<endl;
cout<<"--------------------------------"<<endl;
}
}


muchas Gracias
  #12 (permalink)  
Antiguo 11/03/2010, 16:01
 
Fecha de Ingreso: marzo-2010
Mensajes: 1
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Urgente ejercicio c++

HOLA QUE TAL ALGUIEN QUE ME PUEDA AYUDARA A HACER un programa que permita reconocer números decimales.


Y OTRO QUE REALICE LO SIGUIENTE:Construir un analizador léxico que acepte palabras reservadas, números decimales, operadores aritméticos y relacionales, paréntesis , corchetes y además debe eliminar espacios en blanco y comentarios , así como almacenar en una tabla de símbolos los identificadores y los números decimales. Para el lenguaje C

Se debe de mostrar el diagrama de transición de estados que soporta el reconocimiento de patrones del analizador léxico.

O DE PERDIDO QUE ME DIGAN COMO HACERLO QUE ME DIGAN COMO VA LA ESTRUCTURA POR VA SE LOS AGRADECERE MUCHO

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:21.