Programación General > C/C++

 estrucutras, punteros

(1/2) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa