Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемedu-frn.frunz.gov.spb.ru
1 Задания с
2 Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (х, у - действительные числа) и определяется принадлежность этой точки заданной закрашенной области (включая границы). Программист торопился и написал программу неправильно. ПРОГРАММА НА ПАСКАЛЕ var х,у: real; begin readln(х,у]; if х>=-1 then if у>=х+1 then if (y>=x*x) then write{'принадлежит'} else write('не принадлежит') end. Последовательно выполните следующее: 1.Приведите пример таких чисел х, у, при которых программа неверно решает поставленную задачу. Объясните, почему для указанных чисел программа неверно решает поставленную задачу. 2.Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.) с1с1
3 Элементы ответа: 1)Пример: х = -2, у = 0. Для данной точки программа не выведет никакого сообщения. В качестве ответа на первый вопрос подходит любая точка, у которой х -1, у > х + 1, для этих точек программа выведет сообщение «не принадлежит», а должна вывести сообщение «принадлежит». 2)Возможная доработка (Паскаль): if (х>=-1) and (у>=х+1) and ((у>=х*х) or (х
4 Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от до Опишите на русском языке или на одном из языков программирования алгоритм, позволяющий найти и вывести минимальное значение среди элементов массива, которые имеют нечётное значение и делятся на семь. Гарантируется, что в исходном массиве есть хотя бы один элемент, значение которого нечётно и кратно семи. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них. ПРОГРАММА НА ПАСКАЛЕ const N=20; var a: array [1..N] of integer; i, j, min: integer; begin for i:=l to N do readln(a[I]); … end. В качестве ответа вам необходимо привести фрагмент программы (или описание алгоритма на естественном языке), который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Borland Pascal 7.0) или в виде блок-схемы. В этом случае вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии (например, в образце, записанном на естественном языке). с2с2
5 На естественном языке Записываем в переменную MIN начальное значение, равное 987. В цикле от первого элемента до двадцатого находим остаток от деления элемента исходного массива на два и на семь. Если остаток от деления на два не равен нулю и остаток от деления на семь равен нулю, то сравниваем значение текущего элемента массива со значением переменной MIN. Если текущий элемент массива меньше MIN. то записываем в MIN значение этого элемента массива. Переходим к следующему элементу. После завершения цикла выводим значение переменной M1N. На языке Паскаль min:=987; for i:=l to N do if (a[i] mod 20) and (a[i] mod 7=0) and (a[i]
6 с3с3 Два игрока, Петя и Ваня, играют в следующую игру. Перед ними лежат две кучки камней, в первой из которых 4. а во второй - 3 камня. У каждого игрока неограниченно много камней. Игроки ходят по очереди, первый ход делает Петя. Ход состоит в том, что игрок или утраивает число камней в какой-то куче, или добавляет 2 камня в какую-то кучу. Игра завершается в тот момент, когда количество камней в одной из куч становится не менее 19. Если в момент завершения игры количество камней в одной из куч не менее 28, то выиграл Ваня, в противном случае - Петя. Кто выигрывает при безошибочной игре обоих игроков? Каким должен быть первый ход выигрывающего игрока? Ответ обоснуйте.
7 с3с3 Выигрывает Петя, своим первым ходом он должен добавить 2 камня к первой куче. Для доказательства рассмотрим неполное дерево игры, оформленное в виде таблицы, где в каждой ячейке записаны пары чисел, разделённые запятой. Эти числа соответствуют количеству камней на каждом этапе игры в первой и второй кучах соответственно.
8 с3с3 1 ход2 ходЗ ход4 ход Позиция после первого хода Ваня (все варианты хода) Петя (выигрышные ходы) Ваня (все варианты хода, кроме непосредственно проигрышных) Петя (выигрышные ходы, экзаменуемому достаточно указать один из вариантов) 6,76,7 18,7 18,21 20,7 6,5 8,7 24,7 8,21 6,36,3 6,96,9 6,27 18,3 20,3 6,96,9 6,27 Выигрыш Пети 8,38,3 24,3 Таблица содержит все возможные варианты ходов второго игрока. Из неё видно, что при любом ответе второго игрока у первого имеется ход. приводящий к победе.
9 с4с4 В командных олимпиадах по программированию для решения предлагается не больше 12 задач. Команда может решать предложенные задачи в любом порядке. Подготовленные решения команда посылает в единую проверяющую систему соревнований. Вам предлагается написать эффективную, в том числе по используемой памяти, программу, которая будет статистически обрабатывать пришедшие запросы, чтобы определить наименее популярные задачи. Следует учитывать, что количество запросов в списке может быть очень велико, так как многие соревнования проходят с использованием Интернет. Перед текстом программы кратко опишите используемый вами алгоритм решения задачи. На вход программе в первой строке подаётся количество пришедших запросов N. В каждой из последующих N строк записано название задачи в виде текстовой строки. Длина строки не превосходит 100 символов, название может содержать буквы, цифры, пробелы и знаки препинания. Пример входных данных: 6 А+В Крестики-Нолики А+В Простой делитель А+В Простой делитель
10 с4с4 Программа должна вывести список из трёх задач, встречающихся в запросах наименьшее число раз, с указанием количества запросов по ним. Если в запросах упоминаются менее трёх задач, то выведите информацию об имеющихся задачах. Если несколько задач имеют ту же частоту встречаемости, что и третья по частоте встречаемости задача, то выведите только одну из них. Пример выходных данных для приведённого выше примера входных данных: Крестики-Нолики 1 Простой делитель 2 А+В 3 Пример входных данных: 6 А+В Крестики-Нолики А+В Простой делитель А+В Простой делитель
11 с4с4 Var n, Num, i, j, t: integer; Count: array[1..12] of integer; s: string; Names: array[1..12] of string; Begin Num:=0; (Число различных задач в списке запросов) ReadLn(N); (Считываем количество запросов) for i:=1 to N do begin ReadLn(S); (считали очередную задачу) (Осуществляем ее поиск в списке уже встретившихся) j: = l; while (j Names [ j ] ) do j:=j+l; (Если она найдена) if j
12 с4с4 (Сортируем массивы Names и Count в порядке возрастания значений массива Count) for i:=Num downto 2 do for j:=2 to i do if Count[j-1]>Count[j] then begin t:=Count[j]; Count[j]:=Count[j-1]; Count[j-1]:=t; s:=Names[j]; Names[j]:=Names[j-1]; Names[j-1]:=s; end; if Num >= 3 then Num:= 3; for i:=1 to Num do WriteLn(Names[i], ' ', Count[i]); end. Пример правильной и эффективной программы на языке Паскаль:
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.