Consejo [Comparar]

Iniciado por Magiwuan, 16 Agosto 2012, 23:09 PM

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

Magiwuan

Saludos amigos, Tengo el siguiente codigo que les anexo:

#include <iostream>
#include <cstdlib>//Libreria reservada para uso de System();
#include<conio.h> //Libreria reservada para getch();

using namespace std;
const int nMax_n=1;
//Variables
char respuesta;
char respuesta1;
char res;
char cSeguir;
int pos=0; //Esta variable me determina la posicion del registro del paciente
int contAtendidos=0;//Contador de pacientes atendidos

struct paciente
{
char nombre[20],apellido[20],sexo[1];
int edad,cedula;
};
typedef paciente arreglo [nMax_n];
//Arrglos
arreglo paciente1;
//Valida cola
int vacia(){
if (pos==0)
return 1;
else
return 0;
}
//FUNCION QUE LLENA LA PRIMERA COLA DEL CONSULTORIO OFTALMOLOGICO
void llenarcola1(arreglo paciente1){
int pregunta=0;
do{//HACER ...
if(pos<=nMax_n){//Valida que el tamaño del arreglo no sea mayor al constante
//sino se valida repite el ciclo pero no guarda mas registros
system("cls");
cout<<"***************************************"<<endl;
cout<<"*******   DATOS DEL PACIENTE    *******"<<endl;
cout<<"***************************************"<<endl;
cout<<endl;
cout<<"Nombre: ";
cin>>paciente1[pos].nombre;
cout<<endl;
cout<<"Apellido: ";
cin>>paciente1[pos].apellido;
cout<<endl;
cout<<"Sexo: ";
cin>>paciente1[pos].sexo;
cout<<endl;
cout<<"Edad: ";
cin>>paciente1[pos].edad;
cout<<endl;
cout<<"Cedula: ";
cin>>paciente1[pos].cedula;
cout<<endl;
cout<<endl;
pregunta=nMax_n-pos;
cout<<endl<<"Total de citas Restantes:"<<pregunta;
cout<<endl;
cout<<endl;
pos++; //incremento la posicion
if(pregunta==0){//VALIDA QUE SI SE LLENO EL ARREGLO CAMBIE LA PREGUNTA FINAL

cout<<endl;
cout<<endl<<"No hay mas Citas por hoy."<<endl;
getch();//Presionar una Tecla para continuar
res='n';
}else{
cout<<endl<<"Desea ingresar otro Paciente S/N?";
cin>>res;
}
system("cls");
cout<<endl;
}else{ //VALIDA QUE EL USUARIO NO INGRESE USUARIOS SI ESTA FULL EL REGISTROs
system("cls");
cout<<endl<<"No hay mas Citas por hoy."<<endl;
cout<<endl;
getch();//Presionar una Tecla para continuar
system("cls");
res='n';
}
}while(res=='s' || res=='S'); // .. MIENTRAS LA RESPUESTA SEA IGUAL A S
}
// CONSULTA DE PACIENTES DE OFTALMOLOGIA
void consultarPacientes1(arreglo paciente1){
if(contAtendidos==0){
cout<<endl;
cout<<"No se han Atendidos Pacientes"<<endl;
cout<<endl;
cout<<"***************************************"<<endl;

}else{
cout<<endl;
cout<<"Cantidad de Pacientes Atendidos: "<<contAtendidos<<endl;
cout<<endl;
cout<<"***************************************"<<endl;
}
if(vacia()==1){// SI LA FUNCION VACIA RETORNA VALOR 1, ESTA VACIA
cout<<endl;
cout<<"No hay pacientes Registrados"<<endl;
cout<<endl;
cout<<"***************************************"<<endl;
cout<<endl;
getch();//Presionar una Tecla para continuar
system("cls");
}else{//SINO ESTA VACIA PROCESE A IMPRIMIR TODOS LOS REGISTROS RELACIONADOS
cout<<"***************************************"<<endl;
cout<<"******* PACIENTES POR ATENDER  ********"<<endl;
cout<<"***************************************"<<endl;
cout<<endl;
for (int i=0;i<pos;i++) //EL TAMAÑO DEL FOR SERA EL CONTADOR DE REGISTRO
{
cout<<"Nombre: "<<paciente1[i].nombre<<endl;
cout<<endl;
cout<<"Apellido: "<<paciente1[i].apellido<<endl;
cout<<endl;
cout<<"Sexo: "<<paciente1[i].sexo<<endl;
cout<<endl;
cout<<"Edad: "<<paciente1[i].edad<<endl;
cout<<endl;
cout<<"Cedula: "<<paciente1[i].cedula<<endl;
cout<<endl;
cout<<"*************************************"<<endl;
cout<<endl;
}
cout<<"*************************************"<<endl;
getch();//Presionar una Tecla para continuar//Presionar una Tecla para continuar
system("cls");
}
}

