Un medico almacena los siguientes datos de sus pacientes:
- Nombre
- Telefono
- Direccion
- Alergias
1. Trabajar el ejercicio con Funciones.
2. Ingresar los datos hasta que el usuario decida terminar (Ojo: a efectos de la dimension del vector(Array) puede haber como maximo 100 pacientes).
3. Imprimir el listado de la informacion ingresada ordenada por nombre.
4. Listar los pacientes con alergias (Usar Puntero para ello).
5. Ingresar una letra y mostrar todos los pacientes cuyo nombre comience con ella.
Código
/*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*/
Estos son los errores que aparecen en el compilador (g++):
Citar
Linea | Columna | Mensaje |
In function 'void listar_alergias(datos**)': | ||
47 | 25 | [Error] ISO C++ forbids comparison between pointer and integer [-fpermissive] |
In function 'int main()': | ||
125 | 34 | [Error] cannot convert 'datos' to 'datos**' for argument '1' to 'void listar_alergias(datos**)' |
137 | 33 | [Error] cannot convert 'datos' to 'datos**' for argument '1' to 'void ingresar_letra(datos**)' |
Mas o menos se lo que significan los errores, pero no se como resolverlos, si el codigo es ilegible, solo avisenme y tratare de ayudar con eso.
Desde ya muchas gracias