Рубрики
ЕГЭ Информатика

Вариант №1 На вход IijwipaMMe подаются сведения об участниках автопробега ретро — автомобилей

Вариант №1

На вход IijwipaMMe подаются сведения об участниках автопробега ретро — автомобилей. В первой строке сообщается количество участников Л’, каж­дая из следующих NСтрок имеет формат: <Фамилия владельца><Год выпуска автомобиля><Номер региона>, где <Фамилия владельца >— строка, состоящая не более чем из 20 символов, <Год выпуска автомоби­ля >— четырёхзначное число, <Номер региона >— не более чем двузнач­ное число. <Фамилия владельца>и <Год выпуска автомобиля >, а также <Год выпуска автомобиля >и <Номер региона >разделены одним пробе­лом. Пример входной строки:

Соловьёв 1957 61

Требуется написать как можно более эффективную программу, кото­рая будет выводить на экран информацию, из какого региона было меньше всего участников (таких регионов может быть несколько). При этом необ­ходимо вывести информацию только по тем регионам, из которых прибыл хотя бы один участник. Следует учитывать, что /V ≥ 1000.

Вариант №2

В городе M был проведен мониторинг цен по трём видам продуктовых товаров: сахару, муке и гречневой крупе в различных магазинах.

Напишите эффективную по времени работы и по используемой памя­ти программу, которая будет определять для каждого из отобранных ви­дов продуктовых товаров, сколько магазинов продают его дешевле всего. На вход программе сначала подаётся число данных о стоимости продукта. В каждой из следующих N строк находится информация в формате: <На­звание магазинах Улица><Название продукта><Цена>, где <Назва­ние магазина >— строка, состоящая не более чем из 20 символов без пробелов; <Улица >— строка, состоящая не более чем из 20 символов без пробелов; <Название продукта >— одно из слов: сахар, мука, кру­па; <Цена> — целое число в диапазоне от 1000 до 5000. обозначающее стоимость одного килограмма продукта в копейках. <Название магазн - Iia >и <Улица >, <Улица >и <Название продуктам а также <Название продукта>и < I Iena >разделены ровно одним пробелом. Пример входной строки:

Тавр Будённовский мука 1384

Про! рамма должна выводить через пробел 3 числа — количество ма­газинов, продающих дешевле всего сахар, муку и гречневую крупу соот­ветственно. Если какой-либо из товаров нигде нс продавался, то следует вывести 0.

Пример выходных данных:

35 12 24

Вариант №3

На вход программе подаются сведения о сдаче экзаменов учениками 9-х классов некоторой средней школы. В первой строке сообщается ко­личество учеников Л’. каждая из следующих NСтрок имеет формат: <Фа­милия ><Имя><оценки >. где <Фамилия>— строка, состоящая не бо­лее чем из 20 символов. <Имя> — строка, состоящая не более чем из 15 символов. <оценки>— через пробел три целых числа, соответствую­щих оценкам по пятибалльной системе. <Фамилия >и <Имя>, а также <Имя> и <оценки >разделены одним пробелом. I! ример входной строки: Иванов Сергей 4 5 4

Требуется написать программу, которая будет выводить на экран фа­милии и имена учеников, средний балл которых не менее общего среднего балла. Требуемые имена и фамилии можно выводить в произвольном по­рядке.

Вариант №4

На вход программе подаются 365 строк, которые содержат информа­цию о среднесуточной температуре всех дней 2009 года в городе Ростове- на-Дону. Формат каждой строки следующий: сначала записана дата в ви­де dd.ιππι. затем через пробел записано значение температуры — целое число (возможно со знаком минус). Информация отсортирована по зна­чению температуры Пример входной строки:

15.02-1

Требуется написать как можно более эффективную программу, кото­рая будет выводить па экран информацию о трёх самых жарких и трёх са­мых холодных месяцах 2009 года. Найденные значения следует выводить н отдельной строке для каждого месяца, упорядоченные по убыванию тем­пературы. в виде: номер месяца н значение среднемесячной температуры через пробел. Предполагается, что все значения среднемесячных темпе­ратур попарно различны

Вариант №5

На вход программе подаются сведения о результатах олимпиады по информатике. В первой строке сообщается количество участников А’. каж­дая из следующих Arстрок имеет формат: <Фамилия ><Номер школы ><Баллы >, где <Фамилия >— строка, состоящая не более чем из 20 сим­волов, <Номер школы >— не более чем двузначный номер, <Баллы >— количество набранных баллов (целое число в диапазоне от 0 до 100). Все элементы одной строки отделены друг от друга одним пробелом. Пример входной строки:

Иванов 23 58

Требуется написать как можно более эффективную программу, кото­рая будет выводить на экран в порядке возрастания номеров школ список, каждая строка которого содержит номер школы и максимальный набран­ный балл участниками олимпиады из этой школы. Номера школ из кото­рых не было участников не выводятся.

Вариант №6

На вход программе подаются сведения о багаже пассажиров некото­рого авиарейса. В первой строке сообщается количество пассажиров JV, каждая из следующих NСтрок имеет формат: <Фамилия ><количество вещей ><вес>, где <Фамилия >— строка, состоящая не более, чем из 20 символов, <количество вещей >— число вещей в багаже. <вес> — общий вес багажа в килограммах. Все элементы одной строки отделены друг от друга одним пробелом Пример входной строки:

Иванов 3 18.2

Требуется написать как можно более эффективную программу, кото­рая будет выводить на экран список пассажиров, средний вес одной вещи багажа которых отличается не более чем на 0,5 кг от общего среднего веса одной вещи.

Вариант Кя7

Вступительные испытания в некоторый вуз состоят из трёх экзаме­нов: математика (максимальный балл — IOk информатика (максималь­ный балл — 10), литература (максимальный балл — 5). На вход про­грамме подаются сведения о сдаче этих экзаменов абитуриентами. В пер­вой строке вводится количество абитуриентов Л, во второй — количе­ство мест К (К < N), на которые эти абитуриенты претендуют. Каждая из следующих NСтрок имеет формат: <Фамилия><оценка I ><оцен- ка2><оценкаЗ>, где <Фамилия>— строка, состоящая не более чем из 20 символов, — числа от 0 ди максимальной оценки по пред­мету соответственно. (Ноль ставится в случае, если экзамен не сдавался, например, после полученной на предыдущем экзамене двойки. Все баллы, большие 2. считаются удовлетворительными.) Пример входных строк:

Иванов 89 3

Петров 200

Требуется написать программу, которая определяла бы по имеющим­ся данным количество абитуриентов, набравших проходной балл в данный вуз. (Проходным называется такой балл, набрав который, абитуриент, при отсутствии неудовлетворительных оценок, попадает в К лучших, которые должны быть зачислены на 1 курс) Считается, что абитуриенты, получив­шие только удовлетворительные оценки, обязательно присутствуют.

Вариант №8

На вход программе подаётся натуральное число. V. Необходимо ука­зать количество различных слов длиной N,Состоящих только из симво­лов открывающих и закрывающих скобок, в которых скобки расставлены в соответствии с общепринятыми в математике правилами. (Под словом в данном случае понимается произвольная последовательность символов.)

Вариант №9

-V человек покупают билеты и трёх кассах. Известно время, затрачи­ваемое на обслуживание каждого человека. Распределите людей в 3 оче­реди так. чтобы общее время, потраченное на покупку билетов, было наи­меньшим.

На вход протрамме в первой строке подаётся натуральное число NКоличество человек. Затем каждая из NСледующих строк имеет формат: <Фамилия >— строка, состоящая не более чем из 20 символов, <вре­мя >— натуральное число, представляющее собой время в минутах. <Фа­милия >и <время >разделены одним пробелом. На выходе программы выводится общее время, потраченное на покупку билетов, и сформиро­ванные очереди в каждую из трёх касс последовательно друг за другом.

Вариант №10

При проведении маркетинговых исследований в книжном магазине каж­дому изданию согласно рейтингу продаж присваивалось от 0 до 100 бал­лов. Для определения самых популярных изданий сначала из них отбира­ются 55%, с наиболее высоким рейтингом. В случае. когда у издания, вхо­дящего в 55% оказывается количество баллов такое же. как и у следующих за ним в итоговой таблице, решение по данному изданию и всем изданиям, имеющим с ним равное количество баллов, определяется следующим об­разом: все издания считаются популярными, если набранные ими баллы больше четверти максимально возможных; издания не признаются попу­лярными, если набранные ими баллы не превышают 3/4 от максимально возможных.

Напишите эффективную по времени работы и по используемой памя­ти программу, которая по результатам маркетинговых исследований будет определять, какой минимальный балл нужно было набрать, чтобы стать издание могло войти в число наиболее популярных.

На вход программе сначала подаётся количество изданий, отобранных для исследования. В каждой из следующих NСтрок находится результат одного из изданий в формате: <Фамилия автора ><Код книги><Год из­дания ><Баллы >, где <Фамилия автора>— строка, состоящая не более чем из 25 символов, <Код книги >— строка, состоящая не более чем из

10 символов, <Год издания >— число от 1900 до 2010, <баллы>— целое число от 0 до 100 набранных изданием баллов. <Фамилия автора >. <Код книги >, <Год издания >и <Баллы> разделены одним пробелом. Пример входной строки:

Бунин Б2341 1999 60

I! рограмма должна выводить минимальный балл издания. Гарантиру­ется, что хотя бы одно издание по указанным правилам определить можно.

Ответы

§ I. Системы счисления

№ вар.

№ задания

I

2

3

4

5

6 I 7

8

I

2

2

2

3

IlOOl(X)

30

3

2,3,6

2

3

3

1

2

HOllO

19

4

3.5,15

3

3

4

4

2

731

342

3

9

4

1

3

1

3

351

572

7

5,10,20

5

1

3

1

2

2

1000

4

3

6

4

3

2

3

3

IOlll

5

4

7

2

3

1

3

40

13

31

6

8

3

3

1

4

118

79

7,21

5

9

3

2

4

2 274

1IOOOOl

5

7.15,23

IO

1

3

3

3

407

10

8

18

§ 2. Информация и её кодирование

Л2 задания

Вар.

1

2

3

4

5

6

7

8

I

4

4

4

3

733

6

64

120

2

3

4

2

1

3AAD7

4

128

1200

3

3

1

3

1

261

600

4

81.92

4

1

2

2

1

394

400

3

0.32

5

2

2

3

3

ЛВ89

341

4

11520

6

2

3

3

2

DBCA

93

729

307200

7

4

3

2

3

Ul

1440

1024

3600

8

3

4

2

3

173

130

25

185

9

1

2

4

4

CADB

180

15

2.5

IO

I

3

3

I

BCEAD

135

28

64

§ 3 Обработка и хранение информации

№ вар.

№ задания

I

2

3

4

5

1

4

14

1

2

4

2

4

2

3

3

2

3

2

11

2

2

4

4

3

12

3

3

4

5

2

2

1

4

2

6

3

7

2

3

3

7

3

35

-2

1

4

8

3

16

4

2

2

9

1

3

-4

3

1

IO

2

6

-7

4

3

§ 4 Программные средства информационных и ком­муникационных технологий. Телекоммуникаци­онные технологии

№ вар.

Ks Задания

1

2

3

4

5

6

1

3

3

4

3

ГЖЕБАВД

3124

2

2

1

3

1

ГВЕДБА

4312

3

4

2

А -3:

Б — 1;

В-2

4

ВАДЕЖБГ

2314

4

1

4

А-2;

Б — 3;

B-I

3

ДАЖБЕГВ

3214

5

4

2

2

1

ВГАБ

3142

6

3

3

3

3

ВАГБ

2314

7

1

2

3

3

БАГВ

4123

8

2

1

4

2

2341

3214

9

4

1

4

1

ЕЖАДГВБЗ

BCAD

10

3

4

3

2

ВДБАЕГ

CBDA

§ 5 Основы логики

Nt вар.

Ns задания

I

2

3

4

5

6

I

2

4

1

2

14

Лл

2

2

1

1

3

30

ЛР

3

2

1

2

2

-1

C

4

3

4

4

3

7

КНПФ

5

2

4

1

4

Olll

Чв

6

1

2

4

4

1001

БС

7

2

1

4

2

6

СДПА

8

3

1

2

1

-2

ММВВЛЛББ

9

1

3

4

3

-4

АГМР

IO

2

2

1

4

7

MTKJI б

§ 6 Основы теории игр

Ne

Ns задания

Вар.

I

2

3

I

Второй игрок

Первый игрок

Саша

2

Перный игрок

Первый игрок

Первый игрок

3

Первый HipoK

Второй игрок

Перный игрок

4

Второй игрок

Первый трок

Первый игрок

5

Первый игрок

Первый игрок

Первый игрок

6

Второй игрок

Второй H∣poκ

Первый игрок

7

Первый H∣poκ

Второй игрок

Первый игрок

8

Второй игрок

Второй игрок

Первый нгэок

9

Первый игрок

Первый игрок

Первый игрок

10

Первый игрок

Второй игрок

Первый игрок

§ 7 Элементы теории алгоритмов

№ вар.

Ns Задания

1

2

3

4

5

6

I

3

3

122112

1

31332

D

2

3

3

1212

4

4142

RPQR

3

2

2

2

1

ВД4

73

4

4

3

3

26

П9

17

5

4

3

323

-22

176

6

2

4

13124

1

4

АННА

7

3

4

4

20

8

9

8

2

3

1312

15000

3

17

9

3

2

9

32

2

14

10

3

3

31

7

5

213

§ 8 Основные конструкции языка программирования

Основные конструкции языка программирования. Ответы к заданиям 5 и 6

Вариант I

1) Например, для чисел Т= 1, У = — 1 (любой точки, ко­торая лежит внутри полосы 0 ≤ Х≤ 2 и ниже оси абсцисс) программа выдаёт сообщение о том. что точка принадлежит указанной области, в то время, как это неверие.

Для точек, которые лежат выше прямой У — х или ниже этой прямой, но левее прямой. т = 2. программа не будет выдавать никакого сообщения.

2) Возможная доработка программы на языке Turbo Paskal: var x, y: real; begin

Readln(x, у);

If (у <= х) and (х <= 2) and (у >= 0) then

Writleln (’принадлежит’)

Else

Writein (’не принадлежит’) end. ——————————— Задача сводится к нахождению номера первою из макси­мальных элементов массива Л. Пример правильной про­граммы на языке Turbo Paskal: const N = 30;

Var A: array[1..N] of integer;

I, nom : integer;

Begin

For i:=l to N do readln(A[i]);

Nom:=l;

For i:=2 to N do if A[i]>A[nom] then noπr.=i;

Writeln(nom) end.

Вариант 2

5

1) Например, для чисел Х= 0,5, У= -0,5 (любой точки, которая лежит внутри треугольника, ограниченного линия­ми Х= 0, У= 0 и У = Х — 2) программа выдаёт сообщение о том. что точка нс принадлежит указанной области, в то вре­мя, как это неверно.

Для точек, которые лежат внутри полосы, ограниченной ли­ниями Х= -2, Х= 0, и выше прямой У= 0. программа вы­даёт сообщение о том, такие точки принадлежит указанной области, вто время, как это неверно.