//ATENDER UN PACIENTE ES DECIR SACARLO DE LA Cola
void AtenderPaciente1(arreglo paciente1){
char atendido;
int i=0;
if(vacia()==1){// SI LA FUNCION VACIA RETORNA VALOR 1, ESTA VACIA
cout<<endl;
cout<<"No hay pacientes Registrados"<<endl;
cout<<endl;
getch();//Presionar una Tecla para continuar
system("cls");
}else{//SINO ESTA VACIA PROCESE A IMPRIMIR TODOS LOS REGISTROS RELACIONADOS
cout<<endl;
cout<<"*****     DATOS DEL PACIENTE      *****"<<endl;
cout<<"***************************************"<<endl;
cout<<endl;
for (i=0;i<1;i++) //EL TAMAÑO DEL FOR SERA EL CONTADOR DE REGISTRO
{

cout<<"Nombre: "<<paciente1[i].nombre<<endl;
cout<<endl;
cout<<"Apellido: "<<paciente1[i].apellido<<endl;
cout<<endl;
cout<<"Sexo: "<<paciente1[i].sexo<<endl;
cout<<endl;
cout<<"Edad: "<<paciente1[i].edad<<endl;
cout<<endl;
cout<<"Cedula: "<<paciente1[i].cedula<<endl;
cout<<endl;
cout<<"*************************************"<<endl;
cout<<endl;
cout<<"Desea Atender Paciente ? S/N ";
cin>>atendido;
//este proceso elimina&destruye la posicion 1 del registro y rueda los demas
if(atendido=='s' || atendido=='S'){
//recorre el arreglo para destruir la primera posicion[0] moviendo los registros
for(int j=0; j<pos-1; j++)
paciente1[j] = paciente1[j+1];
pos--; /* Decrementa pos */
contAtendidos++;
}
if(atendido=='n' || atendido=='N'){
cout<<endl;
cout<<"Al paciente "<<paciente1[i].nombre<<" "<<paciente1[i].apellido<<" le fue cancelada la cita";
//recorre el arreglo para destruir la primera posicion[0] moviendo los registros
for(int j=0; j<pos-1; j++)
paciente1[j] = paciente1[j+1];
pos--; /* Decrementa pos */
getch();
}
}
system("cls");
}
}
// MENU DEL CONSULTO DE OFTALMOLOGIA Y SUS CASOS
int submenu1(){
do{
cout<<endl;
cout<<"****** CONSULTORIO DE OFTALMOLOGIA  ******"<<endl;
cout<<"**                                      **"<<endl;
cout<<"**       A.- Cita                       **"<<endl;
cout<<"**       B.- Atender Pacientes          **"<<endl;
cout<<"**       C.- Consulta de Pacientes      **"<<endl;
cout<<"**       D.- Menu Principal             **"<<endl;
cout<<"**                                      **"<<endl;
cout<<"******************************************"<<endl;
cout<<endl<<" Que Operacion Desea Realizar: ";
cin>>respuesta1;
if(respuesta1!='A' || respuesta1!='B' || respuesta1!='C'){
system("cls");
}
//SWITCH DEL CONSULTO DE OFTALMOLOGIA
switch (respuesta1){
case 'A':
llenarcola1(paciente1);
break;
case 'B':
system("cls");
AtenderPaciente1(paciente1);
break;
case 'C':
system("cls");
consultarPacientes1(paciente1);
break;
case 'D':
system("cls");//Simula volver al menu principal.
break;
}
}while(respuesta1!='D');
return 0;
}
// ESPACIO DE CODIGO PARA TRABAJAR EL SEGUNDO MODULO
// ESPACIO DE CODIGO PARA TRABAJAR EL SEGUNDO MODULO
// ESPACIO DE CODIGO PARA TRABAJAR EL SEGUNDO MODULO
// ESPACIO DE CODIGO PARA TRABAJAR EL SEGUNDO MODULO



