Вы можете использовать этот фрагмент для достижения того, что вы хотите.
int ages[10],i=0,input,flag=0,j,min,max,sum=0,avg;
do{
printf("Enter number %d: ",i+1);
scanf("%d",&input);
if(input == -1){
flag = 1;
break;
}else if(input < -2 || input > 150){
printf("Invalid number\n");
continue;
}
ages[i] = input;
i++;
}while(i < 10);
// Calculating avg, min, max
min=ages[0];
max=ages[0];
for(j=0;j<i;j++){
sum+=ages[j];
if(ages[j] > max){
max = ages[j];
}else if(ages[j] < min){
min = ages[j];
}
}
avg = sum/i;
printf(" Max: %d, Min: %d, Avg: %d \n", max,min,avg);
Примечание i
только увеличивается, а массив ages
обновляется, когда указан правильный возраст. Если был введен -1
, то мы должны выйти из цикла do while
.
В случае, если были заданы числа < -2
и > 150
, мы вызываем continue
для перехода на следующую итерацию без увеличения i
или присвоения массиву ages
нового значения.
Таким образом, мы гарантируем, что наш массив будет содержать допустимые значения. flag
указывает, был ли введен -1
в цикле. Вы можете пропустить это, если вам все равно это не нужно.