Для точек, которые нс лежат в .заштрихованной области и не лежат внутри полосы, ограниченной линиями Х= -2, Х = 0 и выше прямой У —0. программа не будет выдавать никакого сообщения.

2) Возможная доработка программы на языке Turbo Paskal: var x, y: real;

Begin

Readln(x, у);

If (у >= х-2) and (х >= -2) and (у <= 0) then writleln (’принадлежит’)

Else

Writein (’не принадлежит’) end.

6

Задача сводится к нахождению целой части среднего зна­чения элементов массива А. Пример правильной програм­мы на языке Turbo Paskal:

Const N = 31;

Var A: array[ 1..N] of integer;

I, S-Teπ,. : integer;

Begin

For i:=l to N do readln(A[i]);

S_Teni: =0;

For i:=l to N do S. Tem:= S√Γem*A[i];

S-Temz=S-Tem div N;

Writein(S-Tem)

End.

Вариант 3

5

I) Например, для чисел Х= -0,5, У= 0,5 (любой точ­ки, которая лежит внутри окружности, но выше параболы и правее оси ординат) программа не будет выдавать никакого сообщения, вто время, как точка с указанными координа­тами не принадлежит указанной области.

2) Возможная доработка программы на языке Turbo Paskal: var xty: real;

Begin

Readln(x, у);

If (y>≡sqr(x)) and (sqr(x)+sqr(y)<=l) and Cx>=O) then

Writleln (’принадлежит’)

Else

Writein (’не принадлежит’) end.

6

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

Пример правильного фрагмента программы на языке Turbo Paskal:

Min := 100;

For i := 1 to N do

If (a[i] >= 50) and (a[i] < min) then min := a[i] ;

Uriteln(min);

____________________ Вариант 4_______________________

1) Например, для чисел Х= 2, У = I (любой точки, ко­торая лежит ниже параболы У= х2. ио выше параболы У= 1-х2) программа не будет выдавать никакого сооб­щения, в то время, как точка с указанными координатами нс принадлежит указанной области

2) Возможная доработка программы на языке Turbo Paskal: var x, y: real;

Begin

Readln(x, у);

If (y<=sqr(x)) and (y<≡l-sqr(х))

And (y>=0) then

Writlθln (’принадлежит’)

Else

Writein (’не принадлежит’)

End._________________________________________________

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

Пример правильного фрагмента программы на языке Turbo Paskal:

Max := 10;

For i := 1 to N do

If (a[i] <= 100) and (a[i] > max) then

Max := a[i] ;

Writein(max);

_____ Вариант 5

1) Например, дня чисел X = -0.5. У~~-0,5 (любой точ­ки. которая лежит внутри квадрата, ограниченного прямы­ми у = 1. У= 0, Х = -1 и Х= 0) программа выдаёт сооб­щение о том, что точка принадлежит указанной области, в то время, как это неверно.

Для точек, которые лежат ниже графика функции // = Х3 Или выше прямой У= 1, программа не будет выдавать ни­какого сообщения.