//Primero que nada el Menu Principal que llevara los Consultorios
int menuPrincipal(){
do{
system("color B");
cout<<endl;
cout<<"******* CLINICA EL VALLE **********"<<endl;
cout<<"*                                *"<<endl;
cout<<"*       A.- Oftalmologia         *"<<endl;
cout<<"*       B.- Ginecologo           *"<<endl;
cout<<"*       C.- Odontologia          *"<<endl;
cout<<"*       D.- Medicina General     *"<<endl;
cout<<"*       E.- Emergencia           *"<<endl;
cout<<"*       F.- Consulta Total       *"<<endl; // Supuestamente seran todos los pacientes atentidos
cout<<"*       G.-Salir / Exit          *"<<endl;
cout<<"*                                *"<<endl;
cout<<"**********************************"<<endl;
cout<<endl<<" Digite su Opcion por favor: ";
cin>>respuesta;
//si la Respuesta es Diferente de estos valores solo limpia y muestra el menuPrincipal
if(respuesta!='A' || respuesta!='B' || respuesta!='C' || respuesta!='D' || respuesta!='E' || respuesta!='F'){
system("cls");
}
switch (respuesta){
case 'A':
submenu1();
break;
case 'B':
break;
case 'G':
cout<<endl;
cout<<"    Hasta Pronto!! "<<endl;
cout<<endl;
break;
}
}while(respuesta!='G');//Mostrara el menu Mientras la respuesta no sea F
return 0;
}

int main(int argc, char *argv[]){
//Pantalla principal con datos generales del proyecto:
cout<<"\n\n \t ****************************************\n";
cout<<" \t ***                                  ***\n";
cout<<" \t ***       ESTRUCTURA DE DATOS        ***\n";
cout<<" \t ***                                  ***\n";
cout<<" \t ****************************************\n";
cout<<" \n\n\t MATERIA: Algoritmo y Programacion";
cout<<" \n\n\t PROFESOR: \t";
cout<<" \n\n\t\t";
getch();
system("cls");
menuPrincipal();
return 0;
}



Es un registro sencillo.. pero presento un problema, cuando intento comparar
if(paciente1[pos].sexo=='s'){
contadorsexoF++;
}


me da eror.. Estoy tratando de saber cuantos pacientes Femeninos y masculinos se  Atendienron o si alguien conoce otra manera de hacerlo, se los agradezco de ante manos.

A por cierto el error es este: comparison between pointer and integer!

He leido mucho y no logro comprender como solucionar el poder usar un contador cuando se use el paciente pensando, pensando y bueno quisiera otro punto de vista a ver

avesudra

#1
Mmmm , es así , tu lo que intentas comparar es el contenido de paciente1[pos].sexo el cual es un puntero entonces tienes que usar el operador de indireccion *. Te quedaría así:
if(*paciente1[pos].sexo=='s'){
contadorsexoF++;
}

PD: Publica el codigo con etiquetas GeSHi por favor :)
Regístrate en

ecfisa

#2
Hola Magiwuan.

Proba de este modo:
Código (cpp) [Seleccionar]

 if (strcmp(paciente1[pos].sexo, "s") == 0)
   contadorsexoF++;


Saludos.

Edito: No había visto la respuesta de avesudra que también te funcionará.

avesudra

#3
Cita de: ecfisa en 16 Agosto 2012, 23:51 PM
Hola Magiwuan.

Proba de este modo:
Código (cpp) [Seleccionar]

 if (strcmp(paciente1[pos].sexo, "s") == 0)
   contadorsexoF++;


Saludos.
Ese modo vale pero me parece innecesario tener que llamar a una función ¿no? pues es solo un caracter.Aunque Magiwuan podría haber declarado el sexo en la estructura como un unico char , no como un array..
Regístrate en

Magiwuan

#4
Wow. varias respuestas que bueno.. Muchas gracias por su apoyo ambas maneras sirvieron.. en cuanto al código esta bueno no ?

cuando lo termine en su totalidad lo publico todo. Gracias nuavemente.


Quedo de la siguiente manera
if(*paciente1[i].sexo=='f' || *paciente1[i].sexo=='F'){
contadorsexoF++;
}
if(*paciente1[i].sexo=='m' || *paciente1[i].sexo=='M'){
contadorsexoM++;
}

Tengo otra pregunta :)

Yo tengo 1 sola estructura de registro la cual planeo usar para varios arrelgos:

struct paciente
{
char nombre[20],apellido[20],sexo[1];
int edad,cedula;
};
typedef paciente arreglo[nMax_n];
arreglo paciente1;
arreglo paciente2;

es una manera optima o tengo q usar otra ? para el arreglo paciente2, xq si intento sacar los datos del segundo arreglo cuando consulto el arreglo 1 se pierden los datos de la posicion que saque.

avesudra

Cita de: Magiwuan en 17 Agosto 2012, 00:25 AM

