Disabled: CONTROL_PREGNANT, ORDER_QUEUE and CONTROL_AGE
( p[i].name )
when the vaccinate( )
function on line 34 is executed?//#define CONTROL_AGE
//#define CONTROL_PREGNANT
//#define ORDER_QUEUE
using namespace std;
struct Patient {
char name[40];
#ifdef CONTROL_AGE
int age;
#endif
char gender;
#ifdef CONTROL_PREGNANT
bool pregnant;
#endif
bool vaccinated;
} p[4] = { { "Alice", 'f', false },
{ "Maria", 'f', false },
{ "Jessica", 'f', false },
{ "Vivian", 'f', false } };
#ifdef ORDER_QUEUE
void orderPatientQueue() {
//This algorithm sorts the p patients array according to age.
//At the end of the algorithm, the oldest patient becomes the first element of the array
//and the youngest patient the last.
}
#endif
void vaccinate() {
#ifdef ORDER_QUEUE
orderPatientQueue ( );
#endiF
#ifdef CONTROL_AGE
int vaccinateAgeLimit = 40;
#endif
#ifdef CONTROL_PREGNANT
int pregnantTotal = 0;
#endif
int i, n = 4;
for ( i = 0; i < n; i ++ ) {
if ( !p[i].vaccinated ) {
#ifdef CONTROL_AGE
if ( p[i].age > vaccinateAgeLimit ) {
#endif
#ifdef CONTROL_PREGNANT
if ( !p[i].pregnant ) {
#endif
printf( "patient's name: %s \n", p[i].name );
#ifdef CONTROL_AGE
printf( "Age: %d \n", p[i].age );
#endif
printf( "Gender: %c \n", p[i].gender );
#ifdef CONTROL_PREGNANT
if ( p[i].gender == 'f' && p[i].pregnant )
printf( "Pregnant: Yes \n" );
#endif
p[i].vaccinated = true;
break;
#ifdef CONTROL_PREGNANT
} else {
printf( "Pregnant pacients cannot be vaccinated! \n" );
pregnantTotal ++;
}
#endif
#ifdef CONTROL_AGE
} else
printf( "Insufficient age to vaccinate: %d \n", p[i].name );
#endif
}
}
}
int main(){
vaccinate();
return 0;
}