2) Возможная доработка программы на языке Turbo Paskal: var x, y: real;

Begin

Readln(x, у);

If (у >= x*x*x) and ((x >= 0) and (у <= 1) or (х >= -1) and (у <= 0)) then

Writleln (’принадлежит’)

Else

Writein (’не принадлежит’) end.

Задача сводится к подсчёту максимального количества подряд идущих нулевых элементов в массиве Л, при усло­вии, что хотя бы один такой элемент существует.

Пример правильной программы на языке Turbo Paskal: const N = 30;

Var A: array [1…М] of integer;

I, kl, k2: integer;

Begin

6 for i:=1 to M do readln(A[i]);

Kl:=l; k2:=l;

For i:=2 to N do begin

If (A[i]=l) and (A[i-l]=l) then kl:=kl+l else kl:=l;

If kl>k2 then k2:=kl;

End;

Writein(k2)

End.

ВариАнт 6

I) Например, для чисел Х= -1.6, У= -0, 5 (любой точ­ки, которая лежит внутри заштрихованной области в IIl квадранте) программа выдаёт сообщение о том, что точ­ка не принадлежит указанной области, в то время, как это неверно. Для точек второго и третьей) квадрантов, которые лежат ниже графика функции У= лт(2х) и выше пря­мой У= J, программа выдаёт сообщение о том. что такие точки принадлежит указанной области, в то время, как это неверно. Для точек, которые лежат ниже графика функции У = Sin(2X)И ниже прямой У = х, программа нс будет вы­давать никакого сообщения.

2) Возможная доработка программы на языке Turbo Paskak var x, y: real;

Begin

Readln(x, у);

If (у >= х) and ((y <= sin(2*x)) or

(у >= sin(2*x)) and (у <■ 0)) then Writleln (’принадлежит’)

Else writein (’не принадлежит’) end.

Задача сводится к подсчёту максимального количества подряд идущих элементов в массиве Д, модуль разности между которыми и числом 210 отличается нс более чем на 2 единицы, при условии, что хотя бы один такой элемент су­ществует.

Пример правильной программы на языке Turbo Paskak const N = 30;

Var A: array[1..N] of integer;

I, kl, k2: integer;

Begin

For i:=l to N do readln(A[i]);

Klι=l; k2:=l;

For i:=2 to N do begin

If (abs(210-A[i])<≡2) and (abs(210-A[i-l])<≡2) then kl:=kl+l else kl:=l;

If kl>k2 then k2z≡kl;

End;

Writeln(k2)

______________________ Вариант 7_______________________

1) 1 !апример, для пар чисел (5:1). (3,3) (любой пары чи­сел, лля которых разность первых координат отличается от разности вторых координат полей только знаком) програм­ма выдаёт сообщение о том, что ферзь не угрожает полю, в то время, как это неверно.

2) Возможная доработка программы на языке Turbo Paskal: var kt lt mt n : byte;

Begin

Readln(ktl, mtn);

If (k=m) or (l=n) or (abs(k-m)=abs(l-n)) then write (’угрожает*)

Else

Write(’не угрожает’); end.

Найдём сумму элементов каждой из двух диагоналей и сравним полученные суммы. Если значения сумм совпадут, то в цикле по IБудем сравнивать найденное значение с сум­мой каждой i-ой строки и г-го столбца. В случае, если по­лучено хотя бы одно несовпадение, выходим из цикла и по­лучаем отрицательный ответ. В противном случае — ответ положительный.

Пример правильной программы на языке Turbo Paskal: const N = 30;

Var A: array[1..N, 1..N] of integer;

I, j. S, Slt S2: integer; f: boolean;

Begin

For i:=l to N do

For j:=l to N do

Readln(A[i, j]);

Sr=O;

Slr-O;

For 1:-1 to N do begin

Sr=S+A[iti];

Slr=Sl+A[itN-i+l]

End;

F:=S=Sl;

If f then

For i:=l to N do begin

51:=0; S2:=0;

For j:=l to N do begin

Sl:=Sl+A[i, j]; S2:=S2+A[j, i]

End;

If (S<>S1) or (S<>S2) then begin f:=false; break;

End;

End;

If f then writeln(,fla,) else writeln(’нет’) End._____________

_________ Вариант 8_______________________

I) Например, для пар чисел (4;5), (6.6) (любой пары чи­сел, для которых выполняется первое условие: К — тп= 2 и I — п1) программа выдаёт сообщение о том, что конь нс угрожает полю, в то время, как это неверно.

Для всех пар чисел, при которых программа должна выда­вать положительный ответ, программа либо выдаст сооб­щение о том. что конь не у1рожает полю, либо не выдаёт никакого сообщения.

