/*declaracion de preprocesador*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<iostream>
#define I 99
#define J 21
using namespace std;
/*declaracion de variables globales*/
int m,n,o,p,q,r,s,t,cont,opcion;
char letra;
/*declaracion de la estructura 'datos'*/
struct datos
{
char nombre[20]; /*nombre del paciente, se pueden escribir hasta 20 caracteres*/
int telefono; /*telefono del paciente*/
char direccion[20]; /*direccion del paciente*/
char alergias[20]; /*alergias del paciente*/
};
/*declaracion del la funcion void 'ingresar_letra'*/
void ingresar_letra(datos *dat3[I])
{
do /*hacer*/
{
if (letra==dat3[m]->nombre[0]) /*si la letra ingresada es igual a la inicial del nombre del paciente...*/
{
printf("%20s %d %20s %20s\n",dat3[m]->nombre, dat3[m]->telefono, dat3[m]->direccion, dat3[m]->alergias); /*imprimir datos del paciente*/
m=m+1;
}
else
{
m=m+1;
}
}while(m=0 && m<=I); /*mientras 'm' sea igual a '0' y sea igual o menor a 'I', es decir 99*/
if(dat3[I]->nombre[0]!=letra) /*si ningun nombre coincide con la letra ingresada...*/
{
printf("No hay pacientes cuyo nombre empiece con la letra que ingreso."); /*imprimir mensaje indicando que no coinciden los pacientes*/
}
return;
}
/*fin funcion 'ingresar_letra'*/
/*declaracion de la funcion void 'listar_alergias'*/
void listar_alergias(datos *dat4[I])
{
for(n=0;n<=I;n++)
{
if(dat4[n]->alergias!='n') /*si el miembro 'alergias' en dat4[] es diferente a 'no'... ERROR*/
{
printf("%20s %d %20s %20s\n",dat4[n]->nombre, dat4[n]->telefono, dat4[n]->direccion, dat4[n]->alergias); /*imprimir datos del paciente*/
}
}
return;
}
/*funcion main*/
int main()
{
datos dat1[I],temp[I]; /*declaracion de variables de estructuras locales*/
printf("Pulse Enter para iniciar");
getchar();
system("cls");
printf("INGRESOS:\n");
for(o=0;o<=I;o++)
{
printf("Ingrese nombre del paciente:");
scanf("%s",dat1[o].nombre);
printf("Ingrese Numero de Telefono:");
scanf("%d",&dat1[o].telefono);
printf("Ingrese Direccion del paciente:");
scanf("%20s",dat1[o].direccion);
printf("¿El paciente tiene alergias? Ingrese <no> si no las tiene:");
scanf("%20s",dat1[o].alergias);
printf("¿Quieres ingresar otro paciente?<1=si/0=no>");
scanf("%d",&cont);
if(cont==0) /*si 'cont' es igual a '0'...*/
{
o=1000; /*la variable 'o' tendra el valor de '1000', saliendo asi del bucle*/
}
}
printf("Espere por favor mientras se ordena la lista...\n"); /*ordenamiento de burbuja*/
for (p=0;p<=I;p++)
{
for (q=0;q<=I;q++)
{
if (dat1[q].nombre > dat1[q+1].nombre) /*si el nombre actual es alfabeticamente mayor que el siguiente...*/
{
temp[q] = dat1[q];
dat1[q] = dat1[q+1];
dat1[q+1] = temp[q];
}
}
}
getchar();
printf("Esta es la lista de todos los pacientes:\n");
printf("Nombre: Telefono: Direccion: Alergias:\n");
for(r=0;r<=I;r++)
{
/*imprimir los datos de todos los pacientes*/
printf("%s %d %s %s\n",dat1[r].nombre, dat1[r].telefono, dat1[r].direccion, dat1[r].alergias);
}
getchar();
menu: /*regreso a un menu mediante 'goto'*/
system("cls");
printf("¿Que quiere hacer?\n");
printf("====================================\n");
printf("1.Listar pacientes con alergias\n");
printf("2.Buscar pacientes por letra\n");
printf("0.Salir\n");
printf("====================================\n");
scanf("%d",&opcion);
switch(opcion)
{
case 1:
{
printf("LISTADO DE PACIENTES CON ALERGIAS:\n");
for(s=0;s<=A;s++)
{
printf("Nombre: Telefono: Direccion: Alergias:\n");
cout<<listar_alergias(dat1[s])<<endl; /*ERROR*/
}
getchar;
goto menu; /*volver al menu*/
}
case 2:
{
printf("Ingrese una Letra:");
scanf("%s",&letra);
printf("\nPacientes con la letra: <%s> \n",letra);
for(t=0;t<=B;t++)
{
cout<<ingresar_letra(dat2[t])<<endl; /*ERROR*/
}
getchar();
goto menu;
}
case 0:
{
return 0;
goto fin; /*ir al final del codigo y terminar el programa*/
}
default:
{
printf("Opcion Invalida.");
getchar();
goto menu;
}
}
fin:
return 0;
}/*cierra main*/