Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Часть 2. 24 Тре­бо­ва­лось на­пи­сать про­грам­му, при вы­пол­не­нии ко­то­рой с кла­ви­а­ту­ры счи­ты­ва­ет­ся на­ту­раль­ное число N



Для записи ответов на задания этой части (24–27)используйте БЛАНКОТВЕТОВ № 2. Запишите сначала номер задания (24, 25 и т. д.), а затем полное решение. Ответы записывайте чётко и разборчиво.

24 Тре­бо­ва­лось на­пи­сать про­грам­му, при вы­пол­не­нии ко­то­рой с кла­ви­а­ту­ры счи­ты­ва­ет­ся на­ту­раль­ное число N, не пре­вос­хо­дя­щее 109, и вы­во­дит­ся сумма цифр этого числа. Про­грам­мист то­ро­пил­ся и на­пи­сал про­грам­му не­пра­виль­но. (Ниже для Ва­ше­го удоб­ства про­грам­ма пред­став­ле­на на четырёх язы­ках про­грам­ми­ро­ва­ния.)

По­сле­до­ва­тель­но вы­пол­ни­те сле­ду­ю­щее.

1. На­пи­ши­те, что вы­ве­дет эта про­грам­ма при вводе числа 352.

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

3. Ука­жи­те одно число для ко­то­ро­го эта про­грам­ма будет ра­бо­тать верно.

25 Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 100. Опишите на русском языке или на одном из языков программирования алгоритм, позволяющий найти и вывести произведение элементов массива, которые имеют нечётное значение и делятся на 3. Гарантируется, что в исходном массиве есть хотя бы один элемент, значение которого нечётно и кратно 3.
Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них. Исходные данные всегда подобраны так, что результат произведения не выходит за пределы объявленных типов данных.

Паскаль Алгоритмический язык
const N=30; var a: array [1..N] of longint; i, j, p: longint; begin for i:= 1 to N do readln(a[i]); … end. алг нач цел N=30 целтаб a[1:N] цел i, j, p нц для i от 1 до N ввод a[i] кц... кон
Бейсик Си
N=30 DIM A(N) AS LONG DIM I, J, P AS LONG FOR I = 1 TO N INPUT A(I) NEXT I … END #include <stdio.h> #define N 30 void main(void){ long a[N]; long i, j, p; for (i=0; i<N; i++) scanf("%ld", &a[i]); … }
Русский (естественный) язык
Объявляем массив A из 30 элементов. Объявляем целочисленные переменные I, J, P. В цикле от 1 до 30 вводим элементы массива A с 1-го по 30-й.

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

26 Два иг­ро­ка, Паша и Вова, иг­ра­ют в сле­ду­ю­щую игру. Перед иг­ро­ка­ми лежит куча кам­ней. Иг­ро­ки ходят по оче­ре­ди, пер­вый ход де­ла­ет Паша. За один ход игрок может до­ба­вить в кучу 1 ка­мень или 10 кам­ней. На­при­мер, имея кучу из 7 кам­ней, за один ход можно по­лу­чить кучу из 8 или 17 кам­ней. У каж­до­го иг­ро­ка, чтобы де­лать ходы, есть не­огра­ни­чен­ное ко­ли­че­ство кам­ней. Игра за­вер­ша­ет­ся в тот мо­мент, когда ко­ли­че­ство кам­ней в куче ста­но­вит­ся не менее 41. По­бе­ди­те­лем счи­та­ет­ся игрок, сде­лав­ший по­след­ний ход, то есть пер­вым по­лу­чив­ший кучу, в ко­то­рой будет 41 или боль­ше кам­ней.

В на­чаль­ный мо­мент в куче было S кам­ней, 1 ≤ S ≤ 40.

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

Вы­пол­ни­те сле­ду­ю­щие за­да­ния. Во всех слу­ча­ях обос­но­вы­вай­те свой ответ.

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

б) Ука­жи­те такое зна­че­ние S. при ко­то­ром Паша не может вы­иг­рать за один ход, но при любом ходе Паши Вова может вы­иг­рать своим пер­вым ходом. Опи­ши­те вы­иг­рыш­ную стра­те­гию Вовы.

2. Ука­жи­те два зна­че­ния S, при ко­то­рых у Паши есть вы­иг­рыш­ная стра­те­гия, причём Паша не может вы­иг­рать за один ход, но может вы­иг­рать своим вто­рым ходом не­за­ви­си­мо от того, как будет хо­дить Вова. Для ука­зан­ных зна­че­ний S опи­ши­те вы­иг­рыш­ную стра­те­гию Паши.

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

27 На ав­то­за­пра­воч­ных стан­ци­ях (АЗС) про­да­ет­ся бен­зин с мар­ки­ров­кой 92, 95 и 98. В го­ро­де N был про­ве­ден мо­ни­то­ринг цены бен­зи­на на раз­лич­ных АЗС.

На­пи­ши­те эф­фек­тив­ную по вре­ме­ни ра­бо­ты и по ис­поль­зу­е­мой па­мя­ти про­грам­му (ука­жи­те ис­поль­зу­е­мую вер­сию языка про­грам­ми­ро­ва­ния, на­при­мер, Borland Pascal 7.0), ко­то­рая будет опре­де­лять для каж­до­го вида бен­зи­на, сколь­ко АЗС про­да­ют его де­шев­ле всего. На вход про­грам­ме в пер­вой стро­ке по­да­ет­ся число дан­ных о сто­и­мо­сти бен­зи­на. В каж­дой из по­сле­ду­ю­щих N строк на­хо­дит­ся ин­фор­ма­ция в сле­ду­ю­щем фор­ма­те:

<Ком­па­ния> <Улица> <Марка> <Цена>

где <Ком­па­ния> – стро­ка, со­сто­я­щая не более, чем из 20 сим­во­лов без про­бе­лов, <Улица> – стро­ка, со­сто­я­щая не более, чем из 20 сим­во­лов без про­бе­лов, <Марка> – одно из чисел – 92, 95 или 98, <Цена> – целое число в диа­па­зо­не от 1000 до 3000, обо­зна­ча­ю­щее сто­и­мость од­но­го литра бен­зи­на в ко­пей­ках. <Ком­па­ния> и <Улица>, <Улица> и <Марка>, а также <Марка> и <цена> раз­де­ле­ны ровно одним про­бе­лом. При­мер вход­ной стро­ки:

Си­нойл Цве­точ­ная 95 2250

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

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

12 1 0





Дата публикования: 2015-02-18; Прочитано: 592 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...