Для всех пар чисел, при которых HpoipaMMii должна выда­вать отрицательный ответ, программа не выдаёт никакого сообщения.

2) Возможная доработка программы на языке Turbo Paskal: var k, 1, ш, n : byte;

Begin

Readln(k, l,m, n);

If (k-m=2) and (l-n=l) or (k-m=l) and (l-n=2) then write (,угрожает’) else

Write(’не угрожает’);

End.

Найдём минимальный элемент в текущей строке и номер столбца, в котором этот элемент находится. Поместим най­денный номер в специально созданный одномерный массив. Прежде чем перейти к поиску минимального элемента в следующей строке, проверим, находился ли ранее н столбце с найденным номером минимальный элемент одной из уже просмотренных строк. Если такой номер встречался ранее, то переходим на конец программы, предварительно отоб­разив сообщение «нет», то есть условие задачи не выпол­няется. Если в результате поиска минимальных элементов но всех строках, номера столбцов, в которых они находятся, не совпали, то будет выведено сообщение <да >.

Пример правильной программы на языке Turtio Paskak const N = 20;

Var A: array[1..N, 1..N] of integer;

Var С: array[1..И of integer;

I. j* S. Min: byte; f: boolean; Min: integer; begin

For i:»l to N do

For j:=l to M do readln(A[i, j]);

For i:=l to N do begin

Minz=A[i, l]; S. Mιnι≡l;

For j:=2 to N do

If A[i, j]

For j:=1 to i do

If C[j]=S-Min then begin f:=false; break;

End;

If f then C[i]:=S-Min else break;

End;

If f then writeln(’да’) else wrιteln(’нет’) end.

____________________ ВаРиант 9_______________________

1) Значение переменной S = 36.

2) Возможная доработка программы с использованием од­ного цикла на языке Turbo Paskal:

Const n≡6;

Var i, j: byte;

A: array[1..n] of integer;

Begin

For i:=l to n do A[i]∑∙i;

For i:=2 to n do A[i] ∙.=A[i-l] +A[i]

End._________________________________________________

Примем за максимальную среднюю скорость число 0 и по­рядковый номер искомого автомобиля положим равным 0. В цикле, вводя расстояние (S) и время (t), затраченное каждым из автомобилей, будем находить среднюю скорость г сравнивать с текущей максимальной скоростью. Если вновь найденная средняя скорость окажется больше, то значение максимальной скорости заменим на найденное, а номер искомого автомобиля заменим на текущее значение параметра цикла. По окончании цикла будут найдены мак­симальная скорость из средних скоростей движения и по­рядковый номер автомобиля, имевшего максимальную из средних скоростей движения.

Пример правильной программы на языке Turbo Paskal: const N = 30;

Var S, t of real;

I, nβMax: byte; Max: real;

Begin

Max :=0; n_Max:=0;

For i:=l to N do begin readln(S, t);

S:«S/t;

If S>Max then begin Maxi=S; n_Max:=i end

End;

Urite(Max); end.

____________________ Вариант 10______________________

1 !Значениепеременной S = 72.

2) Возможная доработка программы на языке Turbo Paskal: const n=7;

Var i: byte; S: integer;

A: array[1..n] of integer;

Begin

A[l] :=1;

For i:=2 to n do A[i]:«a[i-l]*i;

For i:=4 to n do A[i]:=i*(i-l)

S:=A[n-l] +A[n] ;

End.

Найдём номер минимального и максимального элементов данной последовательности. Затем найдём сумму тех эле­ментов последовательности, номера которых отличаются от найденных номеров минимального и максимального эле­ментов. При подсчёте среднего арифметического найден­ную сумму разделим на П — 2 — число элементов последо­вательности за исключенном одного минимального и одного максимального элементов.

Пример правильной программы на языке Turbo Paskal: const N = 10;

Var A: array[1..N] of real;

I, n_Min, n_Max: byte; Min, Max, Sr: real; begin

For i:«l to M do readln(A[i] ) ;

Min:«A[l]; n_Min:=l; Max:=A[l]; n_Max:=l;

For i:=2 to N do begin

If A(i]

End;

If A[i]>Max then begin

Max:=A[i]; n. Max:=i

End

End;

For i:=l to N do

If (i<>n. Min) and (i<>n. Max) then

Sr:=Sr+a[i];

Sr:=Sr/(n-2); write(Sr);

End.

§ 9. Разработка программ

Вариант I

