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

Listas, Nesesito Ayuda Con Este Codigo

Estas en el tema de Listas, Nesesito Ayuda Con Este Codigo en el foro de C/C++ en Foros del Web. HOLA, NECESITO AYUDA CON ESTE CODIGO ESTE ES EL PROGRAMA: HACER 1 PROG. QUE IMPLEMENTE UNA LISTA LIGADA MEDIANTE EL SIGUIENTE MENU: 1.-AGREGAR DATOS DE ...
  #1 (permalink)  
Antiguo 24/07/2007, 23:06
 
Fecha de Ingreso: abril-2007
Mensajes: 16
Antigüedad: 17 años
Puntos: 1
Pregunta Listas, Nesesito Ayuda Con Este Codigo

HOLA, NECESITO AYUDA CON ESTE CODIGO ESTE ES EL PROGRAMA:

HACER 1 PROG. QUE IMPLEMENTE UNA LISTA LIGADA MEDIANTE EL SIGUIENTE MENU:

1.-AGREGAR DATOS DE LA CIRUGÍA
2.-ELIMINAR DATOS DE LA CIRUGÍA
3.-MOSTRAR DATOS DE CIRUGÍAS
4.-SALIR DEL PROGRAMA

DATOS DE LA CIRUGÍA:
-NOMBRE NEDICO
-ESPECIALIDAD
-CLAVE_SALA
-FECHA
-HORA
-NOMBRE_PX

LA LISTA ESTARA ORDENADA POR NOMBRE DEL MEDICO, POR TANTO, PARA ELIMINAR (TERMINADA LA CIRUGÍA)
LOS DATOS DE LA CIRUGÍA SE SOLICITARÁ EL NOMBRE DEL MÉDICO(QUEDA EL MÉDICO DISPONIBLE PARA OTRA CIRUGÍA)


AKI DEJO LO QUE LLEVO, PERO ME SALEN ERRORES COMO:
ELSE DESPLASADO, UNDEFINIDA STCPY, NOT CONVER INT * A CHAR *,DESPLAZADO EL BREAK, Y EN LOS PARAMETROS DE AGREGAR_DATOS


AKI PONGO EL CODIGO QUE YA TENGO:

Código:
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
#include<string.h>

struct hospital

{

char nombre_medico[30];
char especialidad[30];
int clave_sala;
int fecha;
int hora;
hospital *sig;
char nombre_paciente[30];

};

hospital *list=NULL;
hospital *ptrant;
hospital *ptrnuevo;

void agregar_datos(char *ptrvalor, char ptrval, int *ptrsala, int *ptrfecha, int *ptrhora,  char *ptrnombre_paciente)

{

hospital *ptrnuevo=new hospital;

stcpy(ptrnuevo->nombre_medico,ptrvalor);
stcpy(ptrnuevo->especialidad,ptrval);
stcpy(ptrnuevo->clave_sala,ptrsala);
stcpy(ptrnuevo->fecha,ptrfecha);
stcpy(ptrnuevo->hora,ptrhora);
stcpy(ptrnuevo->nombre_paciente,ptrnombre_paciente);

ptrnuevo->sig=NULL;

if(list==NULL)
list=ptrnuevo;

else

if(strcmp ptrvalor,list->info)<=0;

{

ptrnuevo->sig=list;
list=ptrnuevo;

}

else

{

hospital *ptraux=list;

while(strcmp ptraux->info,*ptrvalor)<0;

{

ptrant=ptraux;
ptraux=ptraux->sig;

if(ptraux==NULL)

break;

}

ptrant->sig=ptrnuevo;
ptrnuevo->sig=ptraux;

}
}


void mostrar_datos()

{

hospital *ptraux=ptrnuevo;

while(ptraux!=NULL)

{

cout<<ptraux->nombre_medico;
cout<<ptraux->especialidad;
cout<<ptraux->clave_sala;
cout<<ptraux->fecha;
cout<<ptraux->hora;
cout<<ptraux->nombre_paciente;
ptraux=ptraux->sig;

}

}

void main ()

{

clrscr();

int val,opcion;

do

{
cout<<"\nMENU\n";
cout<<"1.-AGREGAR DATOS DE LA CIRUGIA\n";
cout<<"2.-MOSTRAR DATOS DE LA CIRUGIA\n";
cout<<"3.-SALIR DEL PROGRAMA\n";
cin>>opcion;

switch (opcion)

{

case 1:

cout<<"Introduce el nombre del medico\n";
cin>>val;

cout<<"Introduce la especialidad\n";
cin>>val;

cout<<"Introduce la clave de la sala\n";
cin>>val;

cout<<"Introduce la fecha\n";
cin>>val;

cout<<"Introduce la hora\n";
cin>>val;

cout<<"Introduce el nombre del paciente\n";
cin>>val;

agregar_datos(&val);


break;

case 2:

mostrar_datos();

break;

case 3:

cout<<"Salir del programa!\n";
cout<<"Presione una tecla para salir!\n";

break;

}}while(opcion!=3);

}

ESPERO QUE ME PUEDAN AYUDAR! MUCHAS GRACIAS!
  #2 (permalink)  
Antiguo 25/07/2007, 10:04
Avatar de Nigthmare  
Fecha de Ingreso: diciembre-2006
Ubicación: /home/vsanchez
Mensajes: 38
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Listas, Nesesito Ayuda Con Este Codigo

Ten cuidado con los tipos de datos que estas manejando, tienes algunos int, por ejemplo ptrsala lo tienes como char*, cuando deberia ser int, igual pasa con la fecha y hora, y estas tratando de copiar una cadena, por otra parte la funcion stcpy no existe, es strcpy(char *dest, char *fuente);

