Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести минимальное значение среди трёхзначных элементов массива, делящихся на 7. Если в исходном массиве нет элемента, значение которого является трёхзначным числом и при этом кратно семи, то выведите сообщение «Не найдено».
Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования и естественного языка. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.
| Бейсик | Паскаль |
|---|---|
N = 30 DIM A(N) AS INTEGER DIM I, J, MIN AS INTEGER FOR I = 1 TO N INPUT A(I) NEXT I ... END | const N = 30; var a: array [1..N] of integer; i, j, min: integer; begin for i := 1 to N do readln(a[i]); ... end. |
| Си++ | Алгоритмический язык |
#include <iostream> using namespace std; #define N 30 int main() { int a[N]; int i, j, min; for (i = 0; i < N; i++) cin >> a[i]; ... } | алг нач цел N = 30 целтаб a[1:N] цел i, j, min нц для i от 1 до N ввод a[i] кц ... кон |
| Естественный язык | |
Объявляем массив A из 30 элементов. Объявляем целочисленные переменные I, J, MIN. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й. … | |
| Python | |
# допускается также # использовать две # целочисленные переменные j, min a = [] n = 30 for i in range(0, n): a.append(int(input())) ... | |
В качестве ответа Вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Free Pascal 2.4) или в виде блок-схемы. В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на естественном языке).
Содержание верного ответа:
| Бейсик | Паскаль |
|---|---|
MIN = 1000 FOR I = 1 TO N IF A(I)>=100 AND A(I)<=994 AND A(I) MOD 7=0 AND A(I) END IF NEXT I IF MIN < 1000 THEN PRINT MIN ELSE PRINT "Не найдено" END IF | min := 1000; for i := 1 to N do if (a[i]>=100) and (a[i]<=999) and (a[i] mod 7 = 0) and (a[i]< min) then min := a[i]; if min < 1000 then writeln(min) else writeln('Не найдено'); |
| Си | Алгоритмический язык |
min = 1000; for (i = 0; i < N; i++) if (a[i]>99 && a[i]<=994 && a[i]%7==0 && a[i] if (min<1000) cout « min « endl; else cout << "Не найдено"; | min := 1000 нц для i от 1 до N если a[i]>=100 и a[i]<=999 и mod(a[i],7)=0 и a[i] min := a[i] все кц если min < 1000 то вывод min иначе вывод "Не найдено" все |
| Естественный язык | |
Записываем в переменную MIN начальное значение, равное 1000. В цикле от первого элемента до тридцатого находим остаток от деления элемента исходного массива на 7. Если значение данного остатка равно 0 и значение текущего элемента массива больше 99 и меньше 1000, то сравниваем значение текущего элемента массива со значением переменной MIN. Если текущий элемент массива меньше MIN, то записываем в MIN значение этого элемента массива. Переходим к следующему элементу. После завершения цикла проверяем значение переменной MIN. Если оно меньше 1000, то выводим его, иначе выводим сообщение «Не найдено». | |


Ошибка в строке
if (a[i]>99 && a[i]<=994 && a[i]%7==0 && a[i]
Вместо 994 должно быть 999
Ни одно из целочисленных значений в промежутке [995; 999] не делится на 7, поэтому можно использовать как условие <= 994, так и <=999, так и, например, <=995.