Согласно условию, нам нужно определить только количество участников но каждому региону. Так как. согласно условию, номер региона состоит нс более чем из двух цифр, то всего может быть представлено не более 99 регионов (с номерами от 1 до 99). По­этому можно ввести массив из 99 элементов, fc-й элемент массива будет ячейкой-счётчиком, в которой накапливается число участ­ников от региона с номером К. сначала все элементы этого масси­ва обнуляются.

Вариант 2

Программа должна читать все входные данные один раз. не за­поминая их в массиве, размер которого соответствует числу ма­газинов или диапазону цен. Во время чтения данных определяют­ся минимальная цена по каждому наименованию товара и коли­чество магазинов, продающих его по этой цене. Для этого можно использовать б переменных или соответствующие массивы. Как минимум, программа должна решать задачу хотя бы для одного частного случая (например, когда по каждому наименованию то­вара минимальная иена встречается ровно в одном магазине).

Замечание.

Программа должна работать верно для любых входных данных произвольного размера и находить ответ, не сохраняя входные данные в массиве, размер которого соответствует числу N (коли­чество данных мониторинга) или диапазону цен (5000). Програм­ма должна просматривать входные данные один раз. используя для нахождения ответа два массива из 3-х (8 — 9-и) элементов каждый или 6 соответствующих переменных.

При оценивании эффективности программы на экзамене баллы снижаются: если программа работает верно, но входные данные или только цены запоминаются в массиве, в том числе возможно в массиве (трёх массивах) с индексами от 0 до 5000. обознача­ющем количество магазинов, продающих товар но соответствую­щей цене, или входные данные считываются несколько раз; вместо алгоритма поиска минимума используется сортировка всех цен.

Вариант 3

Программа запоминает фамилии, имена и средний балл в масси­ве записей (или в нескольких массивах), сразу подсчитывая об­щую сумму баллов SЗа все экзамены. Далее определяется общий средний балл

Затем за дополнительный просмотр этого массива распечатыва­ется информация о тех учениках, которые набрали средний балл не менее общего среднего балла.

Вариант 4

Определяем массив TИз 12-тн элементов, каждый элемент ко­торого будет хранить среднемесячную температуру соответствую­щего месяца. Сначала все элементы этого массива обнуляем. Да­лее. по мере обработки каждой строки входных данных, средне­суточную температуру из очередной строки добавляем к элементу массива соответствующего месяца.

После обработки всех 365 строк fc-ый элемент массива содержит сумму среднесуточных температур fc-ro месяца. Затем, разделив Ar-ый элемент массива TНа количество дней в Ar-ом месяце и со­хранив результат в ⅛-omэлементе, мы получим массив, содержа­щий значения среднемесячных температур каждого месяца.

Определяем дополнительный массив номеров месяцев А/, состо­ящий из 12 элементов (&-ый элемент этого массива равен А). За­тем сортируем массив среднемесячных температур TПо убыва­нию, при этом каждый раз меняя местами Z-ый и J-ый элементы массива Т, меняем местами?-ый и д-ый элементы массива MИ, наконец, выводим на экран в шести строках первые три элемента и последние три элемента массивов TИ Л/ через пробел.

Вариант 5

Так как, согласно условию, номер школы состоит нс более чем из двух цифр, то всего может быть представлено не более 99 школ (с номерами от 1 до 99). Поэтому можно определить массив из 99 элементов, А—й элемент которого будет хранить максималь­ный балл, набранный участниками школы номер К. Сначала во все элементы этого массива записывается некоторый признак то­го, что из данной школы участников олимпиады не было, напри­мер, число -1. Затем полученный результат очередного участни­ка из А’-ой школы сравнивается с К-м элементом массива, и ес­ли очередной результат больше fc-ro элемента, то он заменяет А-й элемент. По окончании обработки NСтрок в цикле от 1 до 99 вы­водятся номера и значения неотрицательных элементов массива.

Вариант 6

Программа запоминает фамилии и средний вес одной веши бага­жа в массиве записей (или в двух массивах), сразу подсчитывая общий суммарный вес SИ общее количество вещей MВсего бага­жа.

C

Далее определяется средний вес одной веши —. Затем за допол — 771

Нительный просмотр этого массива распечатываются фамилии тех пассажиров, средний вес одной вещи багажа которых отличается

По модулю от — не более чем на 0.5.

771

Вариант 7

Программа читает входные данные, не запоминая их все, а сра­зу подсчитывая в массиве, хранящем 36 целых чисел, количество абитуриентов, набравших тот или иной балл (от 0 до 35). Если при этом абитуриент получил хотя бы одну двойку, то удобно считать, что его общий балл равен 0. Затем вычисляется сумма элементов этого массива, начиная с 35-го.

