Programación General > C/C++
estrucutras, punteros
bendroide:
--- Código: C ---#include <stdio.h>#include <conio.h>#include <stdlib.h>#include <string.h> struct agenda{ char nombre [50]; char telefono[25]; char email[50]; }; struct nodo{ struct agenda dato; struct nodo *proximo; } ; struct nodo *nuevonodo int colavacia(struct nodo *) struct nodo *creacola (struct nodo *, struct agenda); void mostrar (struct nodo *); void main() { struct nodo *pri=NULL, *ult=NULL; struct agenda x; printf ("ingrese nombre: "); gets(x.nombre); while (strcmpi(x.nombre, "fin")) { printf ("ingrese telefono: "); gets (x.telefono); printf ("ingrese mail: "); gets(x.mail); ult=creacola(ult,x); if (pri==NULL) pri=ult; //si es la 1 pasada pongo en pri el valor del primer nodo printf ("ingrese nombre: "); gets(x.nombre); } if (colavacia(pri)==1) { printf ("No se ingresaron registros");getch(); } else mostrar(pri); } struct nodo *nuevonodo() { struct nodo *p; p=(struct nodo *)malloc(sizeof(struc nodo)); if(p==NULL) { printf ("memoria ram llena"); getch(); exit(0); } return p; } struct nodo *creacola(struct nodo *ult, struct agenda x) { struct nodo *p; p=nuevonodo(); (*P).dato=x; (*p).proximo=NULL; if(ult!=NULL) (*ult).proximo=p; //si hay nodo anterior en prox pongo la direccion del nodo actual return p; } int colavacia(struct nodo *pri) { if(pri==NULL) return 1; else return 0; } void mostrar (struct nodo *pri) { struct nodo *aux; while(pri!=NULL) { printf("Nombre: %s - telefono: %s - Mail: %s n", pri->dato.nombre,pri->dato.telefono,pri->dato.mail); aux=pri; pri=(*pri).proximo; free(aux); } getch();}
me tira un error en
--- Código: C ---int colavacia(struct nodo *)
alguien me puede ayudar :p
saludos,
ben
Leber:
En verdad, mi compilador casi se rompe. Tu código contenía bastantes erratas de sintaxis.
Faltaban ";" , habías puesto mail en lugar de email. una P cuando tenia que ser p, el prototipo de la función nuevonodo estaba incompleta.
Despues de corregir eso, tu código queda así:
A mi me lanza un error porque no tengo la libreria conio (que no es estandart):
--- Código: C ---#include <stdio.h>#include <stdlib.h>#include <string.h>#include <conio.h> struct agenda{ char nombre [50]; char telefono[25]; char email[50]; }; struct nodo{ struct agenda dato; struct nodo *proximo; } ; struct nodo *nuevonodo(void); int colavacia(struct nodo *); struct nodo *creacola (struct nodo *, struct agenda); void mostrar (struct nodo *); void main() { struct nodo *pri=NULL, *ult=NULL; struct agenda x; printf ("ingrese nombre: "); gets(x.nombre); while (strcmp(x.nombre, "fin")) { printf ("ingrese telefono: "); gets (x.telefono); printf ("ingrese mail: "); gets(x.email); ult=creacola(ult,x); if (pri==NULL) pri=ult; //si es la 1 pasada pongo en pri el valor del primer nodo printf ("ingrese nombre: "); gets(x.nombre); } if (colavacia(pri)==1) { printf ("No se ingresaron registros");getch(); } else mostrar(pri); } struct nodo *nuevonodo() { struct nodo *p; p=(struct nodo *)malloc(sizeof(struct nodo)); if(p==NULL) { printf ("memoria ram llena"); getch(); exit(0); } return p; } struct nodo *creacola(struct nodo *ult, struct agenda x) { struct nodo *p; p=nuevonodo(); (*p).dato=x; (*p).proximo=NULL; if(ult!=NULL) (*ult).proximo=p; //si hay nodo anterior en prox pongo la direccion del nodo actual return p; } int colavacia(struct nodo *pri) { if(pri==NULL) return 1; else return 0; } void mostrar (struct nodo *pri) { struct nodo *aux; while(pri!=NULL) { printf("Nombre: %s - telefono: %s - Mail: %s n", pri->dato.nombre,pri->dato.telefono,pri->dato.email); aux=pri; pri=(*pri).proximo; free(aux); }}
bendroide:
bine gracias, ahorita solo tengo que comentariar cada linea.
saludos coridales,
bendroide
m0skit0:
--- Cita de: "bendroide" ---comentariar
--- Fin de la cita ---
:good: :good: :good:
bendroide:
--- Código: C ---#include <stdio.h> //libreria sirve para printf y scanf#include <stdlib.h> //librera obligatoria para malloc() y el free#include <string.h> //cadenas#include <conio.h> //hacer un pause para mostrar datos struct agenda //se declara una estructura{/*miembros de la estructura*/char nombre [50]; char telefono[25];char email[50];};/* se delcara una estructura nodo*/ struct nodo{ struct agenda dato; //estructura agenda dato struct nodo *proximo; //estructura nodo , defino un puntero } ; struct nodo *nuevonodo(void); int colavacia(struct nodo *); struct nodo *creacola (struct nodo *, struct agenda); void mostrar (struct nodo *);// se declara la funcion mostrar con prototipo de 1estructura y 1puntero void main() //funcion principal { struct nodo *pri=NULL, *ult=NULL; struct agenda x; printf ("ingrese nombre: "); gets(x.nombre); while (strcmp(x.nombre, "fin")) { printf ("ingrese telefono: "); gets (x.telefono); printf ("ingrese mail: "); gets(x.email); ult=creacola(ult,x); if (pri==NULL) pri=ult; //si es la 1 pasada pongo en pri el valor del primer nodo printf ("ingrese nombre: "); gets(x.nombre); } if (colavacia(pri)==1) { printf ("No se ingresaron registros");getch(); } else mostrar(pri); } struct nodo *nuevonodo() { struct nodo *p; p=(struct nodo *)malloc(sizeof(struct nodo)); if(p==NULL) { printf ("memoria ram llena"); getch(); exit(0); } return p; } struct nodo *creacola(struct nodo *ult, struct agenda x) { struct nodo *p; p=nuevonodo(); (*p).dato=x; (*p).proximo=NULL; if(ult!=NULL) (*ult).proximo=p; //si hay nodo anterior en prox pongo la direccion del nodo actual return p; } int colavacia(struct nodo *pri) //funcion entera con parametros de estructura y puntero { if(pri==NULL) return 1; //si pri es nulo retorna 1 else //caso contrario return 0; //retorna 0 y finaliza el programa } void mostrar (struct nodo *pri) //funcion declarada para mostrar datos //tiene como parametros strcut nodo y un puntero a *pri { struct nodo *aux; //estructura dentro de una funcion nodo con un puntero a *aux while(pri!=NULL) //mientras se niega pri! es igual a un valor nulo, no apunta a ningun lado { /* imprime en pantalla telefono, mail, y imprime , y accede a cada mienbro de la estructura struct agenda dato; y las imprime*/ printf("Nombre: %s - telefono: %s - Mail: %s n", pri->dato.nombre,pri->dato.telefono,pri->dato.email); aux=pri; //las dos variables son iguales pri=(*pri).proximo; //pri se igual a su apuntador free(aux); } }
hola amigos, no se si las lineas comentariadas esta bien o tengo que modificarla y en donde...
saludos,
bendroide
Navegación
[#] Página Siguiente
Ir a la versión completa