Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от 0 до 1000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести максимальное значение среди двузначных элементов массива, не делящихся на цифру старшего разряда. Если в исходном массиве нет элемента, значение которого является двузначным числом и при этом не кратно цифре старшего разряда данного числа, то выведите сообщение «Не найдено».
Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования и естественного языка. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
| Бейсик | Паскаль |
|---|---|
N = 20 DIM A(N) AS INTEGER DIM I, J, MAX AS INTEGER FOR I = 1 TO N INPUT A(I) … END | const N = 20; var a: array [1..N] of integer; i, j, max: integer; begin for i := 1 to N do readln(a[i]); … end. |
| Си++ | Алгоритмический язык |
#include <iostream> using namespace std; #define N 20 int main() { int a[N]; int i, j, max; for (i = 0; i < N; i++) cin >> a[i]; … } | алг нач цел N = 20 целтаб a[1:N] цел i, j, max нц для i от 1 до N ввод a[i] КЦ … КОН |
| Python | |
# допускается также # использовать три # целочисленные переменные j, p, max a = [] n = 20 for i in range(0, n): a.append(int(input())) ... | |
Пройдёмся циклом по массиву. Для каждого элемента будем проверять, удовлетворяет ли он заданным условием. Если да, то сравним с лучшим из найденных ответов. Изначально max проинициализируем -1, и тогда если и после выполнения цикла в этой переменной будет -1, то в массиве нет чисел, удовлетворяющих условию.
Решение на Паскале:
max := -1;
for i := 1 to N do
if ( (a[i] >=10) and (a[i] <= 99) and (a[i] > max) and (a[i] mod (a[i] div 10) <> 0) ) then
max := a[i];
if max = -1 then
writeLn('Не найдено')
else
writeLn(max);
Решение на Cи:
#include <stdio.h>
#define N 20
void main()
{
max = -1;
for (i = 0; i < N; i++){
if (a[i] >= 10 && a[i] <= 99 && a[i] > max && (a[i] % (a[i] / 10) != 0)){
max = a[i];
}
}
if (max == -1){
cout << "Не найдено";
}
else{
cout << max << endl;
}

