СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
≡ информатика
сайты - меню - вход - новости


Задания
Версия для печати и копирования в MS Word
Задание 25 № 4860

Дан массив, содержащий 70 целых чисел. Опишите на одном из языков программирования алгоритм, позволяющий найти и вывести наименьшее содержащееся в массиве положительное число, десятичная запись которого не оканчивается цифрой 7. Гарантируется, что в массиве есть хотя бы один положительный элемент, десятичная запись которого не оканчивается цифрой 7.

Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

 

БэйсикПаскаль

N=70

DIM A(N) AS INTEGER

DIM I, J, M AS INTEGER

FOR I = 1 TO N

INPUT A(I)

NEXT I

...

END

const

N=70;

var

a: array [1..N] of integer;

i, j, m: integer;

begin

for i:=1 to N do

readln(a[i]);

...

end.

Си++Алгоритмический язык

#include <iostream>

using namespace std;

#define N 70

int main(){

int a[N];

int I, j, m;

for (i=0; i<N; i++)

cin >> a[i];

...

}

алг

нач

цел N=70

целтаб а[1:N]

цел 1, j, m

нц для i от 1 до N

ввод а[i]

кц

...

кон

Python

# допускается также

# использовать две

# целочисленные переменные j, m

a = []

n = 70

for i in range(0, n):

a.append(int(input()))

...

 

В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.4) или в виде блок-схемы. В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.

Решение.

Пример решения на Паскале:

 

const N=70;

var a: array [1..N] of integer;

j, i, m: integer;

begin

for j:=1 to N do readln(a[j]);

m:= 0;

for i:=1 to N do

if (a[i] > 0) and (a[i] mod 10 <> 7) and

((a[i] < m) or (m = 0)) then

m:= a[i];

writeln(m)

end.

 

 

Пример решения на языке Си.

#include <iostream>

using namespace std;

#define N 70

void main(){

int a[N];

int i, j, m;

for (i=0; i < N; i++){

cin >> a[i];}

m = 2147483647; // Максимальное число, которое может принять целочисленный тип данных в языке Си.

В Паскале данная строка выглядела бы m := 32767;

for (i=0; i < N; i++){

if (a[i] > 0 && a[i] < m && (a[i] % 10 != 7))

{m = a[i];}

}

cout « m « endl;

}

Спрятать решение · · Видеокурс ·
Алиса Джессо 15.06.2016 17:57

m не может быть равен нулю. Вы ищете минимум среди минимальных чисел, но требуете, чтобы оно было меньше нуля и одновременно было больше нуля.

(a[i] > 0) and (a[i] < m)

Сергей Никифоров

Обратите внимание, что ещё есть условие m = 0. При помощи этого условия и учитывается, что мы инициализируем значение минимума нулём.