Если при добавлении очередного элемента массива сумма в точ­ности равна К, то проходной балл набрали ровно Л’ абитуриентов. Если эта сумма оказалась больше Л’. то проходной балл набра­ли К минус значение последнего добавленного к сумме элемента массива. И. наконец, если сумма всех элементов массива мень­ше Л’, то именно она является ответом.

Вариант 8

Слово длиной N. состоящее из символов открывающих или за­крывающих скобок, будем представлять двоичным кодом стро­ки. состоящей из Arдвоичных цифр. Причём, например, двоичную цифру 0 будем считать кодом открывающей скобки, а двоичную цифру 1 — кодом закрывающей скобки.

Так как всевозможных слов длиной Л\ состоящих только из сим­волов открывающих и закрывающих скобок, ровно 2NШтук. то. перебирая в цикле все числа от 1 до 2,vи при необходимости дополняя двоичный код каждого числа слева нулями до длины в JV цифр, мы получим двоичные коды всевозможных слов, удовле­творяющих условию. Далее каждую полученную кодовую строку проверяем на соответствие математическим правилам расстанов­ки скобок по следующему алгоритму.

В цикле просматриваем все цифры строки, кодирующей очеред­ное слово. При этом, перед началом цикла, некоторую перемен­ную s приравниваем к 0. Затем, если очередная цифра,,0″( соот­ветствующая скобка открывающая), то к SДобавляем единицу, а если очередная цифра последовательности «!»(соответствующая скобка закрывающая), то из Я вычитаем единицу. Если в какой — то момент я оказалось отрицательным, то выходим из цикла, счи­тая последовательность не удовлетворяющей условию. Если же по окончании никла я окажется равной 0, то в соответствующей последовательности скобки расставлены правильно и мы увели­чиваем счётчик правильных последовательностей на единицу.

По окончании основного цикла выводим значение счётчика в ка­честве ответа.

Вариант 9

Используем четыре. V-элементных массива, в каждом из которых элементы являются записями с полями <Фамилия>и <время>. В первом массиве будем хранить фамилию и время каждого чело­века, которые задаются первоначально. Остальные три массива требуются для хранения каждой из очередей.

Далее приводится алгоритм расстановки люден в три очереди.

I. Отсортируем первый (исходный) массив по невозрастанию вре­мени.

2. Расставим первых трёх человек по одному в очереди к каждой кассе.

3.1 !©следующих людей будем расставлять по правилу: если сумма времени тех, кто уже стоит в кассу и вновь добавляемого человека, мсныпе чем максимальная сумма во всех кассах, то человек до­бавляется в очередь, иначе проверяется следующая касса по тому же правилу Если же ни в одной из очередей правило нс выполня­ется. то человек помещается в ту очередь, где сумма времени будет наименьшей.

I Io окончании этого алгоритма выводятся требуемые результаты.

Вариант К)

Программа должна читать все входные данные один раз, сразу подсчитывая в массиве с индексами от О до IOO количество из­даний, набравших тот или иной балл. Путём просмотра этого мас­сива с копна (от 100 баллов) определяется число издании, заве­домо попадающих в число 55% лучших (добавление всех участ­ников. набравших следующий балл, приводит к выходу за 55%). Последний балл, который набрали не менее одного издания, за­поминается Если хотя бы одно из следующих изданий также по­падает в 55%, то проверяется, что оно и следующие, получившие столько же баллов, набрали более четверти баллов, в этом слу­чае они все добавляются к числу популярных и их балл является искомым. Программа должна решать задачу хотя бы для одного частного случая (например, когда все издания набрали различное количество баллов, каждый балл набрало хотя бы одно издание и 45% от числа изданий, участвовавших в исследовании — целая величина).

Ft Pasfuι6σ∏anpP, P1,m__________________________________________ 217

Замечание.

Программа должна работать верно для любых входных данных произвольного! размера и находить ответ, не сохраняя все входные данные или баллы изданий в массиве, размер которого ранен чис­лу изданий. Программа должна просматривать входные данные один раз. заполняя во время считывания массив размерностью от Одо 100для хранения количества изданий, набравших то или иное количество баллов. Искомые величины должны находиться путём однократного просмотра этого массива. При определении мини­мального балла рассматриваются только баллы, которые какое — либо издание уже набрало.

При оценивании эффективности программы на экзамене баллы снижаются: если программа работает верно, но все входные дан­ные (или баллы издания) запоминаются в массиве, размер которо­го совпадает с количеством изданий, принимавших участие в ис­следовании, или входные данные считываются несколько раз: ис­пользуется сортировка всех баллов изданий и/или алгоритм поис­ка минимума, просматривающий баллы всех популярных изданий.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *