Ayuda para hacer filtro

Iniciado por Pieshna, 1 Junio 2018, 00:34 AM

0 Miembros y 1 Visitante están viendo este tema.

Pieshna

Necesito ayuda para aplicar filtro por departamentos, no se me ocurre la manera para hacerlo, ya que no logro ordenarlos :-( espero puedan ayudarme...
Es mi proyecto de final de semestre  :(
Posdata: es de un hospital y aun esta en proceso, llevo mas o menos 1 semana y no logro hacer el filtro
aqui abajo dejo el codigo, estoy usando dev-c++
Código (cpp) [Seleccionar]


#include <iostream>
#include <conio.h>
#include <string.h>
#include <fstream>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

struct datos{
long long cui; //la funcion long long sirve para ingresar un numero extremadamente grande, que supere los 10 numeros
char nombre[254];
char apellido[254];
struct fecha{
int dia;
int mes;
int año;
}fecha;
char tipos[254];
int cel;
char nfamiliar[254];
struct direccion{
char departamento[254];
char municipio[254];
char zona[254];
}direccion;
}datos;

struct rp{ //rp = Registro de paciente
long long cui;
struct fecha{ //fecha de ingreso
int dia;
int mes;
int año;
}fecha;
int nufam;
char ti[254];
char descripcion[1000]; //descripcion del por que ingresa
char medico[254]; //medico tratante
int hingreso; //hora ingreso
int mingreso;//minutos ingreso
char diagnostico[1000]; //diagnostico medico
char rmedica[600];//receta medica
char titulo[254];
struct fechas{ //fecha salida
int dia;
int mes;
int año;
}fechas;
int hsalida; //hora salida
int msalida;//minutos salida
}rp;

void principio();//contiene el primer menu en el que pregunta si se ha usado el programa anteriormente
void menu();//Contiene el menu de inicio
void crear();//void para crear el archivo de texto
void ingresar();//Ingresar pacientes
void mini(); //mini busqueda
void registro();
void breporte();
void mini2();//mini busqueda en el void ingresar
void rgpaciente(); //Registro general de paciente
/*void rgpfecha(); //Registro general de pacientes filtrado por rango y fecha
void rpsangre(); //Registro de paciente por tipo de sangre
void diagnostico(); //Reporte de paciente por diagnostico*/
void pdepartamento(); //Reporte de pacientes por departamento
/*void ddepartamento(); //Reporte de diagnostico por departamento
void historial(); //Historial clinico del paciente
void rdt(); //Reporte de descendente de total de ingreso de pacientes por día
void pmedico(); //Reporte de pachiente por medico
*/
long long auxccui=0;
void ingresar(){
char c[254],ddia[254],mes[254],cel[254],corr[254],año[254];
int m=0,dia=0,ce=0,x=0,dc=0,aanio=0,xx=0;
int vn=0,va=0,vs=0,vnf=0,vd=0,vm=0,vz=0;//validaciones para los bucles while en la variable nombre,apellido.
long long a; //la funcion long long sirve para ingresar un numero extremadamente grande, que supere los 10 numeros
cout<<"\t\t\tINGRESE LA SIGUIENTE INFORMACION "<<endl;
cout<<"________________________________________________________________________________________"<<endl;
cout<<" CUI del paciente: ";
cin>>c;
a= atof(c);// la funcion atoi(variable) sirve para convertir a variable tipo "int" caracteres ingresados en una variable tipo "char"
if (a<1000000000000){//si la variable a es menor a 13 digitos que muestre un error
cout<<" El cui es invalido, ingreselo nuevamente";
getch();
system ("cls"); //limpiar pantalla
ingresar();//empezar de nuevo el programa

}else{
if (a>9999999999999){//Si la variable a es mayor a 13 digitos que muestre error
cout<<" El cui es invalido, ingreselo nuevamente";
getch();
system ("cls"); //limpiar pantalla
ingresar();//empezar de nuevo el programa
}
}
auxccui=a;
if(datos.cui==auxccui){
mini2();
}

datos.cui=a;//Si la variable a contiene 13 digitos que se guarde en la estructura datos en cui
cin.ignore();//Para evitar que omita el ingresar nombre
do{
cout<<" Nombre del paciente: ";
// cin.ignore();
cin.getline(datos.nombre,254,'\n');
strupr(datos.nombre);
vn=0;//inpedimos que el while sea infinito
if((*datos.nombre==NULL) || (*datos.nombre==' ') ){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vn=1;//activamos el while
}
}while(vn==1);

// cin.ignore();//Para evitar que omita el ingresar apellido, eliminar "//" para activar la funcion
do{
cout<<" Apellido del paciente: ";
cin.getline(datos.apellido,254,'\n');
strupr(datos.apellido);
va=0;//inpedimos que el while sea infinito
if((*datos.apellido==NULL) || (*datos.apellido==' ')){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
va=1;//activamos el while
}
}while(va==1);


cout<<"\t\t\tFECHA DE NACIMIENTO:\t\t\t\t\t\t EJEMPLO: 01/01/2000"<<endl;
do{
cout<<" Ingrese la fecha:\n";
xx=0;
cin.getline(ddia,254,'/');
cin.getline(mes,254,'/');
cin.getline(año,254,'\n');
dia=atoi(ddia);
m=atoi(mes);
aanio=atoi(año);
if((dia==0) || (dia>31)){
cout<<" DIA INVALIDO, VUELVA A INTENTARLO\n";
xx=1;
}else{
if((m==0) || (m>12)){
cout<<" MES INVALIDO, VUELVA A INTENTARLO\n";
xx=1;
}else{
if((aanio<1950) || (aanio>2018)){
cout<<" año INVALIDO, VUELVA A INTENTARLO\n";
xx=1;
}else{
if((dia>29) && (m=2)){
cout<<" RECUERDE QUE FEBRERO SOLO TIENE 29 DIAS EN AÑO BISIESTO\n";
xx=1;
}
}
}
}

}while(xx==1);
datos.fecha.dia=dia;
datos.fecha.mes=m;
datos.fecha.año=aanio;


// cin.ignore();
do{

cout<<" Ingrese el tipo de sangre: ";
vs=0;//inpedimos que el while sea infinito
cin.getline(datos.tipos,254,'\n');
strupr(datos.tipos);
if((*datos.tipos=='A') || (*datos.tipos=='AB') || (*datos.tipos=='B') || (*datos.tipos=='O')){

}else{
cout<<" TIPO DE SANGRE NO VALIDO, VUELVA A INTENTARLO.\n\n";
cout<<" Recuerde que solo hay tipos de sangre a+,a-,b+,b-,ab+,ab-,o+,o-.\n";
vs=1;
}
}while(vs==1);

do{
do{
do{
cout<<" Ingrese el Numero celular de un familiar del paciente: ";
cin.getline(cel,254,'\n');
ce=atoi(cel);
if (ce==0){
cout<<" El numero ingresado es invalido, intente nuevamente."<<endl;
ce=0;
}else{

if (ce<29999999){
cout<<" El numero ingresado es invalido, intente nuevamente. "<<endl;
ce=0;
}else{
if (ce>60000000){
cout<<" El numero ingresado es invalido, intente nuevamente. "<<endl;
ce=0;
}
}
}
}while(ce>60000000);
}while(ce==0);
}while(ce<29999999);
datos.cel=ce;

// cin.ignore(); //Si en caso llega a omitir la parte de ingresar este dato solo borrar las "//" del inicio
do{
cout<<" Ingrese el Nombre de un familiar del cliente: ";
cin.getline(datos.nfamiliar,40,'\n');
strupr(datos.nfamiliar);
vnf=0;//inpedimos que el while sea infinito
if((*datos.nfamiliar==NULL) || (*datos.nfamiliar==' ') /*|| (*datos.nfamiliar=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vnf=1;//activamos el while
}
}while(vnf==1);

// cin.ignore(); //Si en caso llega a omitir la parte de ingresar este dato solo borrar las "//" del inicio
do{
cout<<" Departamento: ";
cin.getline(datos.direccion.departamento,30,'\n');
strupr(datos.direccion.departamento);
vd=0;//inpedimos que el while sea infinito
if((*datos.direccion.departamento==NULL) || (*datos.direccion.departamento==' ') /*|| (*datos.nfamiliar=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vd=1;//activamos el while
}
}while(vd==1);

// cin.ignore(); //Si en caso llega a omitir la parte de ingresar este dato solo borrar las "//" del inicio
do{
cout<<" Municipio: ";
cin.getline(datos.direccion.municipio,30,'\n');
strupr(datos.direccion.municipio);
vm=0;//inpedimos que el while sea infinito
if((*datos.direccion.municipio==NULL) || (*datos.direccion.municipio==' ') /*|| (*datos.nfamiliar=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vm=1;//activamos el while
}
}while(vm==1);

// cin.ignore(); //Si en caso llega a omitir la parte de ingresar este dato solo borrar las "//" del inicio
do{
cout<<" Zona: ";
cin.getline(datos.direccion.zona,30,'\n');
vz=0;//inpedimos que el while sea infinito
if((*datos.direccion.zona==NULL) || (*datos.direccion.zona==' ') /*|| (*datos.nfamiliar=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vz=1;//activamos el while
}
}while(vz==1);
system("cls");
cout<<"\t\t\t DATOS INGRESADOS:\n";
cout<<"_______________________________________________________________________________________________"<<endl;
cout<<" CUI del paciente: "<<datos.cui<<endl;
cout<<" Nombre del paciente: "<<datos.nombre<<endl;
cout<<" Apellido del paciente: "<<datos.apellido<<endl;
cout<<" Fecha de nacimiento:"<<datos.fecha.dia<<"/"<<datos.fecha.mes<<"/"<<datos.fecha.año<<endl;
cout<<" Tipo de sangre: "<<datos.tipos<<endl;
cout<<" Numero celular del familiar: "<<datos.cel<<endl;
cout<<" Nombre de un familiar del cliente: "<<datos.nfamiliar<<endl;
cout<<" Departamento: "<<datos.direccion.departamento<<endl;
cout<<" Municipio: "<<datos.direccion.municipio<<endl;
cout<<" Zona: "<<datos.direccion.zona<<endl;
cout<<"_______________________________________________________________________________________________"<<endl;

cout<<" LOS DATOS SON CORRECTOS?\n";
cout<<" 1. SI.\t\t 2. NO.\n OPCION[ ]\b\b";
cin.getline(corr,254,'\n');
strupr(corr);
dc=atoi(corr);
if((dc==2)||(corr=="NO")||(corr=="NO.")){
system("cls");
ingresar();
}

FILE*archivo;
archivo=fopen("hospital.txt","at+"); //abrimos el archivo
fwrite(&datos,sizeof(datos),1,archivo); //escribimos los datos ingresados en el archivo
fclose(archivo);//cerramos el archivo
cout<<" DATOS INGRESADOS CORRECTAMENTE"; //Mensaje para corroborar que se ingresaron los archivos
getch();
menu();

}

void breporte(){
FILE*archivo;
archivo=fopen("registro.txt", "r+");
while(fread(&rp,sizeof(rp),1,archivo)==1)
{
if((datos.cui==rp.cui) /*&& (rp.fecha.dia!=0)*/ && (datos.cel==rp.nufam)){
cout<<"_______________________________________________________________________________________________"<<endl;
cout<<"\t\t\tREPORTE\n";
cout<<"_______________________________________________________________________________________________"<<endl;
cout<<" Fecha de ingreso: "<<rp.fecha.dia<<"/"<<rp.fecha.mes<<"/"<<rp.fecha.año<<".\n";
cout<<" Descripcion de ingreso: "<<rp.ti<<endl;
cout<<" Hora de ingreso: "<<rp.hingreso<<":"<<rp.mingreso<<".\n";
cout<<" Medico tratante:"<<rp.medico<<endl;
cout<<" Diagnostico medico: \n\t\t\t"<<rp.titulo<<endl<<rp.diagnostico<<endl;
cout<<" Receta medica: "<<rp.rmedica<<endl;
cout<<" Fecha de salida: "<<rp.fechas.dia<<"/"<<rp.fechas.mes<<"/"<<rp.fechas.año<<".\n";
cout<<" Hora de salida: "<<rp.hsalida<<":"<<rp.msalida;
cout<<"\n_______________________________________________________________________________________________"<<endl;
cout<<"\n Presione cualquier tecla para continuar.";
getch();


}
}
fclose(archivo);


}

void rgpaciente(){
FILE*archivo;
FILE*archivo2;
archivo2=fopen("registro.txt", "r+");
archivo=fopen("hospital.txt", "r+");

int opc=0,opco=0,x=0;
char opci[254];

cout<<"\t\t\tREPORTE GENERAL DE PACIENTES:"<<endl;
cout<<"_______________________________________________________________________________________________"<<endl;


while(fread(&datos,sizeof(datos),1,archivo)==1)
{

fread(&rp,sizeof(rp),1,archivo2);


cout<<" CUI del paciente: "<<datos.cui<<endl;
cout<<" Nombre del paciente: "<<datos.nombre<<endl;
cout<<" Apellido del paciente: "<<datos.apellido<<endl;
cout<<" Fecha de nacimiento:"<<datos.fecha.dia<<"/"<<datos.fecha.mes<<"/"<<datos.fecha.año<<endl;
cout<<" Tipo de sangre: "<<datos.tipos<<endl;
cout<<" Numero celular del familiar: "<<datos.cel<<endl;
cout<<" Nombre de un familiar del cliente: "<<datos.nfamiliar<<endl;
cout<<" Departamento: "<<datos.direccion.departamento<<endl;
cout<<" Municipio: "<<datos.direccion.municipio<<endl;
cout<<" Zona: "<<datos.direccion.zona<<endl;
cout<<"_______________________________________________________________________________________________"<<endl;
// getch();


do{
x=0;
if((datos.cui==rp.cui ) && (datos.cel==rp.nufam) ){
cout<<" Desea ver el reporte?\n";
cout<<" 1. SI\t\t2. NO\n";
cout<<" OPCION [ ]\b\b";
cin>>opci;
x=0;
opco=atoi(opci);
if ((opco==0) || (opco>2)){
cout<<" OPCION NO VALIDA VUELVA A INTENTARLO.\n";

x=1;
}else{
opc=opco;
}

}else{
cout<<" NO TIENE REPORTE CLINICO.\n";
cout<<"_______________________________________________________________________________________________"<<endl;
getch();
}
}while(x==1);

if((opc==1)){
breporte();



}

// getch();

//}  

}
fclose(archivo);
fclose(archivo2);


getch();
}

void pdepartamento(){ //falta aplicar el filtro
FILE*archivo;
archivo=fopen("hospital.txt", "r+");
string auxdep;
cout<< "\t\t\tFILTRAR POR DEPARTAMENTO: "<<endl;
cout<<"_______________________________________________________________________________________________"<<endl<<endl;

system("cls");
while(fread(&datos,sizeof(datos),1,archivo)==1)
{
auxdep=datos.direccion.departamento;
if(datos.direccion.departamento==auxdep)
{
cout<< "\t\t\tDEPARTAMENTO: "<<datos.direccion.departamento<<endl;
cout<<"_______________________________________________________________________________________________"<<endl<<endl;
cout<<" CUI del paciente: "<<datos.cui<<endl;
cout<<" Nombre del paciente: "<<datos.nombre<<endl;
cout<<" Apellido del paciente: "<<datos.apellido<<endl;
cout<<" Fecha de nacimiento:"<<datos.fecha.dia<<"/"<<datos.fecha.mes<<"/"<<datos.fecha.año<<endl;
cout<<" Tipo de sangre: "<<datos.tipos<<endl;
cout<<" Numero celular del familiar: "<<datos.cel<<endl;
cout<<" Nombre de un familiar del cliente: "<<datos.nfamiliar<<endl;
cout<<" Municipio: "<<datos.direccion.municipio<<endl;
cout<<" Zona: "<<datos.direccion.zona<<endl;
cout<<"_______________________________________________________________________________________________"<<endl;
auxdep=datos.direccion.departamento;
}else{
cout<<" Se ha producido un error a la hora de buscar por ese departamento, intentelo nuevamente."<<endl;
getch();

}

}
fclose(archivo);
getch();


}

void menu(){
crear();
char opci[254];
int opc=0,opco=0;
while (opc!= 12){
system("cls");
cout<<"________________________________________________________________________________________"<<endl;
cout<<"\n\t\t\t\t\tMENU "<<endl;
cout<<"________________________________________________________________________________________"<<endl;
cout<<"\n\t\t\tENUMERE LA OPCION QUE DESEA UTILIZAR: "<<endl<<endl;
cout<<"\t1. Ingresar paciente."<<endl;
cout<<"\t2. Registrar paciente."<<endl;
cout<<"\t3. Reporte general de pacientes."<<endl;
cout<<"\t4. Reporte general de pacientes filtrado por fecha."<<endl;
cout<<"\t5. Reporte general de pacientes por tipo de sangre."<<endl;
cout<<"\t6. Reporte general de pacientes por diagnostico."<<endl;
cout<<"\t7. Reporte general de pacientes por departamento."<<endl;
cout<<"\t8. Reporte de diagnostico por departamento."<<endl;
cout<<"\t9. Reporte de historial clinico por paciente."<<endl;
cout<<"\t10. Reporte decendente de total de ingreso de pacientes por dia."<<endl;
cout<<"\t11. Reporte de pacientes por medico."<<endl;
cout<<"\t12. Salir."<<endl;
cout<<"________________________________________________________________________________________"<<endl;
cout<<"\n\t OPCION:[  ]\b\b\b";
cin>>opci;
opco=atoi(opci);
if((opco==0) || (opco>12)){
cout<<" OPCION NO VALIDA, INTENTELO DE NUEVO.";
getch();
menu();
}else{
opc=opco;
}

switch(opc){
case 1:
system("cls");
ingresar();
break;

case 2:
registro();
break;

case 3:
system("cls");
rgpaciente(); //Registro general de paciente
break;

/* case 4:
rgpfecha(); //Registro general de pacientes filtrado por rango y fecha
break;

case 5:
rpsangre(); //Registro de paciente por tipo de sangre
break;

case 6:
diagnostico(); //Reporte de paciente por diagnostico
break;
*/
case 7:
pdepartamento(); //Reporte de paciente por departamento
break;
/*
case 8:
ddepartamento(); //Reporte de diagnostico por departamento
break;

case 9:
historial(); //Historial clinico del paciente
break;

case 10:
rdt(); //Reporte de descendente de total de ingreso de pacientes por día
break;

case 11:
pmedico(); //Reporte de pachiente por medico
break;
*/
case 12:
cout<<"\tQUE TENGA UN LINDO DIA!"<<endl;
break;

default:
cout<<"\tOPCION NO VALIDA, INTENTELO DE NUEVO. ";
getch();
menu();
break;


}


}

}

void crear(){
FILE*archivo;
FILE*archivo2;
archivo=fopen("hospital.txt","a+");
archivo2=fopen("registro.txt","a+");
fclose(archivo);
fclose(archivo2);
}

void principio(){
int a=1;
int b=0;
system("cls");
cout<<" Es primera vez que utiliza este programa? \n 1. Si. \t\t\t\t 2. No."<<endl;
cin>>b;
if(b>2){
cout<<" OPCION NO VALIDA, INTENTELO NUEVAMENTE.";
getch();
principio();
}
if(a=b){
crear();
menu();
}else{

menu();
}

}

int main(){
menu();
}

void mini(){
FILE*archivo;
FILE*archivo2;
archivo=fopen("hospital.txt", "r+");
system("cls");
long long auxcui;
int xn=0,vw=0;
cout<<"_______________________________________________________________________________________________"<<endl<<endl;
cout<<"\tIngrese el CUI del paciente: ";
cin>>auxcui;
cout<<"\n_______________________________________________________________________________________________"<<endl<<endl;


while((fread(&datos,sizeof(datos),1,archivo)==1)&&(vw!=1))
{

if (datos.cui==auxcui){
system("cls");
cout<<"_______________________________________________________________________________________________"<<endl<<endl;
cout<<" CUI del paciente: "<<datos.cui<<endl;
cout<<" Nombre del paciente: "<<datos.nombre<<" "<<datos.apellido <<". "<<endl;
cout<<" Fecha de nacimiento:"<<datos.fecha.dia<<"/"<<datos.fecha.mes<<"/"<<datos.fecha.año<<endl;
cout<<" Tipo de sangre: "<<datos.tipos<<endl;
cout<<" Numero celular del familiar: "<<datos.cel<<endl;
cout<<" Nombre de un familiar del cliente: "<<datos.nfamiliar<<endl;
cout<<"_______________________________________________________________________________________________"<<endl;
}
do{
int res;
char respuesta[254];
cout<<" Es el paciente correcto? "<<endl;
cout<<"1. SI. \t\t 2. NO."<<endl;
cin>>respuesta;
res=atoi(respuesta);
if (res==1){
rp.cui=datos.cui;
vw=1;
rp.nufam=datos.cel;
// cout<<rp.nufam;
// getch();
}else{
if(res==2){
xn=0;
}else{
cout<<" OPCION NO VALIDA, VUELVA A INTENTARLO.";
getch();
xn=1;
}
}
}while(xn==1);
}

archivo2=fopen("registro.txt","at+");
fwrite(&rp,sizeof(rp),1,archivo2);
fclose(archivo);

fclose(archivo2);
// cout<<" Guardado";

}

void registro(){
int dia=0,m=0,aanio=0,xx=0,h=0,min=0,hir=0,min2=0,h2=0,hir2=0,dia2=0,m2=0,aanio2=0,xx2=0;
char ddia[254],mes[254],año[254],ho[5],mi[5];
char ddia2[254],mes2[254],anio2[254],ho2[5],mi2[5];
int vme,vt,vd,vi,vm,vit;

mini();
system("cls");
cout<<"\t\t\t INGRESE LA SIGUIENTE INFORMACION: "<<endl;
do{
cout<<" Fecha de ingreso:\n";
xx=0;
cin.getline(ddia,254,'/');
cin.getline(mes,254,'/');
cin.getline(año,254,'\n');
dia=atoi(ddia);
m=atoi(mes);
aanio=atoi(año);
if((dia==0) || (dia>31)){
cout<<" DIA INVALIDO, VUELVA A INTENTARLO\n";
xx=1;
}else{
if((m==0) || (m>12)){
cout<<" MES INVALIDO, VUELVA A INTENTARLO\n";
xx=1;
}else{
if((aanio<1950) || (aanio>2018)){
cout<<" año INVALIDO, VUELVA A INTENTARLO\n";
xx=1;
}else{
if((dia>29) && (m==2)){
cout<<" RECUERDE QUE FEBRERO SOLO TIENE 29 DIAS EN AÑO BISIESTO\n";
xx=1;
}else{
rp.fecha.dia=dia;
rp.fecha.mes=m;
rp.fecha.año=aanio;
}
}
}
}

}while(xx==1);

cout<<"\t\t\tDESCRIPCION DE INGRESO: "<<endl;
do{

cout<<" Encabezado/titulo:\t\t";
cin.getline(rp.ti,254,'\n');
strupr(rp.ti);
vit=0;//inpedimos que el while sea infinito
if((*rp.ti==NULL) || (*rp.ti==' ') /*|| (*datos.nombre=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vit=1;//activamos el while
}
}while(vit==1);

do{
cout<<" Descripcion:\n";
cin.getline(rp.descripcion,1000,'\n');
strupr(rp.descripcion);
vi=0;//inpedimos que el while sea infinito
if((*rp.descripcion==NULL) || (*rp.descripcion==' ') /*|| (*datos.nombre=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vi=1;//activamos el while
}
}while(vi==1);

do{
cout<<" Hora de ingreso: "<<endl;
cin.getline(ho,5,':');
cin.getline(mi,5,'\n');
min=atoi(mi);
h=atoi(ho);
if (h>23){
cout<<" Hora invalida, vuelva a intentarla."<<endl;
h=0;min=0;
hir=1;
}else{

if(min>59){
cout<<" Minutos invalidos, vuelva a ingresar la hora"<<endl;
h=0;min=0;
hir=1;
}else{
rp.hingreso=h;
rp.mingreso=min;
}


}
}while(hir==1);

do{
vme=0;
cout<<" Medico tratante: ";
cin.getline(rp.medico,254,'\n');
strupr(rp.medico);
vme=0;//inpedimos que el while sea infinito
if((*rp.medico==NULL) || (*rp.medico==' ') /*|| (*datos.nombre=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vme=1;//activamos el while
}
}while(vme==1);

cout<<"\t\t\tDIAGNOSTICO MEDICO: "<<endl;

do{
cout<<" Encabezado/Titulo:\t\t";
cin.getline(rp.titulo,254,'\n');
strupr(rp.titulo);
vt=0;//inpedimos que el while sea infinito
if((*rp.titulo==NULL) || (*rp.titulo==' ') /*|| (*datos.nombre=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vt=1;//activamos el while
}
}while(vt==1);

do{
cout<<" Diagnostico:\n";
cin.getline(rp.diagnostico,1000,'\n');
strupr(rp.diagnostico);
vd=0;//inpedimos que el while sea infinito
if((*rp.diagnostico==NULL) || (*rp.diagnostico==' ') /*|| (*datos.nombre=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vd=1;//activamos el while
}
}while(vd==1);

do{
cout<<" RECETA MEDICA:\n";
cin.getline(rp.rmedica,600,'\n');
strupr(rp.rmedica);
vm=0;//inpedimos que el while sea infinito
if((*rp.rmedica==NULL) || (*rp.rmedica==' ') /*|| (*datos.nombre=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vm=1;//activamos el while
}
}while(vm==1);



cout<<"\t\t\tFECHA DE SALIDA\n";
do{
cout<<" FECHA: ";
xx2=0;
cin.getline(ddia2,254,'/');
cin.getline(mes2,254,'/');
cin.getline(anio2,254,'\n');
dia2=atoi(ddia2);
m2=atoi(mes2);
aanio2=atoi(anio2);
if((dia2==0) || (dia2>31)){
cout<<" DIA INVALIDO, VUELVA A INTENTARLO\n";
xx2=1;
}else{
if((m2==0) || (m2>12)){
cout<<" MES INVALIDO, VUELVA A INTENTARLO\n";
xx2=1;
}else{
if((aanio2<1950) || (aanio2>2018)){
cout<<" año INVALIDO, VUELVA A INTENTARLO\n";
xx2=1;
}else{
if((dia2>29) && (m2==2)){
cout<<" RECUERDE QUE FEBRERO SOLO TIENE 29 DIAS EN AÑO BISIESTO\n";
xx=1;
}else{
rp.fechas.dia=dia2;
rp.fechas.mes=m2;
rp.fechas.año=aanio2;
}
}
}
}

}while(xx2==1);

do{
cout<<" Hora de salida: "<<endl;
cin.getline(ho2,5,':');
cin.getline(mi2,5,'\n');
min2=atoi(mi2);
h2=atoi(ho2);
if (h2>23){
cout<<" Hora invalida, vuelva a intentarla."<<endl;
h2=0;min2=0; cout<<" Hora de ingreso: "<<endl;
cin.getline(ho2,5,':');
cin.getline(mi2,5,'\n');
min2=atoi(mi2);
h2=atoi(ho2);
hir2=1;
}else{

if(min2>59){
cout<<" Minutos invalidos, vuelva a ingresar la hora"<<endl;
h2=0;min2=0; cout<<" Hora de ingreso: "<<endl;
cin.getline(ho2,5,':');
cin.getline(mi2,5,'\n');
min2=atoi(mi2);
h2=atoi(ho2);
hir2=1;
}else{
rp.hsalida=h2;
rp.msalida=min2;
}


}
}while(hir2==1);




FILE*archivo2;
archivo2=fopen("registro.txt","at+"); //abrimos el archivo
fwrite(&rp,sizeof(rp),1,archivo2); //escribimos los datos ingresados en el archivo
fclose(archivo2);//cerramos el archivo
cout<<" DATOS INGRESADOS CORRECTAMENTE"; //Mensaje para corroborar que se ingresaron los archivos
getch();
menu();

}

void mini2(){
FILE*archivo;
FILE*archivo2;
archivo=fopen("hospital.txt", "r+");
int ce,vnf=0;
char cel[254];
long long auxcui;
cout<<"_______________________________________________________________________________________________"<<endl<<endl;
auxcui=auxccui;


while(fread(&datos,sizeof(datos),1,archivo)==1)
{

if (datos.cui==auxcui){
system("cls");
cout<<"\t\t\t DATOS INGRESADOS:\n";
cout<<"_______________________________________________________________________________________________"<<endl;
cout<<" CUI del paciente: "<<datos.cui<<endl;
cout<<" Nombre del paciente: "<<datos.nombre<<endl;
cout<<" Apellido del paciente: "<<datos.apellido<<endl;
cout<<" Fecha de ingreso:"<<datos.fecha.dia<<"/"<<datos.fecha.mes<<"/"<<datos.fecha.año<<"."<<endl;
cout<<" Tipo de sangre: "<<datos.tipos<<endl;
cout<<" Departamento: "<<datos.direccion.departamento<<endl;
cout<<" Municipio: "<<datos.direccion.municipio<<endl;
cout<<" Zona: "<<datos.direccion.zona<<endl;
cout<<"_______________________________________________________________________________________________"<<endl;
}

}
int respuesta;
cout<<" Es el paciente correcto? "<<endl;
cout<<"1. SI. \n 2. NO."<<endl;
cin>>respuesta;
if (respuesta==1){
rp.cui=datos.cui;
}else{
mini2();
}

cin.ignore();
do{
do{
do{
cout<<" Ingrese el Numero celular de un familiar del paciente: ";
cin.getline(cel,254,'\n');
ce=atoi(cel);
if (ce==0){
cout<<" El numero ingresado es invalido, intente nuevamente."<<endl;
ce=0;
}else{

if (ce<29999999){
cout<<" El numero ingresado es invalido, intente nuevamente. "<<endl;
ce=0;
}else{
if (ce>60000000){
cout<<" El numero ingresado es invalido, intente nuevamente. "<<endl;
ce=0;
}
}
}
}while(ce>60000000);
}while(ce==0);
}while(ce<29999999);
datos.cel=ce;

// cin.ignore(); //Si en caso llega a omitir la parte de ingresar este dato solo borrar las "//" del inicio
do{
cout<<" Ingrese el Nombre de un familiar del cliente: ";
cin.getline(datos.nfamiliar,40,'\n');
strupr(datos.nfamiliar);
vnf=0;//inpedimos que el while sea infinito
if((*datos.nfamiliar==NULL) || (*datos.nfamiliar==' ') /*|| (*datos.nfamiliar=='\n')*/){
cout<<" NO PUEDE DEJAR ESTE CAMPO EN BLANCO, INTENTELO NUEVAMENTE."<<endl;
vnf=1;//activamos el while
}
}while(vnf==1);

archivo2=fopen("hospital.txt","at+");
fwrite(&datos,sizeof(datos),1,archivo2);
fclose(archivo);

fclose(archivo2);
cout<<" DATOS ACTUALIZADOS.";
getch();
menu();
}

Serapis

Da pereza responder, porque para hacerlo exige leer y empaparse todo el código.... y esto no resulta conveniente.

Tu dices que quieres "filtrar por departamentos", pero como nosotros no estamos en tu cabeza y no vemos la necesidad ni urgencia de tragarnos 900 líneas de código, no nos vamos a molestar en ver qué es un departamento, etc, etc...

Haz una somera explicación en uno o dos párrafos de tu proyecto, de qué trata, que es un departamento y a que llamas fitrar en ese proyecto... 2 párrafos puede leer y entender (si no está muy enrevesado) todo el mundo, y con eso se puede ir más certero al código y ver el punto concreto donde algo deba ser cambiado, remplazado, eliminado, añadido... pero ser exigible leer antes que nada 900 línea de código, para poder responder, es algo que solo hará quien de repente esté aburrido y le apetezca... acaso ninguno.

SrMcLister

Cita de: NEBIRE en  1 Junio 2018, 15:13 PM
Da pereza responder, porque para hacerlo exige leer y empaparse todo el código.... y esto no resulta conveniente.

Tu dices que quieres "filtrar por departamentos", pero como nosotros no estamos en tu cabeza y no vemos la necesidad ni urgencia de tragarnos 900 líneas de código, no nos vamos a molestar en ver qué es un departamento, etc, etc...

Haz una somera explicación en uno o dos párrafos de tu proyecto, de qué trata, que es un departamento y a que llamas fitrar en ese proyecto... 2 párrafos puede leer y entender (si no está muy enrevesado) todo el mundo, y con eso se puede ir más certero al código y ver el punto concreto donde algo deba ser cambiado, remplazado, eliminado, añadido... pero ser exigible leer antes que nada 900 línea de código, para poder responder, es algo que solo hará quien de repente esté aburrido y le apetezca... acaso ninguno.

Completamente de acuerdo, a veces se piensan que somos máquinas... Ilustranos un poco más
Código (cpp) [Seleccionar]

return((u.areHappy() && u.knowIt()) ? u.clapYourHands() : u.goFuckYourself());