Могу предложить такой вариант - в цикле repeat число вводится как строка и посимвольно проверяется. если введено неправильно - возвращает на ввод, если правильно - преобразует строку в число для дальнейшей работы.
var a,err: integer; s: string; i: byte; error: boolean; begin repeat error:=true; writeln ('введите число'); readln (s); for i:=1 to length(s) do begin if (ord(s[i])<48) or (ord(s[i])>57) then begin error:=false; writeln ('введено не число'); break; end end; until error=true; val(s,a,err); writeln ('введено число ',a); end.
Пример: введите число 12O введено не число введите число 120 введено число 120
var
a,err: integer;
s: string;
i: byte;
error: boolean;
begin
repeat
error:=true;
writeln ('введите число');
readln (s);
for i:=1 to length(s) do begin
if (ord(s[i])<48) or (ord(s[i])>57)
then begin error:=false; writeln ('введено не число'); break; end
end;
until error=true;
val(s,a,err);
writeln ('введено число ',a);
end.
Пример:
введите число
12O
введено не число
введите число
120
введено число 120
int GetMax(int n, int* A);
int GetMin(int n, int* A);
int main() {
std::cout << "N=";
int N, i;
std::cin >> N;
int A[N+1];
// заполнение массива
for(i = 1; i <= N; i++) {
std::cout << "A[" << i << "]=";
std::cin >> A[i];
}
// чётные индексы
for(i = 1; i <= N; i++) {
if (i % 2 == 0) {
A[i] = GetMax(i, A);
}
}
// нечётные индексы
for(i = 1; i <= N; i++) {
if (i % 2 == 1) {
A[i] = GetMin(i, A);
}
}
std::cout << "Результат:" << '\n';
for(i = 1; i <= N; i++)
std::cout << A[i] << ' ';
return 0;
}
int GetMax(int n, int* A) {
int max = A[1];
for(int i = 1; i <= n; i++)
if (A[i] > max)
max = A[i];
return max;
}
int GetMin(int n, int* A) {
int min = A[1];
for(int i = 1; i <= n; i++)
if (A[i] < min)
min = A[i];
return min;
}