Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - xtremehope

#1
Programación C/C++ / Ayuda en C
28 Junio 2012, 22:49 PM
alguien podría ayudarme en la Compilación de este programa que me da errores y warning en la programación:




#include <stdlib.h>
#include <stdio.h>
#include <conio.h>


typedef struct perso//definimos la estructura que usaremos, debemos tener cuidado de no elegir los mismo nombres
                    //para la definicion de la variable y para la variable
{
    char nombre [30];
    char apellido [30];
    int edad;
    struct perso *lista;

}persona;

void ingrese_persona(persona *p);//declaramos las funciones
void imprima_persona(persona *p);
persona *busca_persona(persona *listanueva,char nombre);
persona *agregar_persona(persona*lista);

int main ()
{
    int opcion=0,N=0;
    persona *listanueva=NULL;
    do{//ciclo do while para evitar seleccionar un numero que no este entre las opciones
    printf ("\n\nMenu:\n\n");
    printf("seleccione una opcion:\n\n\t\t 1.-Ingresar persona\n \t\t2.-Imprimir lista\n\t\t3.-Salir\n\n");
    opcion=getch();//se ocupa getch() y no getchar() o si no me devuelve dos veces el menu cada vez y nos lee el caracter desde teclado, parecido a scanf
    switch (opcion)
    {

            case '1'://definimos las opciones y sus correspondientes valores
                    if(N<5)
                {
                    printf("Selecciono opcion: 1\n\n");
                  listanueva=agregar_persona(listanueva);}//llama a funcion
                  else
                                {
                                    printf("limite de personas");
                                }
                                    N++;
                  break;
            case '2':
               printf("Selecciono opcion: 2\n\n");
                  imprima_persona(listanueva);//llama para imprimri
                  break;
            case '3':
               printf("Selecciono opcion: 3\n\n");
                  printf("fin programa\n\n");
                  break;
                case '4':
                listanueva=busca_persona(listanueva);
                default:
                  printf("seleccion no valida\n\n"); //nos evita
                  break;

      }

    }

    while (opcion!='3');
   return 0;
 
}

void ingrese_persona (persona *p)
{
        printf("\nIngrese nombre: ");
        scanf("%s", p->nombre);
        printf("Ingrese apellido: ");
        scanf("%s", p->apellido);
        printf("Ingrese edad: ");
        scanf("%d", &(p->edad));
        p++;
        p->lista=NULL;
}

void imprima_persona(persona *p)
{
        persona *aux3=p;
        while (aux3!=NULL)
        {
            printf(" %s %s (%d años)\n",aux3->nombre, aux3->apellido, aux3->edad);
        aux3=aux3->lista;//definimos un puntero auxiliar para evitar que el puntero quede en nULL
        }
}

persona *agregar_persona(persona *auxlista)//definicion de puntero a persona lista
{
    persona *aux2lista=(persona*)malloc(sizeof(persona));//reservamos con memoria dinamica un espacio para el puntero
    ingrese_persona(aux2lista);//agregamos la funcnio
    aux2lista->lista=NULL;//ahora debemos usar un puntero auxiliar para que asi lista nos quede apuntando a NULL
    if (auxlista==NULL)
    {
        auxlista=aux2lista;//si el puntero auxiliar es igual a NULL quedara apuntando a NUll
    }
    else
    {
        persona *actual=auxlista,*anterior;//creacion de dos punteros para recorrer la lista
        while (actual!=NULL)
        {
            anterior=actual;//anterior queda apuntando a actual
            actual=actual->lista;//actual apunta al siguietne
        }
        anterior->lista=aux2lista;//de esta forma se genera que el puntero no este apuntando a NULL si no al puntero siguiente
    }
    return(auxlista);//devuleve el puntero a lista
}

persona *busca_persona(persona *listanueva,char nombre)
{
    persona *auxbuscar=listanueva;
    while (auxbuscar!=NULL)
    {
        if (auxbuscar->nombre==nombre)
        {
            printf("nombre encontrado\n");
            return auxbuscar;
        }
        auxbuscar=auxbuscar->lista;
    }
    printf ("no co existe\n");
    return auxbuscar;
}


atte: xtreme
Código (cpp) [Seleccionar]
[code=cpp][code=cpp][code=cpp][code=c][code=cpp][/code][/code][/code][/code][/code]hope