Dev - C++ - Ayuda listas c++

 
Vista:

Ayuda listas c++

Publicado por Bucle (6 intervenciones) el 07/11/2005 04:48:32
Hola a todos,tengo un problema con el siguiente código de borland c++,he usado listas doblemente enlazadas pero han sido sencillas,ahora me han dejado de proyecto final utilizar listas doblemente enlazadas pero circulares no sencillas y estoy totalmente perdido,tengo que capturar en una estructura el nombre de platillo,numero de porciones,tiempo de preparacion y tiempo de coccion,en otra estructura de otro nodo tengo que guardar los ingredientes,tantos como sean requeridos en cada platillo y es aqui donde me pierdo totalmente,capturo todo lo de la primera estructura pero no se como llamar a los campos de la segunda estructura y lo que es peor como conectar lo que capture en esta segunda estructura con el nodo que le corresponda,no se si me haga entender,aqui pongo el poco código que he podido adaptar,estoy convirtiendo el codigo de un ejemplo de lista sencilla doblemente enlazada,es por eso que aparecen como comentarios tantos modulos ya que apenas estoy empezando con el de insertar,espero me puedan ayudar se los agradecere infinitamente ya que este trabajo lo tengo que entregar el proximo lunes.

Código:

#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<ctype.h>
#include<string.h>
#include<time.h>

#define IR gotoxy

int asc=159;/*Variable Impresión Marco*/
typedef struct NODOS{
char platillo[30];
int porciones;
char tiempop[20];
char tiempoc[20];
NODOS* liga;
NODOS* ligaIzq;
NODOS* ligaDer;
}NODO;
NODO* f;
NODO* p;
NODO* q;
NODO* t;
NODO* x;

typedef struct NODOS2{
char ingredientes[30];
int cantidad;
NODOS2* liga;
NODOS2* ligaizq;
NODOS2* ligader;
}NODO2;
NODO2*a;
NODO2*b;
NODO2*c;
NODO2*d;

int bandera=0;
int ref=0;

void pantalla();/*Pantalla Principal (MARCO)*/
void menu();
void insertaInicioLDEC();
/*void insertaAntesLDEC();
void mostrarI_F();
void mostrarF_I();*/
void salir();

void main(){
pantalla();
menu();
}

//PANTALLA PRINCIPAL(MARCO)
void pantalla(void){
clrscr();
time_t t;
time(&t);
IR(1,1);printf("UABC R E C E T A R I O %s\n", ctime(&t));
/*Despliegue de Líneas Horizontales*/
int a;
for (a=1;a<80;a++){
IR(a,2);printf("%c",asc,asc);
IR(a,23);printf("%c",asc,asc);
IR(a,25);printf("%c",asc,asc);
}
/*Despliegue de Líneas Verticales*/
int b;
for (b=3;b<80;b++){
IR(1,b);printf("%c",asc,asc);
IR(79,b);printf("%c",asc,asc);
}
}
void menu()
{
int op;
IR(4,24);cout<<"<1.Agregar Recetas>";
IR(24,24);cout<<"<2.Eliminar Recetas>";
IR(45,24);cout<<"<3.Consultar Recetas>";
IR(67,24);cout<<"<5.Salir>";
IR(32,21);cout<<"Eliga Opción-> ";
cin>>op;
if (op<1){
IR(27,19);cout<<"ERROR : Opción No Existe !";
IR(21,21);cout<<"Presione Cualquier Tecla Para Regresar";
getch();
clrscr();
pantalla();
menu();
}
if (op==1){
clrscr();
pantalla();
insertaInicioLDEC();
}
if (op==2){
clrscr();
pantalla();
/*insertaAntesLDEC();*/
}
if (op==3){
clrscr();
pantalla();
/*mostrarI_F();*/
}
if (op==4){
clrscr();
pantalla();
/*mostrarF_I();*/
}
if(op==5){
pantalla();
salir();
}
if (op>5){
IR(21,19);cout<<"****************************************";
IR(21,20);cout<<"*";
IR(27,20);cout<<"ERROR : Opción No Existe !";
IR(60,20);cout<<"*";
IR(21,21);cout<<"*Presione Cualquier Tecla Para Regresar*";
IR(21,22);cout<<"****************************************";
getch();
clrscr();
pantalla();
menu();
}
}

void insertaInicioLDEC(){
q=(NODO*)malloc(sizeof(NODO));
IR(5,5);cout<<"Nombre del Platillo -> ";
gets((q->platillo));
IR(5,7);cout<<"Número de Porciones -> ";
cin>>q->porciones;
IR(5,9);cout<<"Tiempo de Cocción -> ";
gets((q->tiempoc));
IR(5,11);cout<<"Tiempo de Preparación -> ";
gets((q->tiempop));
if (p==NULL){
q->ligaDer=NULL;
q->ligaIzq=NULL;
p=q;
f=q;
}
else{
q->ligaDer=p;
p->ligaIzq=q;
q->ligaIzq=NULL;
p=q;
}
clrscr();
pantalla();
bandera=1;
IR(22,22);cout<<"Receta Insertada Satisfactoriamente !";
IR(20,24);cout<<"Presione Cualquier Tecla Para Regresar -> ";
getch();
clrscr(),
pantalla();
menu();
}

/*void insertaAntesLDEC(){
int datob,ref;
if (bandera==0){
cout<<"Error : No Existen Nodos !"<<endl<<endl;
cout<<"Presione Cualquier Tecla Para Regresar -> ";
getch();
clrscr();
menu();
}
else{
q=p;
clrscr();
cout<<"Inserte Dato -> ";
cin>>datob;
cout<<"Inserte Referencia -> ";
cin>>ref;
}
while((q->ligaDer !=NULL)&&(q->platillo !=ref)){
if (q->platillo==ref){
x=(NODO*)malloc(sizeof(NODO));
x->platillo=datob;
x->ligaDer=q;
t=q->ligaIzq;
q->ligaIzq=x;
x->ligaIzq=t;
}
}
if(p==q){
p=x;
}
else{
t->ligaDer=x;
}
/*else{
cout<<"Error : No Existe Referencia !"<<endl<<endl;
cout<<"Presione Cualquier Tecla Para Regresar<<endl;
getch();
clrscr();
menu();
}*/
/*
clrscr();
bandera=1;
cout<<"Nodo Insertado Satisfactoriamente !"<<endl<<endl;
cout<<"Presione Cualquier Tecla Para Regresar"<<endl;
getch();
clrscr(),
menu();
}

void mostrarI_F(){
if (bandera==0){
cout<<"Error : No Existen Nodos Que Mostrar !"<<endl<<endl;
cout<<"Presione Cualquier Tecla Para Regresar -> ";
getch();
clrscr();
menu();
}
else{
q=p;
}
while(q!=NULL){
cout<<"Información de Nodo : -> ";
cout<<q->dato<<endl<<endl;
q=q->ligaDer;
}
cout<<"Presione Cualquier Tecla Para Regresar"<<endl;
getch();
clrscr(),
menu();
}

void mostrarF_I(){
if (bandera==0){
cout<<"Error : No Existen Nodos Que Mostrar !"<<endl<<endl;
cout<<"Presione Cualquier Tecla Para Regresar -> ";
getch();
clrscr();
menu();
}
else{
q=p;
}
while(q!=NULL){
cout<<"Información de Nodo : -> ";
cout<<q->dato<<endl<<endl;
q=q->ligaIzq;
}
cout<<"Presione Cualquier Tecla Para Regresar"<<endl;
getch();
clrscr(),
menu();
}
*/

void salir(){
clrscr();
cout<<"Gracias.....";
getch();
clrscr();
exit(0);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda listas c++

Publicado por manuela perez (1 intervención) el 27/02/2006 17:44:28
estas en la paila lo ciento pero es lo mas complicado que e visto y eso que ya termine mi carrera de sistemas un beso y suerte


manuela
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda listas c

Publicado por BET (1 intervención) el 22/07/2011 00:48:01
bucle podrias contactarme! gracias [email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar