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




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

Дан массив, содержащий 2014 неотрицательных целых чисел, не превышающих 10 000. Опишите на одном из языков программирования алгоритм, позволяющий найти и вывести сумму всех содержащихся в массиве трёхзначных чисел, десятичная запись которых оканчивается на 9, но не на 99. Если подходящих чисел в массиве нет, программа должна вывести число –1. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из описанных.

 

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

const N=2014;

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

i, j, s: integer;

begin

for i:=1 to N do

readln(a[i]);

end.

N=2014

DIM A(N) AS INTEGER

DIM I, J, S AS INTEGER

FOR I = 1 TO N

INPUT A(I)

NEXT I

END

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

#include <iostream>

using namespace std;

#define N 2014

int main()

{

int a[N];

int i, j, s;

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

cin >> a[i];

}

алг

нач

цел N=2014

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

цел i, j, s

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

ввод a[i]

кц

кон

Python

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

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

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

a = []

n = 2014

for i in range(0, n):

a.append(int(input()))

...

 

 

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

Решение.

Программа просматривает все числа в массиве, для каждого числа проверяет его соответствие условиям и подсчитывает сумму подходящих чисел. Если после окончания просмотра сумма равна нулю, значит, подходящих чисел не было, в этом случае сумму для вывода нужно заменить на −1.

 

ПаскальАлгоритмический

S : = 0 ;

for i:=1 to N do begin

if (100<=a [i]) and (a[i]<=999) and

(a[i] mod 10 = 9) and (a [i] mod 100 <> 99) then s := s + a [ i] ;

end ;

if s=0 then s:=-1; writeln(s);

 

Можно использовать отдельную переменную для подсчёта количества найденных элементов.

S : = 0 j :=0

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

если 100<=а [i] <=999 и mod(a[i] ДО) =9 и mod(a[i] ,100) <>99 то

s : = s + a [i] j := j+1

все

кц

если j =0

то вывод -1 иначе вывод s

все

 

Допускаются и другие способы решения, если они соответствуют указанным в условии ограничениям и приводят к правильному ответу.