Tengo otra pregunta :)

Yo tengo 1 sola estructura de registro la cual planeo usar para varios arrelgos:

struct paciente
{
char nombre[20],apellido[20],sexo[1];
int edad,cedula;
};
typedef paciente arreglo[nMax_n];
arreglo paciente1;
arreglo paciente2;

es una manera optima o tengo q usar otra ? para el arreglo paciente2, xq si intento sacar los datos del segundo arreglo cuando consulto el arreglo 1 se pierden los datos de la posicion que saque.
Personalmente la estructura la preferiría dejar así:
Código (cpp) [Seleccionar]
struct pac
{
char nombre[20],apellido[20],sexo;//Sexo para que quieres que sea un arreglo , así lo manejas como un unico carácter
int edad,cedula;
};
typedef struct pac paciente;
paciente paciente1[8]; //El arreglo de pacientes puedes definirlo tu , no hace falta que sea estático.
paciente paciente2[24]//Por poner numeros;

Y en cuanto a lo del problema no te entendí bien que quieres decir.
Regístrate en

Magiwuan

#6
Gracias por responder, me explico:

El ejercicio es una clínica, con varios consultorios.. cada consultorio tendría un arreglo de pacientes.

con 1  solo arreglo me funciona bien, pero cuando trabajo con 2 es decir paciente1 y paciente2 y los lleno ambos y luego vació el arreglo de paciente2, en pocas palabras los pacientes de ese arreglo fueron atendidos, me extrae valores del arreglo paciente1 y cuando me dirijo a consultar los datos del arreglo paciente1 la ultima posición no tiene nada.

Que estaré haciendo mal? mientras tanto estoy leyendo y probando algunos métodos.

rir3760

Cita de: Magiwuan en 17 Agosto 2012, 21:51 PMQue estaré haciendo mal? mientras tanto estoy leyendo y probando algunos métodos.
Publica el programa con las modificaciones.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

Magiwuan

 
Lo intente con algo asi para ver que tal.  Gracias por la ayuda de ante mano
#include <iostream>
#include <cstdlib>//Libreria reservada para uso de System();
#include<conio.h> //Libreria reservada para getch();
#include<string.h>
#include<cstdio>
using namespace std;
const int nMax_n=1;
//Variables
char respuesta;
char respuesta1;
char respuesta2;
char res;
char cSeguir;
int pos=0,pos2=0; //Esta variable me determina la posicion del registro del paciente
int contAtendidos=0,contAtendidos2=0;//Contador de pacientes atendidos
int pregunta=0,pregunta2=0;
int contadorsexoF=0, contadorsexoM=0;
struct paciente
{
char nombre[20],apellido[20],sexo[1];
int edad,cedula;
};
typedef paciente arreglo[nMax_n];
arreglo paciente1;
arreglo paciente2;
//Valida cola
int vacia(){
if (pos==0)
return 1;
else
return 0;
}