Tambien tienes, en la linea 44:
if( strcmp ptrvalor,list->info )<=0 ;

cuando deberia ser
if(strcmp(ptrvalor,list->info)<=0)

e info no forma parte de tu estrcutura hospital

En la linea 57, igualmente el problema con el strcmp, pero ahora es en un while, tienes un ; de mas.

PD: a agregar_datos solo le estas mandando un valor de parametro, cuando la funcion tiene 6 parametros

Eso fue lo que le vi...=P
  #3 (permalink)  
Antiguo 29/07/2007, 11:00
 
Fecha de Ingreso: abril-2007
Mensajes: 16
Antigüedad: 17 años
Puntos: 1
Re: Listas, Nesesito Ayuda Con Este Codigo

hola, muchas gracias, ya lo corregi!

pero ahora tengo otra duda, cuando selecciono en el menu la opcion 2(mostrar datos), me sale no hay elementos, siendo que anteriormente puse opcion 1 y agregue elementos no se a que se deba, alguien sabe??

aki dejo el codigo:

Código:

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

struct hospital 

{ 

char nombre_medico[30]; 
char especialidad[30]; 
int clave_sala; 
int fecha; 
int hora; 
hospital *sig; 
char nombre_paciente[30]; 

}; 

hospital *list=NULL; 
hospital *ptrant; 
hospital *ptrnuevo; 

void agregar_datos(char *ptrvalor, char *ptrval, int *ptrsala, int *ptrfecha, int *ptrhora,  char *ptrnombre_paciente) 

{ 

hospital *ptrnuevo=new hospital; 

strcpy(ptrnuevo->nombre_medico,ptrvalor); 
strcpy(ptrnuevo->especialidad,ptrval); 
ptrnuevo->clave_sala=*ptrsala; 
ptrnuevo->fecha=*ptrfecha; 
ptrnuevo->hora=*ptrhora; 
strcpy(ptrnuevo->nombre_paciente,ptrnombre_paciente); 

ptrnuevo->sig=NULL; 

if(list==NULL) 
list=ptrnuevo; 

else 

if(strcmp (ptrvalor,list->nombre_medico)<=0) 

{ 

ptrnuevo->sig=list; 
list=ptrnuevo; 

} 

else 

{ 

hospital *ptraux=list; 

while(strcmp (ptraux->nombre_medico,ptrvalor)<0) 

{ 

ptrant=ptraux; 
ptraux=ptraux->sig; 

if(ptraux==NULL) 

break; 

} 

ptrant->sig=ptrnuevo; 
ptrnuevo->sig=ptraux; 

} 
} 


void mostrar_datos() 

{ 

hospital *ptraux=ptrnuevo; 

if(ptraux==NULL) 
cout<<"\nNo hay elementos\n"; 

else 

while(ptraux!=NULL) 

{ 

cout<<ptraux->nombre_medico; 
cout<<ptraux->especialidad; 
cout<<ptraux->clave_sala; 
cout<<ptraux->fecha; 
cout<<ptraux->hora; 
cout<<ptraux->nombre_paciente; 
ptraux=ptraux->sig; 

} 

} 

void main () 

{ 

clrscr(); 

char nombre_medico[30],especialidad[30],nombre_paciente[30]; 
int opcion,clave_sala,fecha,hora; 

do 

{ 
cout<<"\nMENU\n"; 
cout<<"1.-AGREGAR DATOS DE LA CIRUGIA\n"; 
cout<<"2.-MOSTRAR DATOS DE LA CIRUGIA\n"; 
cout<<"3.-SALIR DEL PROGRAMA\n"; 
cout<<"4.-QUE OPCIÒN DESEAS??\n"; 
cin>>opcion; 

switch (opcion) 

{ 

case 1: 

cout<<"\nIntroduce el nombre del medico:"; 
scanf("%s",&nombre_medico); 
cout<<endl; 
cout<<"\nIntroduce la especialidad:"; 
cscanf("%s",&especialidad); 
cout<<endl; 
cout<<"\nIntroduce la clave de la sala:"; 
cin>>clave_sala; 
cout<<endl; 
cout<<"\nIntroduce la fecha:"; 
cin>>fecha; 
cout<<endl; 
cout<<"\nIntroduce la hora:"; 
cin>>hora; 
cout<<"\nIntroduce el nombre del paciente:"; 
scanf("%s",&nombre_paciente); 

agregar_datos(&nombre_medico[30],&especialidad[30],&clave_sala, &fecha,&hora,&nombre_paciente[30]); 

break; 

case 2: 

mostrar_datos(); 

break; 

case 3: 

cout<<"Salir del programa!\n"; 
cout<<"Presione una tecla para salir!\n"; 

break; 

}}while(opcion!=3); 

}
  #4 (permalink)  
Antiguo 02/08/2007, 19:40
Avatar de Nigthmare  
Fecha de Ingreso: diciembre-2006
Ubicación: /home/vsanchez
Mensajes: 38
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Listas, Nesesito Ayuda Con Este Codigo

Mira observe un error en al momento de estar moviendo los punteros cuando agregas un registro, ya sea el primero o no.

Mira este ejemplo:

struct example{
int valor;
example *sig;
}*New,*First=NULL,*Last=NULL;

void agregar(){
New=new example;
cin>>New->valor;
if(First==NULL&&Last==NULL)
First=Last=New;
else
{
Last->sig=New;
Last=New;
}
}

void mostrar()
{
example Current=First;
if(!First)
cout<<"Lista Vacia";
else
{
do{
cout<<Current->valor;
Current=Current->sig;
}while(Current!=Last);
}
}

Espero te sirva este ejemplo, alguna duda sigue posteando en este foro
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 05:09.