Это из-за ||
в вашем состоянии.Посмотрите на условие, которое вы установили, т.е. if (poste[i] =='P' || (age[i] > ageProgMax))
.В нем говорится о сохранении нового значения в ageProgMax
, если значение (age[i] > ageProgMax)
или poste[i] =='P'
становится истинным.Таким образом, для последней записи, т.е. 29
, даже если (age[i] > ageProgMax)
равно false, poste[i] =='P'
имеет значение true и вызывает перезапись ageProgMax
60
на 29
.
Вы можете исправить свою программу следующим образом.
int main()
{
char poste[] ={'P', 'P', 'O', 'A', 'P', 'A', 'P', 'P'};
int nbCafe[] ={5, 1, 3, 0, 5, 1, 0, 2};
int age[] ={25, 19, 27, 22, 49, 24, 60, 29};
int nbPers = sizeof(age) / sizeof(int);
int i;
int ageProgMax = 0;
for (i = 0; i < nbPers; i++)
{
if (poste[i] =='P' && (age[i] > ageProgMax))
{
ageProgMax = age[i];
}
}
printf ("Max age of programmers : %d\n", ageProgMax);
return 0;
}