ya lo probe me sale este error y noc que hacer..
me salen todos los nodos ahora
http://img121.imageshack.us/i/dedas.jpg
me salen todos los nodos ahora
http://img121.imageshack.us/i/dedas.jpg
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ú#include<stdio.h> //declaracion de librerias basicas
#include<stdlib.h>
struct nodo //declaracion del nodo con su campos
{
char nombre[30], fecha[15];
int cedula,edad;
struct nodo *siguiente;
};
typedef nodo lista; //typedef de cada nodo, que se convierte en la lista
lista *primero, *segundo, *tercero, *cuarto, *quinto;
void crear_nodo() //creacion e incializacion del nodo
{
primero=new(nodo); //creacion del primer nodo
primero->nombre[30]= NULL; //NULL para dejar vacio el arreglo de caracteres
primero->fecha[30]= NULL;
primero->cedula=0;
primero->edad=0;
primero->siguiente=0;
segundo=new(nodo); //creacion del segundo
segundo->nombre[30]= NULL;
segundo->fecha[30]= NULL;
segundo->cedula=0;
segundo->edad=0;
segundo->siguiente=0;
tercero=new(nodo); //creacion del tercero
tercero->nombre[30]= NULL;
tercero->fecha[30]= NULL;
tercero->cedula=0;
tercero->edad=0;
tercero->siguiente=0;
cuarto=new(nodo); //creacion del cuarto
cuarto->nombre[30]= NULL;
cuarto->fecha[30]= NULL;
cuarto->cedula=0;
cuarto->edad=0;
cuarto->siguiente=0;
quinto=new(nodo); //creacion del quinto
quinto->nombre[30]= NULL;
quinto->fecha[30]= NULL;
quinto->cedula=0;
quinto->edad=0;
quinto->siguiente=0;
}
void enlazar_nodos() //enlazar los nodos con el siguiente
{
primero->siguiente=segundo;
segundo->siguiente=tercero;
tercero->siguiente=cuarto;
cuarto->siguiente=quinto;
}
void leerdatos() //funcion que lee los datos de las personas y los agrega a la lista de citas
{
lista *temp; //declaro variable temp
temp=primero;
char extra[20]; //variable adicional para recibir el nombre con los espacios
int x=0,y=0; //variables que se usaran para comparar durante el while
printf("Cuantas personas desea agregar?");
scanf("%i",&x); //obtenemos el valor de X
while ((x!=0) && (x<5) && (x!=y)) //mientras x no sea 0 y x sea menor que 5 y X y Y sean diferentes;
{
if (temp->cedula == 0) //verifica que el nodo este vacio para agregar la infomacion
{
printf("\nIntroduzca La cedula: "); //pide los datos
scanf("%i",&temp->cedula);
printf("\nIntroduzca El Nombre: ");
gets(extra);
gets(temp->nombre);
printf("\nIntroduzca Edad: ");
scanf("%i",&temp->edad);
printf("\nIntroduzca Fecha de Proxima Cita: ");
scanf("%s",&temp->fecha);
temp=temp->siguiente; //mueve el puntero temporal al siguiente nodo
x=x-1; //cuenta las veces que se hace el proceso dependiendo del valor deseado
}
else //si el nodo no esta vacio
{
temp=temp->siguiente; //mueve el puntero hacia el siguiente nodo
}
}
}
void imprimir() //mostrar datos almacenados
{
lista *tempo; //puntero temporal
tempo=primero;
while(tempo->cedula!=0) //mientras la parte cedula de lo que apunta el puntero no sea 0, verificando que no este vacio
{
if (tempo->cedula==0) //si la parte cedula del punterp tempo es igual a 0
{
tempo=tempo->siguiente; //mueve el puntero al siguiente
}
else //sino
{
printf("El Nombre: %s \n",tempo->nombre); //imprime los datos almacenados
printf("La Edad: %i \n",tempo->edad);
printf("Cedula: %i \n",tempo->cedula);
printf("Fecha: %s \n",tempo->fecha);
tempo=tempo->siguiente;
}
}
printf("\nNo Hay Mas Citas Pendientes\n"); //al final imprime esto.
system("pause");
}
void buscar() //para buscar al paciente por numero de cedula
{
bool bandera; //un bool que usamos para la busqueda
lista *aux; //puntero auxiliar que se movera por la lista
int ced; //variable que se comparara con la cedula
bandera=false; //bandera=false para que siempre entre a la busqueda
printf("\nIntroduzca la cedula a buscarr: ");
scanf("%i",&ced); //obtenemos el valor de la cedula a buscar
aux=primero;
while((bandera == false) && (aux!=0)) //comenzamos la busqueda mientras bandera sea false y lo que apunta aux no sea 0
{
if (aux->cedula == ced) //si la parte cedula del auxiliar es igual a la cedula solicitada entonces,
{
bandera = true; //hace bandera = true para que al proximo intento no entre en la busqueda
printf("\nPaciente Encontrado:\n "); //muestra los datos almacenados del paciente encontrado.
printf("\nEl Nombre: %s ",aux->nombre);
printf("\nLa Edad: %i ",aux->edad);
printf("\nCedula: %i ",aux->cedula);
printf("\nFecha: %s ",aux->fecha);
}
else aux=aux->siguiente; // en caso de que las cedulas sean diferentes solo mueve el puntero al siguiente nodo
}
if (aux == 0) printf("\nNo Tiene Citas"); //si aux es igual a 0, osea que no hay valores en los nodos entonces muestra esto.
system("pause");
}
void eliminar() // funcion que elimina los datos de un paciente de la lista //revisar
{
bool busqueda; // busqueda para que realice la busqueda de la cedula
lista *borrar; // puntero adicional que se movera por los nodos
int ce; // ce es para comparar la cedula a buscar con esta
busqueda=false;
printf("\nIntroduzca el Numero de cedula: \n");
scanf("%i",&ce); // obtenemos ce para comparar con la cedula en el nodo
borrar=primero; //hacemos que el puntero apunte al primer nodo
while (busqueda == false) //y comenzamos la busqueda
{
if (borrar->cedula == ce) //si la parte cedeula de lo que apunta borrar es igual a la cedula pedida
{
busqueda= true; //hace bandera = true para que al proximo intento se salga de la lista
borrar->cedula=0; //e inicializa todos los campos en 0
borrar->nombre[30]= NULL;
borrar->edad=0;
borrar->fecha[15]= NULL;
printf("Paciente Eliminado \n");
borrar=borrar->siguiente; //y mueve el puntero al siguiente
}
else //si las cedulas no son iguales
{
borrar=borrar->siguiente; //mueve el puntero al siguiente y vuelve a comparar
}
}
if (borrar == 0) printf("\nNo Existen Datos"); //si la cedula no se consigue muestra esto
system("pause");
}
void menu() //menu principal
{
int op; //variable que determina la opcion sugerida por el usuario
system("cls");
printf(" \n\nControl De Citas.");
printf(" \n1.- Nueva Cita. ");
printf(" \n2.- Ver Citas Pendientes. ");
printf(" \n3.- Buscar Paciente.");
printf(" \n4.- Eliminar Citas.");
printf(" \n5.- Salir.");
printf(" \nseleccionar opcion: ");
scanf("%i",&op); //obtenemos el valor de la opcion
switch (op) //hacemos el switch con las llamadas a las respectivas funciones segun sea el caso
{
case 1: system("cls");
leerdatos();
menu();
break;
case 2: system("cls");
imprimir();
menu();
break;
case 3: system("cls");
buscar();
menu();
break;
case 4: system("cls");
eliminar();
menu();
break;
case 5: exit(0);
}
}
void main() //void principal, que llama a las funciones basicas
{
crear_nodo(); //llamado a crear nodo
enlazar_nodos(); //lamado para enlazar los nodos creados
menu(); //y muestra el menu
} //fin