//FUNCION QUE LLENA LA PRIMERA COLA DEL CONSULTORIO OFTALMOLOGICO
void llenarcola1(arreglo paciente1){
char res;
do{//HACER ...
if(pos<=nMax_n){//Valida que el tamaño del arreglo no sea mayor al constante
//sino se valida repite el ciclo pero no guarda mas registros
system("cls");
cout<<"***************************************"<<endl;
cout<<"*******   DATOS DEL PACIENTE    *******"<<endl;
cout<<"***************************************"<<endl;
cout<<endl;
cout<<"Nombre: ";
cin>>paciente1[pos].nombre;
cout<<endl;
cout<<"Apellido: ";
cin>>paciente1[pos].apellido;
cout<<endl;
cout<<"Sexo(F/M): ";
cin>>paciente1[pos].sexo;
cout<<endl;
cout<<"Edad: ";
cin>>paciente1[pos].edad;
cout<<endl;
cout<<"Cedula: ";
cin>>paciente1[pos].cedula;
cout<<endl;
for (int i=0;i<pos;i++)
{
//si la cedula se repite manda un mensaje de alerta
if(paciente1[i].cedula==paciente1[pos].cedula){
cout<<endl;
int cced=0;
cout<<" Numero de Cedula repetido "<<endl;
cout<<endl;
pos--; //resta la X para que el tamaño de la constate no incremente
do{
cout<<" INGRESA NUEVAMENTE LA CEDULA ";
cin>>paciente1[pos].cedula;
cced++;
cout<<endl;
}while(cced<=2);
if(cced>2){
cout<<" has llegado al limite de intentos ";
}
}
}
cout<<endl;
pregunta=nMax_n-pos;
cout<<endl<<"Total de citas Restantes:"<<pregunta;
cout<<endl;
cout<<endl;
pos++; //incremento la posicion
if(pregunta==0){//VALIDA QUE SI SE LLENO EL ARREGLO CAMBIE LA PREGUNTA FINAL

cout<<endl;
cout<<endl<<"No hay mas Citas por hoy."<<endl;
getch();//Presionar una Tecla para continuar
res='n';
}else{
cout<<endl<<"Desea ingresar otro Paciente S/N?";
cin>>res;
}
system("cls");
cout<<endl;
}else{ //VALIDA QUE EL USUARIO NO INGRESE USUARIOS SI ESTA FULL EL REGISTROs
system("cls");
cout<<endl<<"No hay mas Citas por hoy."<<endl;
cout<<endl;
getch();//Presionar una Tecla para continuar
system("cls");
res='n';
}
}while(res=='s' || res=='S'); // .. MIENTRAS LA RESPUESTA SEA IGUAL A S
}
// CONSULTA DE PACIENTES DE OFTALMOLOGIA
void consultarPacientes1(arreglo paciente1){
if(contAtendidos==0){
cout<<endl;
cout<<"No se han Atendidos Pacientes"<<endl;
cout<<endl;
cout<<"***************************************"<<endl;

}else{
cout<<endl;
cout<<"Cantidad de Pacientes Atendidos: "<<contAtendidos<<endl;
cout<<endl;
cout<<"***************************************"<<endl;
}
if(vacia()==1){// SI LA FUNCION VACIA RETORNA VALOR 1, ESTA VACIA
cout<<endl;
cout<<"No hay pacientes Registrados"<<endl;
cout<<endl;
cout<<"***************************************"<<endl;
cout<<endl;
getch();//Presionar una Tecla para continuar
system("cls");
}else{//SINO ESTA VACIA PROCESE A IMPRIMIR TODOS LOS REGISTROS RELACIONADOS
cout<<"***************************************"<<endl;
cout<<"******* PACIENTES POR ATENDER  ********"<<endl;
cout<<"***************************************"<<endl;
cout<<endl;
for (int i=0;i<pos;i++) //EL TAMAÑO DEL FOR SERA EL CONTADOR DE REGISTRO
{
cout<<"Nombre: "<<paciente1[i].nombre<<endl;
cout<<endl;
cout<<"Apellido: "<<paciente1[i].apellido<<endl;
cout<<endl;
cout<<"Sexo: "<<paciente1[i].sexo<<endl;
cout<<endl;
cout<<"Edad: "<<paciente1[i].edad<<endl;
cout<<endl;
cout<<"Cedula: "<<paciente1[i].cedula<<endl;
cout<<endl;
cout<<"*************************************"<<endl;
cout<<endl;
}
cout<<"*************************************"<<endl;
getch();//Presionar una Tecla para continuar//Presionar una Tecla para continuar
system("cls");
}
}

//ATENDER UN PACIENTE ES DECIR SACARLO DE LA Cola
void AtenderPaciente1(arreglo paciente1){
char atendido;
int i=0;
if(vacia()==1){// SI LA FUNCION VACIA RETORNA VALOR 1, ESTA VACIA
cout<<endl;
cout<<"No hay pacientes Registrados"<<endl;
cout<<endl;
getch();//Presionar una Tecla para continuar
system("cls");
}else{//SINO ESTA VACIA PROCESE A IMPRIMIR TODOS LOS REGISTROS RELACIONADOS
cout<<endl;
cout<<"*****     DATOS DEL PACIENTE      *****"<<endl;
cout<<"***************************************"<<endl;
cout<<endl;
for (i=0;i<1;i++) //EL TAMAÑO DEL FOR SERA EL CONTADOR DE REGISTRO
{

cout<<"Nombre: "<<paciente1[i].nombre<<endl;
cout<<endl;
cout<<"Apellido: "<<paciente1[i].apellido<<endl;
cout<<endl;
cout<<"Sexo: "<<paciente1[i].sexo<<endl;
cout<<endl;
cout<<"Edad: "<<paciente1[i].edad<<endl;
cout<<endl;
cout<<"Cedula: "<<paciente1[i].cedula<<endl;
cout<<endl;
cout<<"*************************************"<<endl;
cout<<endl;
cout<<"Desea Atender Paciente ? S/N ";
cin>>atendido;
//este proceso elimina&destruye la posicion 1 del registro y rueda los demas
if(atendido=='s' || atendido=='S'){
//recorre el arreglo para destruir la primera posicion[0] moviendo los registros
for(int j=0; j<pos-1; j++)
paciente1[j] = paciente1[j+1];
pos--; /* Decrementa pos */
contAtendidos++;
if(*paciente1[i].sexo=='f' || *paciente1[i].sexo=='F'){
contadorsexoF++;
}
if(*paciente1[i].sexo=='m' || *paciente1[i].sexo=='M'){
contadorsexoM++;
}
}
if(atendido=='n' || atendido=='N'){
cout<<endl;
cout<<"Al paciente "<<paciente1[i].nombre<<" "<<paciente1[i].apellido<<" le fue cancelada la cita";
//recorre el arreglo para destruir la primera posicion[0] moviendo los registros
for(int j=0; j<pos-1; j++)
paciente1[j] = paciente1[j+1];
pos--; /* Decrementa pos */
getch();
}
}
system("cls");
}
}
// MENU DEL CONSULTO DE OFTALMOLOGIA Y SUS CASOS
int submenu1(){
do{
cout<<endl;
cout<<"****** CONSULTORIO DE OFTALMOLOGIA  ******"<<endl;
cout<<"**                                      **"<<endl;
cout<<"**       A.- Cita                       **"<<endl;
cout<<"**       B.- Atender Pacientes          **"<<endl;
cout<<"**       C.- Consulta de Pacientes      **"<<endl;
cout<<"**       D.- Menu Principal             **"<<endl;
cout<<"**                                      **"<<endl;
//cout<<"Sexo F: "<<contadorsexoF<<endl;
//cout<<"Sexo M: "<<contadorsexoM<<endl;
cout<<"******************************************"<<endl;
cout<<endl<<" Que Operacion Desea Realizar: ";
cin>>respuesta1;
if(respuesta1!='A' || respuesta1!='B' || respuesta1!='C'){
system("cls");
}
//SWITCH DEL CONSULTO DE OFTALMOLOGIA
switch (respuesta1){
case 'A':
llenarcola1(paciente1);
break;
case 'B':
system("cls");
AtenderPaciente1(paciente1);
break;
case 'C':
system("cls");
consultarPacientes1(paciente1);
break;
case 'D':
system("cls");//Simula volver al menu principal.
break;
}
}while(respuesta1!='D');
return 0;
}
// ESPACIO DE CODIGO PARA TRABAJAR EL SEGUNDO MODULO

// ESPACIO DE CODIGO PARA TRABAJAR EL SEGUNDO MODULO
// ESPACIO DE CODIGO PARA TRABAJAR EL SEGUNDO MODULO
// ESPACIO DE CODIGO PARA TRABAJAR EL SEGUNDO MODULO
//FUNCION QUE LLENA LA PRIMERA COLA DEL CONSULTORIO OFTALMOLOGICO
int vacia2(){
if (pos2==0)
return 1;
else
return 0;
}
void llenarcola2(arreglo paciente2){
int pregunta2=0;
do{//HACER ...
if(pos2<=nMax_n){//Valida que el tamaño del arreglo no sea mayor al constante
//sino se valida repite el ciclo pero no guarda mas registros
system("cls");
cout<<"***************************************"<<endl;
cout<<"*******   DATOS DEL PACIENTE    *******"<<endl;
cout<<"***************************************"<<endl;
cout<<endl;
cout<<"Nombre: ";
cin>>paciente2[pos2].nombre;
cout<<endl;
cout<<"Apellido: ";
cin>>paciente2[pos2].apellido;
cout<<endl;
cout<<"Sexo: ";
cin>>paciente2[pos2].sexo;
cout<<endl;
cout<<"Edad: ";
cin>>paciente2[pos2].edad;
cout<<endl;
cout<<"Cedula: ";
cin>>paciente2[pos2].cedula;
cout<<endl;
cout<<endl;
pregunta2=nMax_n-pos2;
cout<<endl<<"Total de citas Restantes:"<<pregunta2;
cout<<endl;
cout<<endl;
pos2++; //incremento la posicion
if(pregunta2==0){//VALIDA QUE SI SE LLENO EL ARREGLO CAMBIE LA PREGUNTA FINAL

cout<<endl;
cout<<endl<<"No hay mas Citas por hoy."<<endl;
getch();//Presionar una Tecla para continuar
res='n';
}else{
cout<<endl<<"Desea ingresar otro Paciente S/N?";
cin>>res;
}
system("cls");
cout<<endl;
}else{ //VALIDA QUE EL USUARIO NO INGRESE USUARIOS SI ESTA FULL EL REGISTROs
system("cls");
cout<<endl<<"No hay mas Citas por hoy."<<endl;
cout<<endl;
getch();//Presionar una Tecla para continuar
system("cls");
res='n';
}
}while(res=='s' || res=='S'); // .. MIENTRAS LA RESPUESTA SEA IGUAL A S
}
void consultarPacientes2(arreglo paciente2){
if(contAtendidos2==0){
cout<<endl;
cout<<"No se han Atendidos Pacientes"<<endl;
cout<<endl;
cout<<"***************************************"<<endl;

}else{
cout<<endl;
cout<<"Cantidad de Pacientes Atendidos: "<<contAtendidos2<<endl;
cout<<endl;
cout<<"***************************************"<<endl;
}
if(vacia2()==1){// SI LA FUNCION VACIA RETORNA VALOR 1, ESTA VACIA
cout<<endl;
cout<<"No hay pacientes Registrados"<<endl;
cout<<endl;
cout<<"***************************************"<<endl;
cout<<endl;
getch();//Presionar una Tecla para continuar
system("cls");
}else{//SINO ESTA VACIA PROCESE A IMPRIMIR TODOS LOS REGISTROS RELACIONADOS
cout<<"***************************************"<<endl;
cout<<"******* PACIENTES POR ATENDER  ********"<<endl;
cout<<"***************************************"<<endl;
cout<<endl;
for (int i=0;i<pos2;i++) //EL TAMAÑO DEL FOR SERA EL CONTADOR DE REGISTRO
{
cout<<"Nombre: "<<paciente2[i].nombre<<endl;
cout<<endl;
cout<<"Apellido: "<<paciente2[i].apellido<<endl;
cout<<endl;
cout<<"Sexo: "<<paciente2[i].sexo<<endl;
cout<<endl;
cout<<"Edad: "<<paciente2[i].edad<<endl;
cout<<endl;
cout<<"Cedula: "<<paciente2[i].cedula<<endl;
cout<<endl;
cout<<"*************************************"<<endl;
cout<<endl;
}
cout<<"*************************************"<<endl;
getch();//Presionar una Tecla para continuar//Presionar una Tecla para continuar
system("cls");
}
}

void AtenderPaciente2(arreglo paciente2){
char atendido2;
int i;
if(vacia2()==1){// SI LA FUNCION VACIA RETORNA VALOR 1, ESTA VACIA
cout<<endl;
cout<<"No hay pacientes Registrados"<<endl;
cout<<endl;
getch();//Presionar una Tecla para continuar
system("cls");
}else{//SINO ESTA VACIA PROCESE A IMPRIMIR TODOS LOS REGISTROS RELACIONADOS

cout<<endl;
cout<<"*****     DATOS DEL PACIENTE      *****"<<endl;
cout<<"***************************************"<<endl;
cout<<endl;
for (i=0;i<nMax_n;i++) //EL TAMAÑO DEL FOR SERA EL CONTADOR DE REGISTRO
{

cout<<"Nombre: "<<paciente2[i].nombre<<endl;
cout<<endl;
cout<<"Apellido: "<<paciente2[i].apellido<<endl;
cout<<endl;
cout<<"Sexo: "<<paciente2[i].sexo<<endl;
cout<<endl;
cout<<"Edad: "<<paciente2[i].edad<<endl;
cout<<endl;
cout<<"Cedula: "<<paciente2[i].cedula<<endl;
cout<<endl;
cout<<"*************************************"<<endl;
cout<<endl;
cout<<"Desea Atender Paciente ? S/N ";
cin>>atendido2;
//este proceso elimina&destruye la posicion 1 del registro y rueda los demas
if(atendido2=='s' || atendido2=='S'){
//recorre el arreglo para destruir la primera posicion[0] moviendo los registros
for(int j=0; j<pos2-1; j++){
paciente2[j] = paciente2[j+1];
pos2--; /* Decrementa pos */
}
contAtendidos2++;
if(*paciente1[i].sexo=='f' || *paciente1[i].sexo=='F'){
contadorsexoF++;
}
if(*paciente1[i].sexo=='m' || *paciente1[i].sexo=='M'){
contadorsexoM++;
}
}
if(atendido2=='n' || atendido2=='N'){
cout<<endl;
cout<<"Al paciente "<<paciente2[i].nombre<<" "<<paciente2[i].apellido<<" le fue cancelada la cita";
//recorre el arreglo para destruir la primera posicion[0] moviendo los registros
for(int j=0; j<pos2-1; j++){
paciente2[j] = paciente2[j+1];
pos2--; /* Decrementa pos */
}
getch();
}
}
system("cls");
}
}
int submenu2(){
do{
cout<<endl;
cout<<"****** CONSULTORIO DE GINECOLOGIA  ******"<<endl;
cout<<"**                                      **"<<endl;
cout<<"**       A.- Cita                       **"<<endl;
cout<<"**       B.- Atender Pacientes          **"<<endl;
cout<<"**       C.- Consulta de Pacientes      **"<<endl;
cout<<"**       D.- Menu Principal             **"<<endl;
cout<<"**                                      **"<<endl;
cout<<"******************************************"<<endl;
cout<<endl<<" Que Operacion Desea Realizar: ";
cin>>respuesta2;
if(respuesta2!='A' || respuesta2!='B' || respuesta2!='C'){
system("cls");
}
//SWITCH DEL CONSULTO DE OFTALMOLOGIA
switch (respuesta2){
case 'A':
llenarcola2(paciente2);
break;
case 'B':
system("cls");
AtenderPaciente2(paciente2);
break;
case 'C':
system("cls");
consultarPacientes2(paciente2);
break;
case 'D':
system("cls");//Simula volver al menu principal.
break;
}
}while(respuesta2!='D');
return 0;
}
void ConsultaTotal(){
if(pos==0 || pos2==0){
cout<<endl;
cout<<"No hay pacientes Registrados"<<endl;
cout<<endl;
getch();//Presionar una Tecla para continuar
system("cls");
}else{
cout<<"**********************************"<<endl;
cout<<endl;
cout<<"Total de Pacientes Atendidso: "<<contAtendidos+contAtendidos2<<endl;
cout<<endl;
cout<<"Total de Pacientes Atendidos en OF: "<<contAtendidos<<endl;
cout<<endl;
cout<<"Total de Pacientes Atendidos en Gi: "<<contAtendidos2<<endl;
cout<<endl;
cout<<"Total de Pacientes Atendidos Del Sexo F: "<<contadorsexoF<<endl;
cout<<endl;
cout<<"Total de Pacientes Atendidos Del Sexo M: "<<contadorsexoM<<endl;
cout<<endl;
cout<<"**********************************"<<endl;
getch();
}
}
//Primero que nada el Menu Principal que llevara los Consultorios
int menuPrincipal(){
do{
system("color B");
cout<<endl;
cout<<"******* CLINICA EL VALLE **********"<<endl;
cout<<"*                                *"<<endl;
cout<<"*       A.- Oftalmologia         *"<<endl;
cout<<"*       B.- Ginecologo           *"<<endl;
cout<<"*       C.- Odontologia          *"<<endl;
cout<<"*       D.- Medicina General     *"<<endl;
cout<<"*       E.- Emergencia           *"<<endl;
cout<<"*       F.- Consulta Total       *"<<endl; // Supuestamente seran todos los pacientes atentidos
cout<<"*       G.-Salir / Exit          *"<<endl;
cout<<"*                                *"<<endl;
cout<<"**********************************"<<endl;
cout<<endl<<" Digite su Opcion por favor: ";
cin>>respuesta;
//si la Respuesta es Diferente de estos valores solo limpia y muestra el menuPrincipal
if(respuesta!='A' || respuesta!='B' || respuesta!='C' || respuesta!='D' || respuesta!='E' || respuesta!='F'){
system("cls");
}
switch (respuesta){
case 'A':
submenu1();
break;
case 'B':
    submenu2();
break;
case 'F':
ConsultaTotal();
break;
case 'G':
cout<<endl;
cout<<"    Hasta Pronto!! "<<endl;
cout<<endl;
break;
}
}while(respuesta!='G');//Mostrara el menu Mientras la respuesta no sea F
return 0;
}

int main(int argc, char *argv[]){
//Pantalla principal con datos generales del proyecto:
cout<<"\n\n \t ****************************************\n";
cout<<" \t ***                                  ***\n";
cout<<" \t ***       ESTRUCTURA DE DATOS        ***\n";
cout<<" \t ***                                  ***\n";
cout<<" \t ****************************************\n";
cout<<" \n\n\t MATERIA: Algoritmo y Programacion";
cout<<" \n\n\t\t";
getch();
system("cls");
menuPrincipal();

return 0;
}


avesudra

#9
Solucionado : Estas pasando argumentos innecesarios , deberias depurar más ese código , hay funciones que sobran, dejo el código:
Me he equivocado  :-\
Regístrate en