Лабораторный практикум по языку программирования Pascal

Министерство образования Российской Федерации Ярославский государственный педагогический университет имени К.Д. Ушинского

Лабораторный практикум по языку программирования Pascal

Ярославль 2004


  Печатается по решению редакционно-издательского совета ЯГПУ имени К.Д. Ушинского

 

Система задач и упражнений по языку программирования Pascal/ Сост. Е.Ю. Жохова, И.Е. Кокорева, П.А. Корнилов, Л.Я. Московская, У.В. Плясунова. Ярославль, 2004, 92 с.

В работе приведены задачи и упражнения по основным разделам курса изучения языка программирования Паскаль. К каждой лабораторной работе прилагаются тексты программ, необходимых для ее выполнения. Содержание подкреплено значительным количеством контрольных вопросов по всем изучаемым темам.

Работа предназначена для студентов младших курсов математических специальностей, изучающих процедурные языки.

Составители:

Жохова Елена Юрьевна, кандидат пед. наук, доцент

Кокорева Ирина Евгеньевна, ассистент

Корнилов Петр Анатольевич, кандидат физ.-мат. наук, доцент

Московская Лина Яковлевна, старший преподаватель

Плясунова Ульяна Валерьевна, ассистент

Рецензент: Волченков С.Г., доцент ЯрГУ, кандидат технических наук


ОГЛАВЛЕНИЕ

Лабораторные работы... 5

Лабораторная работа №1 Знакомство с клавиатурой. Организация работы в среде Турбопаскаль. 5

Лабораторная работа №2 Команды присваивания, ввода и вывода. Составление простейших программ на языке Турбопаскаль. 6

Лабораторная работа №3 Команды ветвления и выбора на языке Турбопаскаль. 8

Лабораторная работа №4 Команды ветвления и повторения на языке Паскаль. 12

Лабораторная работа №5 Циклические вычисления. 13

Лабораторная работа №6 Циклы.. 15

Лабораторная работа №7 Одномерные массивы.. 17

Лабораторная работа №8 Двумерные массивы.. 20

Лабораторная работа №9 Работа со строковыми величинами. 22

Лабораторная работа №10 Обработка литерных величин на языке Турбопаскаль. 24

Лабораторная работа №11 Обработка двумерных массивов на языке Турбопаскаль. 25

Лабораторная работа №12 Работа с одномерными и двумерными массивами. 27

Лабораторная работа №13 Многочлены.. 29

Лабораторная работа №14 Линейная комбинация векторов. 31

Лабораторная работа №15 Скалярное произведение векторов. 34

Лабораторная работа «Точка». 34

Лабораторная работа «Прямая линия на плоскости». 35

Лабораторная работа №16 Простейшие графические операторы.. 37

Лабораторная работа №17 Создание движущихся рисунков. 38

Лабораторная работа №18 Использование датчика случайных величин. 38

Лабораторная работа N 19 Работа с множествами. 40

Лабораторная работа № 20 Работа с записями. 41

Лабораторная работа N21 Работа с записями. 41

Лабораторная работа N22 Работа с файлами записей. 43

Лабораторная работа N23 Работа с файлами прямого доступа. 44

Лабораторная работа N 24 Работа с текстовыми файлами. 45

Лабораторная работа 25 Работа с динамической памятью.. 46

Лабораторная работа №26 Работа со списками. 47

Лабораторная работа №27 Использование стека. 48

Лабораторная работа №28 Работа с бинарными деревьями. 49

Лабораторная работа №29 Работа с деревьями поиска. 49

Лабораторная работа №30 Создание деревьев разбора выражений. 50

Примерные вопросы к собеседованиям.. 51

Величина. Команды присваивания, ветвления и выбора. 51

Циклы.. 56

Массивы.. 60

Литерные переменные. 63

Процедуры и функции. 66

Графика. 69

Датчик случайных величин. 70

Множества. 71

Записи. 73

Файлы.. 77

Динамическая память. 80

Деревья. 82

Тексты программ для выполнения лабораторных работ.. 85

Примерный список индивидуальных задач.. 90

 


 

Лабораторные работы

Лабораторная работа №1 Знакомство с клавиатурой. Организация работы в среде Турбопаскаль.

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

Замечание:перед работой должна быть выполнена контролирующая программа по теме "Величина".

Задание 1

1.1 С разрешения преподавателя включите компьютер.

1.2 Войдите в Турбопаскаль способом, рассказанным на лекции.

Задание 2

2.1 Загрузите программу с именем PRIMER1.pas. Для этого:

выйдите в верхнее меню (F10),

поместите курсор на команду FILE,

в выпадающем меню установите курсор на команду Load,

нажмите ввод (¿),

после появления сообщения *.pas,

нажмите еще раз ввод (¿)

установите курсор на имя PRIMER1.PAS и ведите программу (¿) в редактор Pascal-я.

2.2 Откомпилируйте программу: (признак окончания компиляции - мерцающая фраза "Press any key" ("нажми любую клавишу")):

2.2.1 Через верхнее меню (COMPILE).

2.2.2 Через Alt+F9.

2.3 Исполните программу (признак окончания исполнения - выход в окно редактора):

2.3.1 Через верхнее меню (RUN).

2.3.2 Через Ctrl+F9.

2.4 Просмотрите результаты исполнения (возврат - нажатие любой клавиши):

2.4.1 Через верхнее меню (RUN, USER SCREEN).

2.4.2 Через Alt+F5.

2.5 Удалите символы ремарки ( { } ) и вновь исполните программу.

2.6 Удалите программу из памяти редактора Паскаля, не записывая изменения (на вопрос “Save... (Y/N)?” дать ответ “N”).

Задание 3

Загрузите файл с именем PRIMER2.pas (повторив по аналогии серию команд, описанную в задании 2). Восстановите заголовок, откомпилируйте и исполните программу, просмотрите результат исполнения. Подготовьте набор тестовых значений для аргументов и результатов, объясните причину выбора именно этих чисел.

Удалите программу из памяти редактора Pascal-я, не записывая изменения

(на вопрос “Save... (Y/N)?” дать ответ “N”).

Задание 4

4.1 Загрузите файл с именем PRIMER3.pas. Скопируйте строку с запросом значения величины длины катета а, исправьте имя величины так, чтобы запрашивалась длина катета b. Подберите удобные для устных вычислений тестовые данные. Снимите выделение блока.

4.2 Опишите величины:

тангенс угла А - имя tga;

тангенс угла B - имя tgb;

площадь треугольника - имя S;

радиус описанной окружности - имя R;

длину медианы СК - имя ck;

организуйте вычисление и вывод на экран, скопировав нужное количество раз и исправив оператор вывода длины гипотенузы. При исправлении операторов перейдите в режим забоя (клавиши Ins или Insert). Откомпилируйте и исполните программу, просмотрите результат исполнения. Снимите выделение блока.

Ctrl+k, b - отмечает начало блока;

Ctrl+k, k - отмечает конец блока (при этом блок выделяется инверсной строкой);

Ctrl+k, c - копирование блока (до выполнения этой команды переместите курсор на строку, перед которой должен будет встать блок);

Crtl+k, h - снятие выделения с блока.

4.3 Вставьте пустую строку между операторами нахождения площади и радиуса описанной окружности. Организуйте в этой строке нахождение и вывод значения периметра треугольника (имя - p) любым способом набора операторов (копирование или набор с клавиатуры). Выделите блок строк нахождения радиуса описанной окружности.

Перенесите его в строки ниже вычисления периметра. Исправьте формулу так, чтобы вычислялся радиус вписанной окружности. Откомпилируйте и исполните программу, просмотрите результат исполнения.

Ctrl+n - вставка пустой строки. Ctrl+k, v - перенос блока.

4.4 Удалите строку вычисления значения медианы СК. Отметьте блок строк вычислений, организованных в пунктах 4.2-4.3 и разом удалите его.

Ctrl+y, - удаление строки, в которой находится курсор. Ctrl+k, y - удаление выделенного блока.

Задание 5

Научитесь самостоятельно использовать контекстную помощь (используя комбинацию клавиш Ctrl+F1), а также раздел Break/Watch главного меню Паскаля. Очистите окно редактора (FILE, NEW).Выйдите из Паскаля Выключите компьютер.

Лабораторная работа №2 Команды присваивания, ввода и вывода. Составление простейших программ на языке Турбопаскаль.

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

Замечание: перед работой должна быть выполнена контролирующая программа по теме "Команда присваивания".

Задание 1

· Загрузите программу с именем PRIMER1.pas.

· Откомпилируйте и исполните программу.

· Вставьте оператор очистки экрана так, чтобы при просмотре результатов исполнения программы на экране остались только ваши анкетные данные (не было бы строк, начинающихся со слова «Введите…»).

· Организуйте вывод данных в столбик в центре экрана.

· Сохраните программу под своим именем и удалите ее из редактора Паскаля.

Задание 2

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

2.1. Вычислить площадь треугольника по трем сторонам.

2.2. Вычислить площадь треугольника по двум сторонам и углу между ними, заданному в градусах.

2.3. Вычислить площадь параллелограмма по двум сторонам и углу между ними, заданному в градусах.

2.4. Вычислить площадь четырехугольника по двум диагоналям и углу между ними, заданному в градусах.

2.5. Вычислить площадь равнобочной трапеции по большему основанию, боковой стороне и углу между ними, заданному в градусах.

2.6. Вычислить площадь равнобочной трапеции по длинам оснований и боковой стороны.

2.7. Вычислить площадь правильного n-угольника со стороной произвольной длины, вписанного в окружность радиуса R.

2.8. Вычислить длину окружности радиуса R.

2.9. Вычислить площади круга (R) и эллипса с полуосями а и b.

Задание 3

· Очистите окно редактирования (FILE, NEW).

· Введите и исполните программу PRIMER4.PAS.

· Исправьте программу так, чтобы на рисунке изображалась одна из букв ваших инициалов (по выбору преподавателя).

Задание 4

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

4.1. В верхнем правом углу.

4.2. В правом нижнем углу.

4.3. В левом нижнем углу.

4.4. По центру экрана.

4.5. На средней вертикальной линии экрана сверху.

4.6. На средней вертикальной линии экрана снизу.

4.7. На средней горизонтальной линии экрана справа.

4.8. На средней горизонтальной линии экрана слева.

Задание 5

Составьте хорошо оформленную программу для решения одной из следующих задач:

5.1. Заданы три корня кубического уравнения: х1, х2, х3. Найти коэффициенты этого уравнения.

5.2. Заданы координаты точки подвески математического маятника А(х0, y0, z0) и координаты одной из точек его наивысшего подъема В(х1, y1, z1). Найти координаты самой низкой точки траектории и другой наивысшей точки подъема.

5.3. У квадрата АВСD на плоскости известны координаты двух противоположных вершин – точек А и С. Найти координаты точек В и D.

5.4. Русские неметрические единицы длины: 1 верста = 500 саженей; 1 сажень = 3 аршина; 1 аршин = 16 вершков; 1 вершок = 44,45 мм. Длина некоторого отрезка составляет р метров. Перевести ее в русскую неметрическую систему.

5.5. Найти координаты вершины параболы

5.6. Треугольник АВС задан длинами своих сторон. Найти длину высоты, опущенной из вершины А.

Лабораторная работа №3 Команды ветвления и выбора на языке Турбопаскаль

Цель работы: Ознакомиться с командами ветвления и выбора, научиться составлять программы с использованием этих команд на языке Паскаль.

Замечание: перед работой должна быть выполнена контролирующая программа по теме "Команда ветвления".

Задание 1

Составьте программу с использованием команды ветвления для решения одной из следующих задач:

1.1. По номеру месяца определить количество дней в нем (в невисокосном году).

1.2. По номеру месяца определить время года.

1.3. По номеру дня недели определить количество занятий.

1.4. По числу лет определить является ли человек школьником, пенсионером и т.п.

1.5. По номеру класса определить в начальной школе, среднем звене или в старших классах обучается ученик.

1.6. По трехзначному номеру группы определить, на каком курсе учится студент.

1.7. По числу текущего месяца определить день недели.

Задание 2

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

Задание 3

Составьте программу, которая определяет, принадлежит ли точка с координатами (x, y) одной из указанных областей.

Задание 4

Составьте программу для решения одной из следующих задач.

4.1. Определить, существует ли треугольник с заданными сторонами a, b, c. Отдельно указать случай, когда треугольник является вырожденным.

4.2. По заданным длинам сторон определить вид треугольника (равносторонний, равнобедренный, общего вида).

4.3. По заданным длинам сторон определить вид треугольника (тупоугольный, остроугольный, прямоугольный).

4.4. Два угла заданы в градусах, минутах, секундах. Определить их разность в градусах, минутах, секундах.

4.5. По координатам трех точек на плоскости (в пространстве) определить, лежат ли они на одной прямой.

4.6. Определить вид треугольника по трем углам (остроугольный, прямоугольный, тупоугольный, вырожденный, не существует).

4.7. Определить количество решений у системы двух линейных уравнений с двумя переменными.

4.8. Можно ли вписать круг в заданную равнобедренную трапецию, если известны длины оснований и высота?

Задание 5

Составьте программу для решения одного из уравнений или неравенств:

5.1. AX2+BX+C=0 (А<>0); 5.2. AX+В>0; 5.3. AX+В<0; 5.4. AX2+B=0; 5.5. AX2+BX=0; 5.6. AX2 <= B; 5.7. AX3+BX=0; 5.8. AX3+BX2=0.

Лабораторная работа №4 Команды ветвления и повторения на языке Паскаль

Цель работы: Повторить правила синтаксиса команд ветвления и выбора. Ознакомиться с видами команды повторения, научиться составлять программы с использованием этих команд на языке Паскаль.

Замечание: перед работой должна быть выполнена контролирующая программа по теме "Команда повторения с параметром (FOR)".

Задание 1

Составьте программу для решения одной из следующих задач:

1.1. Для данного натурального числа проверить, делится ли оно на числа: 2, 3, 5, 6, 9.

1.2. По введенному номеру группы выдать сообщение: на каком факультете и на каком курсе учится студент.

1.3. Пройдет ли кирпич со сторонами а, b и с сквозь прямоугольное отверстие со сторонами r и s? Стороны отверстия должны быть параллельны граням кирпича.

1.4. Может ли шар радиуса r пройти через ромбообразное отверстие с диагоналями p и q?

1.5. Можно ли коробку размером a´b´c упаковать в посылку размером r´s´t? «Углом» укладывать нельзя.

1.6. Можно ли на прямоугольном участке застройки размером a´b разместить два дома размерами p´q и r´s метров? Дома можно располагать только параллельно сторонам участка.

 

Задание 2

Составьте программу для решения одной из следующих задач. Программу запишите на диск под своей фамилией.

2.1. Решить невырожденное (т.е. а¹0) биквадратное уравнение ax4+bx2+c=0.

2.2. Решить невырожденное (т.е. а¹0) квадратное неравенство ax2+bx+c>0.

2.3. Дано натуральное число (n£100), определяющее возраст человека (в годах). Дать для этого числа наименования ”год", ”года", ”лет".

2.4. Дано время (часы, минуты, секунды)-три натуральных числа. Определить время через 10 секунд.

2.5. Определить дату следующего дня. Например:

31.12.1985 01.01.1986 29.04.1985 30.04.1985

2.6. Определить, каким днем недели является дата, заданная в виде число, месяц (в текущем году).

2.7. Определить число полных лет на текущий момент по введенной с клавиатуры дате.

2.8. По введенной дате рождения определить, является ли на сегодняшний день совершеннолетним пользователь программы.

2.9. Даны целые числа m, n (0<m£12, 0£n<60), указывающие момент времени: ” m часов, n минут". Определить наименьшее время (число полных минут), которое должно пройти до того момента, когда часовая и минутная стрелки на циферблате:

1)совпадут;

2)расположатся перпендикулярно друг другу.

2.10. Определить число полных лет, месяцев и дней на текущий момент по введенной с клавиатуры дате.

Задание 3

Составьте программу, которая рисует во всю высоту экрана один из ваших инициалов, используя введенный символ (букву согласуйте с преподавателем).

Задание 4

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

Лабораторная работа №5 Циклические вычисления

Цель работы: Ознакомиться с командой повторения, научиться составлять программы с использованием команды повторения.

Замечание: перед работой должна быть выполнена контролирующая программа по теме "Команда повторения WHILE".

Задание 1

Составьте программу для решения одной из следующих задач.

1.1. Вычислить n!.

1.2. Вычислить произведение (a-n)(a-2n)...(a-kn).

1.3. Вычислить

1.4. Вычислить сумму квадратов чисел от 1 до n.

1.5. Вычислить (2n+1)!!.

1.6. Вычислить (2n)!!

Задание 2

Составьте программу для решения одной из следующих задач.

2.1. Предприниматель, начав дело, взял кредит размером k рублей под p процентов годовых и вложив его в свое дело. По прогнозам его дело должно давать прибыль r рублей в год. Сможет ли он накопить сумму, достаточную для погашения кредита, и если да, то через сколько лет?

2.2. В парикмахерскую с одним мастером посетители приходят с интервалом t минут, а продолжительность обслуживания каждого посетителя p минут. Сколько клиентов обслужит мастер за смену продолжительностью Т минут?

2.3. Известно время начала и окончания работы некоторого пригородного автобусного маршрута с одним автобусом на линии, а также протяженность маршрута в минутах (в один конец) и время отдыха на конечных остановках. Составить суточное расписание этого маршрута (моменты отправления с конечных пунктов) без учета времени на обед и пересменку.

2.4. В учебном заведении задается начало учебного дня, продолжительность пары, продолжительность перерыва. Получить расписание звонков до седьмой пары.

2.5. Леспромхоз ведет заготовку древесины. Первоначальный объем ее на территории леспромхоза составлял P кубометров, а за год на территории леспромхоза вырастает Q кубометров новой древесины. Годовой план заготовки – R кубометров. Через сколько лет в бывшем лесу будут расти одни опята?

2.6. У гусей и кроликов вместе 2n лап. Сколько может быть гусей и кроликов (вывести все возможные сочетания)?

Задание 3

Составить программу решения одной из следующих задач.

3.1. Даны положительные действительные числа a, x, e (в программе дать имя eps). В последовательности y0, y1, y2,..., образованной по закону:

y0=a;...

yi=, при i=1,2,...

найти первый член yn, для которого выполнено неравенство êyn- yn-1 ê< e. Сравнить полученное значение yn с результатом использования встроенной функции y=sqrt(x).

3.2. Пусть x0=1;... xk=, k=1,2,3,...

Найти первый член xn, для которого выполнено неравенство êxn- xn-1ê< e.

3.3. Вычислить для заданного значения а, используя рекуррентное соотношение:

;

Процесс вычислений выполнять до тех пор пока не будет выполнено неравенство êxn+1-xnê < e.

3.4. Для заданных чисел m и n вычислить число сочетаний непосредственно:

и по рекуррентной формуле:

3.5. Дано целое число m>1. Получить наибольшее целое n, при котором 4n<m

3.6. Найти сумму первых N чисел Фибоначчи.

3.7. Найти N-ое число Фибоначчи.

Задание 4

Составьте программу для решения одной из следующих задач.

4.1. Определить, является ли число n простым.

4.2. Найти сумму делителей числа n.

4.3. Определить, является ли число n совершенным.

4.4. Найти НОК двух натуральных чисел.

4.5. Найти все общие делители чисел n, m.

4.6. Найти все общие кратные чисел n и m, меньшие mn.

4.7. Даны натуральные числа n, m. Сократите дробь m/n., то есть найдите такие натуральные p и q, не имеющие общих делителей, что m/n=p/q.

4.8. Дано натуральное число n. Получить все такие натуральные q, что n делится на q в квадрате и не делится на третью степень числа q.

4.9. Дано натуральное число n. Получить все натуральные числа, меньшие n и взаимно простые с ним.

4.10. Назовем шестизначное число счастливым, если сумма первых трех его цифр равна сумме последних трех. Подсчитать количество счастливых шестизначных чисел, у которых сумма первых трех цифр равна 13.

4.11. Подсчитать количество "счастливых" шестизначных билетов.

Задание 5

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

5.1. Сколько цифр в числе N?

5.2. Чему равна сумма его цифр?

5.3. Получить сумму m последних цифр числа n.

5.4. Выяснить, входит ли цифра 3 в запись числа n.

5.5. Поменять порядок цифр числа n на обратный.

5.6. Переставить первую и последнюю цифры числа n.

5.7. Приписать по единице в начало и конец записи числа n.

5.8. Дано натуральное число n. Выбросить из записи числа n цифры 0 и 5, оставив прежним порядок остальных цифр. Например, из числа 59015509 должно получиться 919.

Проследите исполнение программы в пошаговом режиме(F7), создав в Watch-окне (Ctrl+F7) список промежуточных величин задачи.

Лабораторная работа №6 Циклы

Цель работы: Закрепить умения составлять алгоритмы с использованием команды повторения в различных видах.

Задание 1

Составьте программу для решения одной из следующих задач. Вычислить.

1.1. .

1.2. a+a(a+1)+a(a+1)(a+2)+...+a(a+1)...(a+n-1).

1.3. .

1.4. .

1.5. 1!+2!+...+n!.

1.6. sin(x)+sin(sin(x))+... +sin(...sin(x)) (n слагаемых).

1.7. cos(x)+cos(cos(x))+... +cos(...cos(x)) (n cлагаемых).

1.8. 1*2+2*3*4+...+n*(n+1)...(2n).

Задание 2

Не используя стандартные функции (за исключением модуля), вычислить с точностью e>0 (считать, что требуемая точность достигнута, если модуль очередного слагаемого меньше e).

2.1. y=ex= 2.2. y=cos(x)= 2.3. y=sin(x)= 2.4. y=ln(x+1)= 2.5. y=arctg(x)= 2.6. y=sh(x)== 2.7. y=ch(x)==

При вводе значений Х и e>0 учитывайте, что в разложениях логарифма и арктангенса (ряды 2.4 и 2.5) значение Х должно быть по модулю меньше 1. Кроме того, значение e должно быть достаточно маленьким (от 0.01 до 0.000001), а значение Х – таким, чтобы Вы могли проверить получившийся ответ, например π или π/2 для разложения синуса.

Задание 3

Не стирайте предыдущую программу. Дополните ее вычислением номера последнего слагаемого суммы и выведите на экран ответ в виде грамотной фразы на русском языке, например «После вычисления суммы 12 слагаемых разложения функции y=sin(x) в ряд Тейлора при х=1,5707963получилось 0,9999998 , что совпадает с теоретическим значением 1.0000 с точностью e=0,000001». В данном предложении жирным шрифтом выделены значения переменных величин программы, которые должны быть либо введены в программу, либо вычислены в ней.

Задание 4

Загрузите программу PRIMER7.pas, определите, какая задача решена в каждом фрагменте, сформулируйте ее и запишите условие в тетради, перепишите указанный Вам фрагмент с помощью цикла другого вида.

Задание 5

Составьте программу для решения одной из следующих задач.

5.1. Даны действительные числа x, y. (x>0, y>1). Получить целое число k (положительное, отрицательное или равное нулю), удовлетворяющее условию yk-1£x<yk.

5.2. Дано натуральное число n. Можно ли представить его в виде суммы двух квадратов натуральных чисел? Если можно, то указать все пары x, y таких натуральных чисел, что n=x2+y2.

5.3. Дано натуральное число n. Получить все простые делители этого числа.

5.4. Натуральное число из n цифр является числом Армстронга, если сумма его цифр, возведенных в n-ую степень, равна самому числу (например, 153=13+53+33). Получить все числа Армстронга, состоящие из трех и четырех цифр.

5.5. Дано натуральное число n. Получить все пифагоровы тройки натуральных чисел, каждое из которых не превосходит n, т.е. все такие тройки натуральных чисел a, b, c, что a2+b2 =c2 (a<=b<=c<=n).

5.6. Два натуральных числа называются дружественными, если каждое из них равно сумме всех делителей другого, кроме самого этого числа. Найти все пары дружественных чисел, лежащих в диапазоне от 200 до 300.

5.7. Составить программу для подсчета количества "счастливых" шестизначных билетов, при исполнении которой работает не более 50000 арифметических команд.

5.8. Дано натуральное число n. Получить и напечатать первые n строк треугольника Паскаля.

5.9. Найти все простые несократимые дроби, заключенные между 0 и 1, знаменатели которых не превышают 7 (дробь задается двумя натуральными числами - числителем и знаменателем).

Дополнительные задания

1. Написать программу, которая вводит три натуральных числа А,В,С и проверяет, принадлежит ли число С множеству M, заданному свойствами:

1). A и B принадлежит M;

2). если Х и У принадлежит M, то ХУ+Х+У также принадлежит M;

3). других элементов в M нет. (1 балл).

2. (Задача времен огромной инфляции). Всю неделю бутылка чегонадо стоила К рублей, а пустая бутылка -L рублей. Компания собравшихся в понедельник вместе друзей имела первоначально N рублей и купила на все деньги чегонадо. Выпив все, они на следующий день сдали пустые бутылки и снова купили на все деньги чегонадо. Эта процедура продолжалась каждый день, пока была возможность. Какова должна быть минимальная сумма денег N, чтобы в пятницу вечером друзьям было что выпить? (1 балл).

3. Дано натуральное число К, не превосходящее 2 000 000 000. Выписать все решения уравнения в натуральных числах, или выдать сообщение, что решений у данного уравнения нет.(1 балл).

4. Даны два натуральных числа, каждое из которых не превосходит 30000. Составить программу их «умножения столбиком» (1 балл).

5. Даны два натуральных числа, каждое из которых не превосходит 30000. Составить программу их «деления столбиком» (1 балл).

6. Игра Баше. На столе лежит куча из N одинаковых предметов. Двое играющих по очереди берут себе любое количество предметов, но не более К. Выигрывает тот, кто возьмет последний предмет. Составить программу, при которой машина играет с человеком и выигрывает (сначала машина выбирает, за первого или за второго игрока она будет играть). (до 2 баллов в зависимости от качества оформления программы).

7. На целочисленную числовую прямую выбросили двух одинаковых роботов-парашютистов. Каждый из них может выполнять команды: ШАГ ВЛЕВО, ШАГ ВПРАВО, ПОЛОЖИТЬ ПАРАШЮТ, проверять условие НАЙДЕН ПАРАШЮТ, НАЙДЕН РОБОТ, а также понимает конструкции ветвления и цикла ПОКА, в том числе и с составными условиями. При этом на каждое из 5 действий у робота уходит 1 такт. Какую программу должны были написать хозяева роботов для каждого из них, чтобы, независимо от начального положения, роботы встретились? ( 1 балл).

 

Лабораторная работа №7 Одномерные массивы

Цель работы: Сформировать понятие одномерного массива числового типа. Овладеть умениями обращения к элементам одномерного массива, ввода и вывода массива, составления алгоритмов обработки массивов.

Задание 1

Составьте программу, которая запрашивает значение элементов одномерного числового массива А, формирует и выводит на экран в строку новый числовой массив В, в котором:

1.1. элементы те же, что и в А, но расположены в обратном порядке;

1.2. элементы равны модулю соответствующих элементов А;

1.3. элементы на 1 больше, чем соответствующие элементы А;

1.4. элементы на 1 меньше, чем соответствующие элементы А;

1.5. элементы в 2 раза больше, чем соответствующие элементы А;

1.6. элементы в 2 раза меньше, чем соответствующие элементы А;

1.7. элементы те же, что и в А, но отрицательные заменяются на 0.

Задание 2

Измените предыдущую программу так, чтобы в массиве В, элемент с номером i был равен:

2.1. сумме первых i элементов массива А;

2.2. произведению первых i элементов массива А;

2.3. количеству нулей среди первых i элементов массива А;

2.4. максимальному среди первых i элементов массива А;

2.5. количеству положительных чисел первых i элементов массива А;

2.6. минимальному среди первых i элементов массива А;

2.7. номеру максимального элемента среди первых i элементов А;

2.8. номеру минимального элемента среди первых i элементов А.

После исполнения программы вычисленные элементы массива В должны быть напечатаны на экране каждый под соответствующим элементом массива А.

Задание 3

Составьте программу для решения одной из следующих задач.

3.1. Определить, есть ли в массиве положительные числа, отрицательные числа, нули;

3.2. Определить, все ли числа из массива А лежат в указанном диапазоне;

3.3. Определить, есть в массиве числа, превосходящие сумму всех элементов массива;

3.4. Определить, единственный ли в массиве максимальный элемент;

3.5. Определить, является ли массив А упорядоченным по возрастанию;

3.6. Определить, является ли массив А упорядоченным по убыванию;

3.7. Определить номер первого нуля в массиве А или выдать сообщение, что нулей в массиве нет;

3.8. Определить, симметричны ли элементы в массиве относительно центрального или центральных.

Задание 4

Составьте программу для решения одной из следующих задач.

4.1. Удалить из массива минимальный элемент

4.2. Подсчитать количество рабочих в данной бригаде, работающих хуже, чем в среднем вся бригада.

4.3. Обменять значениями максимальный и минимальный элементы.

4.4. Подсчитать количество дней, имеющих наибольшую температуру за последнюю декаду марта.

4.5. Найти количество максимальных элементов массива, используя только один оператор цикла.

4.6. Вычислить произведение элементов массива А до первого отрицательного элемента (при наличии отрицательного элемента).

4.7. Вычислить произведение элементов массива А, находящихся между первым максимальным и первым минимальным элементами.

4.8. Вычислить сумму положительных элементов массива А после первого нуля (при наличии нуля).

4.9. Вычислить сумму отрицательных элементов (если такие есть) массива А до первого максимального элемента.

Задание 5

Составьте программу для решения одной из следующих задач.

5.1. Найти второй по величине элемента массива;

5.2. Упорядочить массив А по возрастанию;

5.3. Найти наибольшее количество одинаковых элементов массива А, идущих подряд;

5.4. Подсчитать, используя только один оператор цикла; K- количество элементов, равных первому отрицательному, (если отрицательных нет, то K= -1);

5.5. Исключить нулевые элементы таблицы;

5.6. По двоичной записи натурального числа M (в виде массива 0 и 1) выдать двоичную запись числа M+1;

5.7. Определить количество разных элементов массива А;

5.8. Определить наиболее часто встречающийся элемент массива;

5.9. Найти максимальный из отрицательных элементов массива А с четными номерами (с учетом того, что их может не быть);

5.10. Найти минимальный из положительных элементов массива А с четными номерами (с учетом того, что их может не быть);

5.11. Определить наибольшее количество одинаковых элементов в данном массиве.

Дополнительные задачи.

2. Напечатать в порядке возрастания все правильные обыкновенные несократимые дроби, знаменатель которых не превышает данного натурального числа N.… 3. На прилавке расположены в ряд N арбузов. Вес каждого арбуза, кроме… 4. Составить программу, которая по первым трем цифрам находит 1000000000-й член последовательности, в которой каждый…

Лабораторная работа №8 Двумерные массивы

Цель работы: Сформировать понятие двумерного массива числового типа. Овладеть умениями обращения к элементам двумерного массива, ввода и вывода массива, составления алгоритмов обработки массивов.

Задание 1

Составьте программу, которая запрашивает размеры двумерного массива, значения его элементов и выводит на очищенный экран получившийся массив.

Задание 2

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

2.1 суммы всех элементов массива.

2.2 количества 0 в массиве.

2.3 произведения ненулевых элементов последней строки.

2.4 произведения положительных элементов последнего столбца.

2.5 максимального элемента массива.

2.6 минимального элемента массива.

2.7 суммы положительных элементов массива.

2.8 количества отрицательных элементов в массиве.

Задание 3

Измените предыдущую программу так, чтобы вычислялось и выводилось на экран значение:

3.1. суммы элементов выше главной диагонали.

3.2. количества 0 ниже главной диагонали.

3.3. произведения ненулевых элементов ниже побочной диагонали

3.4. произведения положительных элементов выше побочной диагонали.

3.5. максимального элемента выше побочной диагонали.

3.6. минимального элемента ниже побочной диагонали

3.7. суммы положительных элементов выше главной диагонали.

3.8. количества отрицательных элементов ниже главной диагонали.

Замечание: массив должен быть квадратным, т.е. число строк равно числу столбцов.

Задание 4

Составьте программу для нахождения количества:

4.1 строк, где все элементы одинаковы.

4.2 столбцов, где все элементы положительны.

4.3 строк, где знаки элементов чередуются.

4.4 столбцов, совпадающих с первым.

4.5 нулевых строк.

4.6 столбцов, где все элементы одинаковы.

4.7 строк, совпадающих с последней.

4.8 нулевых столбцов.

Задание 5

Составьте программу для решения одной из следующих задач.

5.1. Определить, есть ли в массиве одинаковые строки.

5.2. Определить сколько в массиве столбцов, где все элементы различны.

5.3. Определить, верно ли, что все строки упорядочены по убыванию.

5.4. Определить, верно ли, что максимальные элементы всех строк находятся в разных столбцах.

5.5. Определить, верно ли, что минимальные элементы всех столбцов находятся в разных строках.

5.6. Определить, является ли массив магическим квадратом, т.е. совпадает ли в нем сумма каждой строки, каждого столбца и двух диагоналей.

5.7. Найти минимальное число К, для которого хотя бы в одной строке все элементы меньше или равны К.

5.8. Найти максимальное число К, для которого в каждой строке есть хотя бы один элемент, больший или равный К.

 

Дополнительные задачи.

2. N спортсменов уходят со старта в моменты времени t1<t2<…<tn с постоянными скоростями v1,v2,…,vn. Опишите и реализуйте алгоритм, который… 3. Назовем таблицу «хорошей», если сумма чисел, записанных в клетках любого… 4. В квадратной матрице размерами MxN элементы каждой строки и каждого столбца упорядочены по возрастанию. Опишите,…

Лабораторная работа №9 Работа со строковыми величинами

Цель работы: Сформировать понятие величин полусоставного типа. Научиться составлять алгоритмы обработки строковых переменных.

Задание 1

Составьте программу для решения одной из следующих задач.

1.1. Определить, какое из двух слов длиннее и на сколько.

1.2. Определить, является ли какое-нибудь из двух слов частью другого.

1.3. Определить, есть ли в записи квадрата данного числа цифра 1.

1.4. Поменять в слове первую и последнюю буквы.

1.5. Если в слове нечетное число букв, то удвоить среднюю.

1.6. По последнему символу определить тип предложения (повествовательное, вопросительное, восклицательное).

1.7. Определить, является ли данный символ латинской буквой.

1.8. Удалить из слова среднюю букву (или две средних).

Задание 2

Составьте программу для решения одной из следующих задач.

2.1. Заменить в арифметическом выражении знаки "+" на знаки "-", а знаки "-" на знаки "+".

2.2. Удалить все буквы "я" в данном слове.

2.3. Удвоить все четные буквы слова.

2.4. Удалить все предлоги "на" в данном предложении.

2.5. Вставить после каждой буквы данного слова букву "о".

2.6. Удалить лишние пробелы в данном предложении.

2.7. Удвоить каждую букву данного слова.

2.8. Заменить каждую точку многоточием (т.е. тремя точками).

Задание 3

Измените программу, составленную Вами при выполнении предыдущего задания так, чтобы в ней использовалась только одна строковая переменная, а если у Вас первоначально была только одна строковая переменная, то переделайте программу так, чтобы в ней было две строки – исходные данные и рабочая (результат).

Задание 4

Составьте и исполните программу для решения одной из задач.

4.1 Заменить в тексте все маленькие латинские буквы на большие, не изменяя все остальные символы.

4.2 Заменить в тексте все большие латинские буквы на маленькие, не изменяя все остальные символы.

Задание 5

Составьте и исполните программу для решения следующей задачи.

5.1. Удвоить все согласные буквы.

5.2. Удалить из данного слова все согласные буквы.

5.3. Проверить, имеются ли в данном слове одинаковые буквы.

5.4. Оставить в данном слове из каждого набора одинаковых букв, идущих подряд, только одну букву.

5.5. Определить возможность составления одного данного слова из букв другого данного слова с учетом кратности.

5.6. Определить возможность составления одного данного слова из букв другого данного слова без учета кратности.

5.7. Для подсчета количества слов в предложении, учитывая что между словами может быть несколько пробелов.

5.8. Выяснить, можно ли из символов заданного слова составить слово "море".

Дополнительные задания

1. Дата вводится с клавиатуры в виде текстовой величины, например, 31.12.99. (31 декабря 1999 г.). Составить программу, которая из нескольких дат определяет самую раннюю (1 балл).

2. Чтобы закодировать текст, его записывают в таблицу n´n строк, n - заданное нечетное число. Затем прочитывают по спирали, начиная с центра. Напишите программу раскодирования текста (1 балл).

3. Дан текст-словарь из n слов. Вводятся слова, в которых может быть допущена одна из следующих ошибок:

· пропущена одна буква;

· вставлена лишняя буква;

· искажена одна из букв;

Найти в словаре все слова, из которых могло бы получиться данное слово в результате не более одной ошибки (1 балл).

4. Шифровка текста с помощью решетки заключается в следующем. Решетка, то есть квадрат из клетчатой бумаги 10´10 клеток, некоторые клетки в котором вырезаны, совмещается с целым квадратом 10´10 клеток и через прорези на бумагу наносятся первые буквы текста. Затем решетка поворачивается на 90° и через прорези записываются следующие буквы. Это повторяется еще дважды. Таким образом, на бумагу наносятся 100 букв текста. Решетку можно изобразить квадратной матрицей порядка 10 из нулей и единиц (0 изображает прорезь). Доказать, что матрица А [i, j], i = 1…10, j = 1…10 может служить ключом шифра, если из элементов А [i, j], А [10-i+1, j], А [i, 10-j+1], А [10-i+1, 10-j+1] в точности один равен нулю.Дана последовательность из 100 букв и матрица-ключ.

· Зашифровать данную последовательность (1 балл);

· расшифровать последовательность (1 балл).

5. Имеется некоторое слово. Составить программу, которая генерирует всевозможные слова, состоящие из всех букв данного слова (в алфавитном порядке).(1 балл).

6. Имеется некоторое слово. Составить программу, которая генерирует все возможные слова, состоящие из N каких-либо букв данного слова. При этом:

а) в исходном слове все буквы различны (1 балл).

б) в исходном слове буквы могут повторяться (1 балл).

7. Имеется некоторое слово. Составить программу, которая генерирует все возможные слова, состоящие из каких-либо букв данного слова. При этом:

а) в исходном слове все буквы различны (1 балл).

б) в исходном слове буквы могут повторяться (1 балл).

8. Дана конечная последовательность левых и правых скобок K типов. Составить программу, проверяющую, можно ли в эту последовательность добавить цифры и знаки арифметических операций так, чтобы получилось правильное арифметическое выражение. (1 балл).

9. Составить программу перевода чисел из римской записи в арабскую и обратно. (1 балл).

10. Составить алгоритм вычисления арифметического выражения, содержащего только однозначные положительнвые числа и знаки +,-,*,/. (1 балл).

11. В русском тексте на 1000 букв в среднем приходится:

а - 62 б - 14 в - 38 г - 13 д - 25 е,е - 72 ж - 7 з - 16

и - 62 й - 10 к - 28 л - 35 м - 26 н - 53 о - 90 п - 23

р - 40 с - 45 т - 53 у - 21 ф - 2 х - 9 ц - 4 ч - 12

ш - 6 щ - 3 ь,ъ - 14 ы - 16 э - 3 ю - 6 я - 18 пробел - 174

Придумать кодирование букв последовательностями из 0 и 1 (необязательно одинаковой длины) так, чтобы сообщение однозначно раскодировалось и имело по возможности минимальную длину. (2 балла).

 

Лабораторная работа №10 Обработка литерных величин на языке Турбопаскаль

Цель работы: Закрепить умение составлять алгоритмы обработки строковых переменных, научиться составлять вспомогательные алгоритмы.

 

Загрузите программу lab10.pas, проверьте ее исполнение.

Задание 1

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

1.1 с общим концом в конце соответствующей строки;

1.2 с общим концом в середине соответствующей строки;

1.3 с общей серединой в середине соответствующей строки;

1.4 по два в строку с выравниванием по концам слов;

1.5 по два в строку с выравниванием по серединам слов.

Задание 2

Дополнить предыдущую программу так, чтобы отдельно дополнительно печатались:

2.1 слова, начинающиеся с буквы "а";

2.2 слова, в которых есть буква "а";

2.3 слова, которые короче 5 букв;

2.4 слова, которые длиннее 8 букв;

2.5 слова, которые заканчиваются на "o";

2.6 слова, у которых первый и последний символы совпадают;

2.7 слова с нечетным количеством букв;

2.8 слова, в которые входит буква "в".

Задание 3

Изменить предыдущую программу так, чтобы:

3.1 перевернуть каждое слово;

3.2 подсчитать количество шипящих букв в каждом слове;

3.3 определить количество слов, состоящих из одного, двух, трех и более слогов;

3.4 найти длину самого короткого слова;

3.5 печатались слова, из букв которых можно составить слово 'море';

3.6 для каждого из слов указывалось, сколько раз оно встречается;

3.7 вычислялось количество слогов в каждом слове;

3.8 находилось количество слов-палиндромов.

Задание 4

Составить процедуру, которая:

4.1 в данном слове считает количество букв "а"

4.2 удаляет в данном слове четные буквы

4.3 считает, сколько раз данное слово встречается в массиве

4.4 заменяет в данном слове все буквы "n" на "m"

4.5 в данном слове считает количество букв "о"

4.6 удаляет в данном слове букву "а"

4.7 вставляет в данном слове букву "о" после каждой буквы

4.8 удваивает все буквы в данном слове

и опробовать ее для каждого слова из введенного массива.

Задание 5

Составить программу, которая:

5.1 проверяет, правильна ли запись числа римскими цифрами;

5.2 находит все слова, содержащие наибольшее количество гласных букв;

5.3 упорядочивает список фамилий;

5.4 разбивает введенные слова на слоги;

5.5 находит для каждого слова наиболее часто встречающуюся букву;

5.6 переводит число из римской записи в арабскую;

5.7 Дан текст-словарь из N слов. Вводятся слова, в которых может быть допущены одна из следующих ошибок:

- пропущена одна буква;

- вставлена лишняя буква;

- искажена одна буква;

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

Дополнительные задания

1) Определить, сколько разных символов в каждом слове вводимого текста (1 балл).

2) Для каждого из слов введенного текста без повторов указать, сколько раз оно встречается среди слов заданного текста(1 балл).

3) Найти все слова введенного текста, содержащие наибольшее количество гласных букв (1 балл).

 

Лабораторная работа №11 Обработка двумерных массивов на языке Турбопаскаль

Цель работы: Закрепить умение составлять вспомогательные процедуры и функции на основе составления алгоритмов обработки двумерных массивов, сформировать умение работать с библиотекой вспомогательных алгоритмов.

 

Загрузите программу lab11.pas, проверьте ее исполнение, замените вызов процедуры ввода на вызов присваивания и снова исполните программу.

Задание 1

Изменив текст основной программы, решите одну из следующих задач:

Вычислить количество строк, где:

1.1 среднее арифметическое меньше нуля.

1.2 все элементы меньше нуля.

1.3 только один элемент не равен нулю.

1.4 есть элементы разных знаков.

1.5 все элементы упорядочены по возрастанию.

1.6 сумма отрицательных больше суммы положительных (те и другие присутствуют в строке обязательно).

Задание 2

2.1 Составьте и опробуйте процедуру печати одной строки массива.

2.2 Используя процедуры смены знака и нахождения максимума, составьте и опробуйте процедуру нахождения минимума в строке с указанным номером.

Задание 3

Решите одну из задач так, чтобы в тексте основной программы не было бы конструкций нахождения минимума (максимума), суммы и т.п.

Выведите на экран строку:

3.1 с минимальной суммой модулей.

3.2 с максимальной суммой модулей.

3.3 с минимальной суммой.

3.4 с максимальной суммой.

3.5 содержащую максимальный по модулю элемент.

3.6 содержащую минимальный из максимальных элементов строк.

3.7 содержащую максимальный из минимальных элементов строк.

Задание 4

Составить и опробовать процедуру (или несколько), которая:

4.1 заменяет все элементы целочисленного массива на числа с обратным порядком цифр;

4.2 заменяет все элементы вещественного массива на целые числа, полученные при удалении десятичной точки из записи соответствующего элемента;

4.3 заменяет все элементы вещественного массива на числа, у которых целая и дробная части поменялись местами;

4.4каждый элемент целочисленного массива заменяет на число его цифр;

4.5 заменяет все элементы целочисленного массива на числа, из которых удалена цифра 5.

Замечания: 1) исходный и конечный массивы должны быть выведены на экран;

2) при создании процедуры можно пользоваться любыми ранее изученными алгоритмами.

Задание 5

Составить рекурсивный алгоритм нахождения в одномерном массива А длины N:

5.1 суммы элементов;

5.2 максимального элемента;

5.3 минимального элемента;

5.4 номера максимального элемента;

5.5 номера минимального элемента;

5.6 количества отрицательных элементов;

5.7 номера последнего нуля;

5.8 номера последнего отрицательного элемента.

 

Лабораторная работа №12 Работа с одномерными и двумерными массивами

Цель работы: Закрепить умение составлять алгоритмы обработки одномерных и двумерных массивов с использованием вспомогательных процедур и функций.

 

Задание 1

Составьте с использованием вспомогательных процедур и функций программу для решения одной из следующих задач:

1.1. Имеются результаты n ежедневных измерений количества выпавших осадков. За какую из недель, считая с начала периода измерений, выпало наибольшее количество осадков?

1.2. Дан массив фамилий студентов 1-го курса и массив их результатов в беге на 100 метров. Составьте команду из четырех лучших бегунов для участия в эстафете 4*100.

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

1.4. Пусть таблица выигрышей лотереи представлена в виде двух массивов: первый - это выигравшие номера, второй - выпавшие выигрыши на эти номера. Ваша группа купила несколько билетов лотереи, номера которых занесены в третий массив. Для каждого номера определите выигрыш, если он есть и распечатайте результат в виде хорошо оформленной таблицы.

1.5. После I семестра все итоги по информатике были занесены в две базы, каждая из которых содержит сведения о фамилии студента и о количестве набранных им баллов. В одну из них занесены студенты первой подгруппы вашей группы, в другую - второй. Обе базы упорядочены по убыванию количества набранных баллов. Распечатайте вместе обе подгруппы студентов так, чтобы все результаты были упорядочены по убыванию.

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

1.7. Есть база, содержащая итоговые оценки по информатике, полученные каждым студентом группы за I полугодие. Студенты работали за ЭВМ парами, и данные в базе записаны так, что ученики из одной пары стоят рядом. Учитель зачислил учеников, получивших итоговую оценку 5, в отдельную группу для более углубленного изучения информатики. В результате некоторые ученики потеряли свои пары. Распечатайте список фамилий отличников по информатике и список новых пар, который бы вы составили на месте учителя, сохранив не распавшиеся пары.

1.8. Дан массив фамилий абитуриентов и массив результатов экзамена по математике. Оставьте в массивах только тех, кто будет допущен к следующему экзамену.

Задание 2

Составьте с использованием вспомогательных процедур и функций программу для решения одной из следующих задач:

1.1. Для двумерного массива, содержащего сведения о расписании занятий в вашей группе (<день недели>,<номер пары>,<назв. предмета>), напечатайте, какие предметы изучают студенты (предметы не должны повторяться).

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

1.3. Есть массивы, содержащие фамилии всех студентов Вашей группы и все оценки по информатике, полученные каждым студентом группы за I полугодие. В третьем массиве записаны критерии итоговых оценок, определяемых по сумме набранных каждым студентом баллов. Составьте программу, которая печатает список студентов вместе с их итоговыми оценками.

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

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

1.6. В некоторых видах спортивных состязаний выступление каждого спортсмена независимо оценивается несколькими судьями, расставляющих всех спортсменов по местам. Затем для каждого спортсмена вычисляется сумма набранных им мест у каждого из судей, которая определяет итоговое место спортсмена. Составьте программу, которая вычисляет для каждого спортсмена сумму его мест (и распределяющую спортсменов по занятым ими местам).

1.7. Известны результаты вступительных экзаменов на определенную специальность. Определить проходной балл, если из числа абитуриентов необходимо отобрать k человек.

1.8. Клеточное поле размером m´n есть результат игры в крестики-нолики. Определить результат игры: выигрыш «крестиков», выигрыш «ноликов», ничья. Считается, что «крестики» выиграли, если найдется по горизонтали, вертикали или диагонали цепочка, состоящая подряд из 5 крестиков.

Лабораторная работа №13 Многочлены

Цель работы: Закрепить умение работать с библиотекой вспомогательных алгоритмов основе составления алгоритмов обработки многочленов.

 

Загрузите программу polinom.pas, подберите данные, удобные для тестирования и исполните ее.

Задание 1

Составьте программу для решения одной из предложенных задач.

1.1. Даны действительные числа a0, a1, a2, ..., a6, являющиеся коэффициентами многочлена r(x) шестой степени.

Получить для x=1, 3, 4 значение r(x+1)-r(x).

1.2. Дан многочлен P(x) степени n. Получить многочлен P2(x).

1.3. Дан многочлен P(x) степени n. Вычислить P'(1), P'(2), P(3).

1.4. Найти сумму многочленов f(x), g(x).

1.5. Вычислите значение многочлена f(x):

f(x)=(5, -7, 8, -3, 7), x0=3,

f(x)=(2, 2, -3, 4, -6, 5), x0=-0.5.

Задание 2

Составьте программу для решения одной из предложенных задач.

2.1. Даны действительное число a, многочлен P(x) степени n. Получить:

многочлен (x-a)P(x),

многочлен (x2+2ax+3)P(x),

многочлен (x2+a2)P(x).

2.2. Пользуясь схемой Горнера разделите с остатком многочлен f(x) на многочлен (x-x0) и вычислите f(x0).

а) f(x)=(1, -3, 6, -10, 16). x0=4.

б) f(x)=(1, 2, -3, -4, 1). x0= -1.

в) f(x)=(1, 5, -6, 8, -3). x0=2.

г)f(x)=(2, 7, -8, 3, -5). x0= -2.

д)f(x)=(3, -2, 6, -8, 11); x0= -1.5.

2.3.Найдите нормированный многочлен четвертой степени с действительными коэффициентами, имеющий двукратный корень 2 и простые корни 3 и (–1).

2.4.Разделите многочлен f(x) на многочлен g(x) с остатком.

а) f(x)=(4, -2, 1, 1, 2); g(x)=(2, -1, -1, 1).

б) f(x)=(2, -3, 4, -5, 6); g(x)=(1, -3, 1).

в) f(x)=(1, -3, -1, -1); g(x)=(3, -2, 1).

Задание 3

Составьте программу для решения одной из предложенных задач:

3.1. Даны действительные числа a0, a1, a2, ..a12, являющиеся коэффициентами многочлена p(x) степени 5. Получить p(1)-p2(3)-2p(2).

3.2. Даны действительные числа s и t, натуральное число n, действительные числа a0, a1, a2, ..., an. Среди a0, a1, a2, ..., an есть как отрицательные, так и неотрицательные числа. Получить значение P(s)+Q(t), где в качестве коэффициентов многочлена P взяты отрицательные члены последовательности a0, a1, a2, ..., an (с сохранением порядка их следования), а в качестве коэффициентов многочлена Q- неотрицательные члены (также с сохранением порядка их следования).

3.3. Даны действительные числа s, t, многочлен P(X) степени n. Получить многочлен (sx2+t)P(x)+P'(x).

3.4. С помощью схемы Горнера найдите кратность корня x0 многочлена f(x):

а) x0=1; f(x)=(1, -5, -2, 26, -31, 11).

б) x0=2; f(x)=(1, -5, 7, -2, 4, -8).

в) x0=-2; f(x)=(1, 7, 16, 8, -16, -16).

г) x0=-2; f(x)=(1, 3, -4, 6, -5).

д) x0=3; f(x)=(2, 0, -3, 6, -8, -4).

е) x0=-4; f(x)=(2, 0, 1, 0, -3, 0, 4, -7).

ж) x0=3; f(x)=(1, -6, 10, -6, 9).

з) x0=-2;f(x)=(1, 6, 11, 2, -12, -8).

3.5. Найти сумму коэффициентов многочлена f(x), равного (2-5x+x2)t(3-7x+9x2)s. Значения s и t введите с клавиатуры.

Задание 4

Составьте программу для решения одной из предложенных задач:

5.1. Даны целые числа n0, d0, n1, d1, ..., n7, d7, a, b (d0d1...d7b<>0). Вычислить по схеме Горнера .

5.2. Даны действительные числа a0, a1, ..., a5. Получить многочлен шестой степени (x-a0)(x-a1)...(x-a5).

5.3. Даны действительные числа a0, ..., a5, d0, ..., d5. Получить многочлен шестой степени d0+d1(x-a0)+d2(x-a0)(x-a1)+...+d5(x-a0)(x-a1)...(x-a5).

5.4. Последовательность многочленов T0(x), T1(x), ... определяется следующим образом:

T0(x)=1,

T1(x)=x,

Tk(x)=2xTk-1(x)-Tk-2(x) (k=2, 3, ...).

Получить все многочлены, начиная с T2(x) до T8(x).

5.5. Последовательность многочленов H0(x), H1(x), ... определяется следующим образом:

H0(x)=1,

H1(x)=x,

 

Hk(x)=xHk-1(x)-(k-1)Hk-2(x) (k=2, 3, ...).

Получить:

а) H2 (x), H4 (x), H6 (x).

б) Даны действительные числа a0, ..., a6. Получить многочлен

a0H0 (x)+...+a6H6 (x).

в) Данo действительнoе числа a. Вычислить H0(a)+...+H6(a).

5.6. Последовательность многочленов G0(x), G1(x), ... определяется следующим образом:

G0(x)=1,

G1(x)=x-1,

Gk(x)=(x-2k+1)Gk-1(x)-(k-1)2Gk-2(x) (k=2, 3, ...).

Получить:

а) G3(x), G5(x), G7(x).

б) Даны действительные числа a0, ..., a6. Получить многочлен a0G0(x)+...+a6G6(x).

в) Данo действительнoе числа a. Вычислить G0(a)+...+G6(a).

5.7. Пользуясь схемой Горнера, найти значение многочлена f(x) и его производных при x=a.

а)f(x)=(4, -2, 5, -1), a=2.

б)f(x)=(3, 8, -2, 6, -5), a=3.

в)f(x)=(1, 9, 7, -2, -11, 7), a=-4.

5.8. Многочлен f(x)четвертой степени со старшим коэффициентом, равным 1, имеет число (-2 ) трехкратным корнем и при делении на (x+3) дает остаток, равный (-1). Найдите этот многочлен.

Задание 5

Составьте программу для решения одной из предложенных задач:

5.1. Даны целые числа f1, f2, f3, ..., f10, являющиеся коэффициентами многочлена z(x). Исследовать существование целочисленных корней уравнения z(x)=0.

5.2. Даны действительные числа a0, ..., an, b0, b1, ..., bn (a0, ..., an попарно раличны). Требуется найти многочлен F(x) степени не выше n, такой, что F(ai)=bi (i=0, 1, 2, ..., n).

5.3. Найдите наибольший общий делитель многочленов f(x), g(x):

а) f(x)=(1, 3, -1, -4, -3), g(x)=(3, 10, 2, -3).

б) f(x)=(1, 1, -3, -4, -1), g(x)=(1, 1, -1, -1).

в) f(x)=(1, 2, -4, -3, 8, -5), g(x)=(1, 1, -1, 1).

г) f(x)=(1, 1, 2, 1, 1), g(x)=(1, -2, 1, -2).

д) f(x)=(1, 2, 2, 2, 2), g(x)=(1, 0, 3, 2).

е) f(x)=(1, 6, 17, 24, 12), g(x)=(1, -2, -13, -10).

ж) f(x)=(1, 1, 3, 4, 4, 2), g(x)=(1, 2, 3, 6, 6, 2).

з) f(x)=(1, 6, 2, 3, 6, 1), g(x)=(1, 6, 4, 4, 6).

5.4. Найдите наименьшее общее кратное многочленов f(x), g(x):

а) f(x)=(2, 0, 1, -3), g(x)=(1, 1, -2).

б) f(x)=(1, -2, 1, 7, -12, 10), g(x)=(3, -6, 5, 2, -2).

в) f(x)=(1, 0, -10, 0, 1), g(x)=(1, -4, 2, 6, 4, 2, 1).

5.5. Даны действительные числа a0, ..., a5, многочлен P(x) шестой степени.

Получить действительные числа d0, ..., d6 такие, что

P(x)=d0+d1(x-a0)+d2(x-a0)(x-a1)+...+d6(x-a0)(x-a1)...(x-a5).

 

Лабораторная работа №14 Линейная комбинация векторов

  Файл LIST.1 содержит заголовок программы, функции det2, det3 и следующие…  

Задание 1

Исполните программу вычисления суммы k векторов.

Задание 2

Переделайте предыдущую программу так, чтобы вычислялась линейная комбинация k векторов.

Задание 3

Составьте программу, определяющую:

а) коллинеарны ли два вектора плоскости;

б) компланарны ли три вектора.

Задание 4

Составьте программу, определяющую составляющую q вектора p на вектор a при косом проектировании в направлении вектора b

Задание 5

Составьте программу для решения одной из следующих задач:

а) Найти составляющую q вектора p на плоскость, определяемую векторами a и b, при косом проектировании в направлении вектора c (в случае компланарности ввод векторов a,b,c повторяется).

 

б) Произвольная пирамида SABCD, в основании которой лежит параллелограмм ABCD, задана векторами SA=a, SB=b, SC=c. Вычислить вектор MN, где M - середина ребра SD, N - центроид треугольника SAC.

 

в) Произвольная пирамида SABCD, в основании которой лежит трапеция ABCD (CD=L*BA), задана векторами SA=a, SB=b, SC=c. Вычислить вектор MN, где M - середина ребра SD, N - центроид треугольника SAC.

 

г) Наклонная треугольная призма ABCA1B1C1 построена на векторах AB=a, AС=b,AA1=c. Найдите вектор МN,если М - центр параллелограмма BCC1B1, а N - центроид треугольника A1B1C1.

 

д) Параллелепипед ABCDA1B1C1D1 построен на векторах AB=a,AD=b,AA1=c. Найдите вектор МN,если М – середина ребра CC1,а N - центроид треугольника CB1D1.

 

е) Усеченная четырехугольная пирамида ABCDA1B1C1D1, в основании которой лежит параллелограмм A1B1C1D1,a отношение сходственных ребер равно L, задана векторами AB=a, AD=b, AA1=c. Найдите вектор МN, если М - середина ребра CC1, а N - центроид треугольника АB1D1.

 

ж) Усеченная четырехугольная пирамида ABCDA1B1C1D1, в основании которой лежит трапеция A1B1C1D1 (А1B1 = L*D1C1), a отношение сходственных ребер равно K, задана векторами AB=a, AD=b, AA1=c. Найдите вектор МN, если М-середина ребра CC1, а N - центроид треугольника АB1D1.

 

з) Трапеции ABCD и AB1C1D1, расположенные в различных плоскостях, имеют общую вершину А и равные отношения оснований (AD/BC = AD1/B1C1 = L).Проверьте, что отрезки BB1, CC1, DD1 параллельны некоторой плоскости (Примем АB1=a, AB=b, AD=c, AD1=d).

 

и) На сторонах AB,BC,CD,DA косого четырехугольника ABCD, не обязательно лежащего в одной плоскости, взяты точки А1, B1, C1, D1 соответственно так, что AA1=AB/2, BB1=BC*2/3, CC1=CD*3/4, DD1=DA/7. Проверьте, что векторы A1B1, B1C1, C1D1 компланарны. Предполагается, что заданы векторы AB=a, AC=b, AD=c.

 

Задания повышенной трудности

к) Трапеции ABCD и AB1C1D1, расположенные в различных плоскостях, имеют общую вершину А и равные отношения оснований ( AD/BC=AD1/B1C1=L). Найдите вектор ОО1,соединяющий точки пересечения диагоналей трапеций. Предполагается, что заданы векторы AB=a, AD=b, AB1=p, AD1=q.

 

л) Наклонная призма ABCDA1B1C1D1, в основании которой лежит трапеция ABCD (BA = L*CD), построена на векторах BA=a, BC=b, BB1=c. Вычислить вектор ОD1,где О - точка пересечения диагоналей основания.

 

м) Найти составляющие p1,p2,p3 вектора p на плоскости, определяемые векторами a и b, векторами c и b, векторами a и c соответственно при косом проектировании в направлении векторов c,b,a соответственно. Определить, являются ли вектора p и S=p1+p2+p3 коллинеарными. Если да, то определить коэффициент пропорциональности.

Лабораторная работа №15 Скалярное произведение векторов.

Цель работы: Научиться составлять алгоритмы решения геометрических задач по теме "Скалярное произведение векторов", используя заданный набор процедур.

 

Файл LIST.2 содержит заголовок программ функции det2, modulus, scalar и следующие процедуры:input, output, sum, subtract, multiply, angle, vectormult.

 

Задания к лабораторной работе.

Задание 1

Для векторов a и b вычислите:

а) скалярное произведение;

б) модули векторов;

в) угол между векторами в градусах;

г) координаты векторного произведения;

д) площадь треугольника, построенного на векторах a и b.

 

Задание 2

Ромб задан векторами смежных сторон. Проверьте, то диагонали перпендикулярны.

 

Задание 3

Тетраэдр SABC задан векторами трех ребер a,b,c, выходящих из одной вершины (точка S совпадает с началом координат). Найдите:

а) объем тетраэдра;

б) угол между векторами c и a-b;

в) площади грани ABC;

г) величину проекции вектора a на грань (ABC);

д) центроид G тетраэдра.

 

Задание 4

Дано некомпланарные вектора a,b,c. Произведите ортогонализацию данного базиса.

 

Задание 5

Тетраэдр SABC задан векторами трех ребер a,b,c, выходящих из одной вершины (точка S совпадает с началом координат). Найдите:

a) центр вписанной сферы;

б) расстояние между центром вписанной сферы и центроидом;

в) величину двугранного угла при ребре SA;

г) расстояние между парой противоположных ребер.

 

Лабораторная работа «Точка»

Цель работы: Научиться составлять алгоритмы решения геометрических задач по теме "Точка", используя заданный набор процедур.

 

Файл LIST.3 содержит заголовок программы функции det2, det3, modulus, scalar и следующие процедуры: input, output, sum, subtract, multiply, angle, centre.

 

Задания к лабораторной работе

Задание 1

Составить ПРОЦЕДУРУ нахождения координат точки М, делящей отрезок АВ в отношении АМ:МВ = t1:t2. Добавьте ее в файл LIST.3.

Задание 2

Найдите координаты образа точки А при:

a) центральной симметрии с центром C.

b) гомотетии с центром C и коэффициентом k.

Задание 3

Составьте программу для решения одной из следующих задач:

a) проверьте, принадлежат ли три точки одной прямой.

b) точки A и A1 делят отрезки BC и B1C1 соответственно в равных простых отношениях. Проверьте, что середины отрезков AA1, BB1, CC1 лежат на одной прямой.

Задание 4

Треугольник задан радиус-векторами вершин , , . Найдите:

a) длины всех сторон.

b) площадь треугольника.

c) координаты центроида.

d) координаты центра вписанной окружности;

e) величины углов треугольника в градусах.

Задание 5

Треугольник задан радиус-векторами вершин , , . Найдите:

a) длины всех высот;

b) длины всех медиан;

c) длины всех биссектрис.

 

Лабораторная работа «Прямая линия на плоскости»

Цель работы: Научиться составлять алгоритмы решения геометрических задач по теме "Прямая линия на плоскости", используя заданный набор процедур.

 

Файл LIST.4 содержит заголовок программы функции det2, pointline, modulus, scalar и следующие процедуры: input, output, sum, inputline, outputline, subtract, multiply, angle, system2.

 

Задания к лабораторной работе

Задание 1

Для прямой, заданной общим уравнением составить ПРОЦЕДУРЫ нахождения:

a) координат направляющего вектора.

b) координат нормального вектора.

b)

Задание 2

Составьте уравнение прямой, заданной:

a) двумя точками;

b) точкой и направляющим вектором;

c) точкой и нормальным вектором;

d) точкой и угловым коэффициентом;

e) медиатрисой.

e)

Задание 3

Дана прямая и две точки F(f1, f2), G(g1, g2). Найдите:

a) простое отношение, в котором прямая делит отрезок FG.

b) взаимное расположение точек относительно прямой.

c) расстояния от точек до прямой.

d) координаты образов точек при осевой симметрии относительно заданной прямой.

Задание 4

Даны две прямые. Определите:

a) взаимное расположение двух данных прямых (пересекаются, параллельны, совпадают).

b) угол между прямыми.

c) лежит ли заданная точка внутри полосы (проверить, параллельны ли прямые).

 

Задание 5

Решите одну из следующих задач:

a) Даны две пересекающиеся прямые и точка F(f1, f2), не лежащая ни на одной из этих прямых. Найдите уравнение биссектрисы того угла, в котором лежит точка.

b) Даны две пересекающиеся прямые и точка F(f1, f2), не лежащая ни на одной из этих прямых. Найдите величину угла, в котором лежит точка.

b)Даны две пересекающиеся прямые и точка F(f1, f2), не лежащая ни на одной из этих прямых. Найдите условие, при котором эта точка лежит в остром угле

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

d) Прямая q пересекает стороны AB, BC, CA треугольника или их продолжения соответственно в точках C1, A1, B1. Проверьте, что середины отрезков AA1, BB1, CC1 принадлежат одной прямой.

e) На прямых a и b заданы соответственно точки A, B, C и D, E, F. Проверьте, что точки пересечения прямых AD и CE, BD и CF, BE и AF принадлежат одной прямой.

f) Исследовать взаимное расположение трех прямых.

g) Определить, лежит ли точка внутри треугольника, заданного уравнениями сторон.

h) Дан четырехугольник ABCD, у которого пары противоположных сторон пересекаются в точках S и Т. Проверьте, что середины отрезков AC, BD и ST лежат на одной прямой (теорема Гаусса).

 

Лабораторная работа №16 Простейшие графические операторы

Задание 1

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

Задание 2

Нарисуйте на экране 16 разноцветных закрашенных фигур:

2.1. концентрических прямоугольников;

2.2. горизонтальных прямоугольников;

2.3. вертикальных прямоугольников;

2.4. прямоугольников, расположенных в виде решетки 4х4;

2.5. кругов, расположенных в виде решетки 4х4;

2.6. концентрических кругов.

Покажите рисунок преподавателю и сотрите.

Задание 3

Используя модификации оператора line, нарисуйте (так, чтобы его было легко передвинуть, задавая начальные координаты рисунка с клавиатуры):

3.1. звезду;

3.2. кленовый лист;

3.3. домик с трубой;

3.4. четырехугольную пирамиду (без невидимых линий);

3.5. снежинку;

3.6. гайку (с отверстием);

3.7. каркас параллелепипеда;

3.8. что-нибудь еще.

Программу сохраните на диске под своим именем.

Задание 4

Составьте и исполните программу для изображения графика какой-нибудь функции:

4.1. y=cos(ax+b) (параметры а и b запросите с клавиатуры);

4.2. y=tg(x)

4.3. y=ctg(x)

4.4. y=x2+ax+b (параметры а и b запросите с клавиатуры);

4.5. y=exp(ax) (параметр а запросите с клавиатуры);

4.6. y=ln(x)

Обозначьте оси, расставьте масштабные единицы, надпишите график функции.

{ОПЕРАТОР ВЫВОДА ТЕКСТА В ГРАФИЧЕСКОМ РЕЖИМЕ outtext('сообщение');}

Задание 5

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

Лабораторная работа №17 Создание движущихся рисунков

Задание 1

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

Задание 2

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

Задание 3

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

Задание 4

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

 

Задание 5

Совместите чередование фаз движения и перемещение рисунка по экрану (например, человечек ходит по нижней кромке экрана, птица летит по диагонали экрана, …).

 

Дополнительное задание

Разберитесь самостоятельно с организацией графики с помощью нескольких графических страниц и опробуйте их работу. В качестве модельного примера возьмите организацию движения колеса со спицами по горизонтальной прямой без проскальзывания. Реализуйте движение без использования графических страниц (1 балл) и с их использованием (2 балла) и сравните качество изображения при этих двух реализациях.

 

Лабораторная работа №18 Использование датчика случайных величин

Задание 1

Составьте программу, рисующую на экране «звездное небо», т.е. точки со случайными координатами и случайным цветом.

Задание 2

Составьте программу, имитирующую вращение круга в игре «Поле чудес». На экране должны поочередно зажигаться сектора с цифрами. Вращение должно заканчиваться при повторных запусках программы на разных секторах. Желательно, чтобы с течением времени вращение замедлялось. Программу сохраните.

Задание 3

Составьте программу, которая проверяет знание таблицы умножения, задавая пять различных вопросов. По итогам ответов опрашиваемому должна выставляться оценка. Программу сохраните.

Задание 4

Составьте программу, которая задумывает число в диапазоне от 1 до 1000, а затем отвечает «больше», «меньше» или «угадал» на вводимые Вами числа до тех пор, пока число не будет введено Вами правильно. Дополнительное задание (до 2 баллов). Научите машину угадывать задуманное Вами число. Затем составьте программу двусторонней игры «угадай число». Игра должна продолжаться до тех пор, пока один из игроков (Вы или машина) не отгадает задуманное противником число, при этом можно ограничить число попыток десятью.

Задание 5

Исправьте программу из задания 3 таким образом, чтобы вопросы выбирались случайным образом из заранее сформированного массива вопросов по какой-либо теме, а ответы, соответственно, – из массива ответов.

Задание 6

Дополните предыдущую программу таким образом, чтобы вопросы гарантированно выбирались без повторений. Массив вопросов должен отражать содержание выбранной Вами темы.

Дополнительные задания.

1. Дополните программу из задания 6 таким образом, чтобы после ответов на вопросы выставлялась итоговая оценка, сопровождаемая, в зависимости от успехов, различными рисунками (1 балл).

2. Генерирование бриждевых раскладов

В бридж играют полной карточной колодой из 52 карт (по 13 в каждой масти 2,3,4,5,6,7,8,9,T(ten-10), J(jack-валет), Q(queen-дама), K(king-король), A(ace-туз)). В начале каждой раздачи колода случайным образом делится поровну между четырьмя игроками. Составить программу, которая генерирует случайные расклады и изображает их на экране. (1 балл).

3. Разберитесь самостоятельно с воспроизведением звуков средствами языка Паскаль и дополните какую-нибудь из своих программ звуками и мелодиями (1 балл).

4. Тест на внимание.

Составить программу, которая рисует таблицу 5х5 (NxN), заполняет ее в случайном порядке числами от 1 до 25, а затем проверяет, за какое время испытуемый сумеет указать все числа в возрастающем (убывающем) порядке (до 3 баллов).

5. Составьте программу игры «Пятнадцать» (до 3 баллов).

6. Попробуйте, используя программы из заданий 2 и 6, создать некое подобие игры «Поле чудес» для двух или нескольких игроков (до 5 баллов).

 

Лабораторная работа N 19 Работа с множествами

Задание 1

Составьте программу подсчета с помощью множеств в тексте всех

1.1. гласных букв

1.2. согласных букв

1.3. знаков препинания

Составьте с помощью множеств программу, удаляющую из текста

1.4. гласные буквы

1.5. согласные буквы

1.6. знаки препинания

Составьте с помощью множеств программу удваивания в тексте

1.7. согласных букв

1.8. гласных букв

Задание 2-3

Составьте все нужные Вам в задании 4 процедуры или функции для

· ввода с клавиатуры числового множества

· ввода с клавиатуры числового массива

· вывода числового множества на экран

· вывода числового массива на экран

· вычисления количества элементов множества символов

· вычисления количества элементов числового множества

· ввода с клавиатуры множества символов

· вывода множества символов на экран

· вывода массива символов на экран

· перевода числового массива в числовое множество из тех же элементов

· перевода строки в множество символов, содержащихся в ней (все числа в диапазоне 1-100, а символы - произвольные).

Опробуйте их работу.

Задание 4

Составьте программу для решения одной из следующих задач:

4.1. Даны два массива. Сравнить множество их значений.

4.2. Дан массив и множество. Составить программу выясняющую, входит ли каждый элемент массива в множество.

4.3. Даны две строки. Сравнить множества их символов.

4.4. Определить, сколько выходных дней среди чисел мая текущего года, содержащихся в данном числовом массиве.

4.5. Дан массив натуральных двузначных чисел. Проверить, все ли его элементы являются простыми числами.

4.6. Даны две строки. Из множества символов первой строки удалить символы содержащиеся во второй строке.

Задание 5

Составьте программу для решения одной из следующих задач:

5.1. Сформировать множество чисел из первой сотни, которые имеют простыми делителями только числа 2,3,5.

5.2. сформировать множество простых чисел (от 1 до 100) с помощью алгоритма "решето Эратосфена"

5.3. Выяснить, есть ли общий элемент во всех данных одномерных массивах, вводимых с клавиатуры

5.4. Вывести на экран множество элементов, которые входят хотя бы в один из данных одномерных массивов

5.5. В двумерном массиве определить, есть ли общий элемент во всех строках

5.6. Дан русский текст. Подсчитать количество слов.

5.7. Дан текст, состоящий из арифметических выражений и слов. Подсчитать количество арифметических выражений не содержащих переменных и функций.

 

Лабораторная работа № 20 Работа с записями

Задание 1

Загрузите программу lab5.pas и исполните ее, используя процедуру priswaiwanie

Задание 2

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

Задание 3

Дополнить основную программу процедурой, которая вычисляет и печатает:

3.1 число студентов сдавших все экзамены и зачеты

3.2 средний балл группы

3.3 количество студентов, сдавших экзамены без двоек

3.4 количество студентов, сдавших экзамены без троек

3.5 количество студентов, сдавших экзамены на одни пятерки.

3.6 фамилия студента, имеющего самый высокий средний балл

3.7 предмет, успеваемость по которому была самой высокой

3.8 предмет, успеваемость по которому была самой низкой

Задание 4

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

Задание 5

Дополнить основную программу процедурой, которая вычисляет и печатает

5.1 количество человек не получающих стипендию

5.2 количество человек получающих обычную стипендию

5.3 количество человек получающих стипендию повышенную на 25%

5.4 количество человек получающих стипендию повышенную на 50%

 

Лабораторная работа N21 Работа с записями

Задание 1

Загрузить программу lab6.pas исполнить ее. Дополнить программу так, чтобы вычислялось и печаталось:

1.1 число мужчин;

1.2 средний возраст;

1.3 количество живущих в Ярославле;

1.4 число русских;

1.5 количество родившихся в первой половине месяца;

1.6 количество родившихся в зимние месяцы;

1.7 количества совершеннолетних.

Задание 2

Изменить основную программу так, чтобы вычислялся и печатался:

2.1 минимальный номер дома;

2.2 максимальный номер квартиры;

2.3 улица с самым длинным названием;

2.4 город с самым коротким названием;

2.5 самая длинная фамилия;

2.6 самое короткое имя;

2.7 самый маленький индекс.

Задание 3

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

3.1 есть ли однофамильцы;

3.2 есть ли тезки по имени и отчеству;

3.3 есть ли люди с одинаковым днем рождения;

3.4 есть ли люди, живущие на одной улице;

3.5 есть ли люди, живущие в одном доме;

3.6 есть ли люди, живущие в одной квартире.

Задание 4

Изменить основную программу так, чтобы вычислялся и печатался:

4.1 распределение числа родившихся по месяцам года;

4.2 распределение числа родившихся по дням месяца;

4.3 распределение числа родившихся по годам (нулевые числа должны пропускаться);

4.4 распределение числа живущих по городам [+1 балл].

Задание 5

Упорядочить массив записей по возрастанию:

5.1 длины фамилии;

5.2 года рождения;

5.3 длины названия улицы;

5.4 номера дома;

5.5 длины названия города;

5.6 номера квартиры;

5.7 возраста [+ 1 балла];

5.8 по алфавитному порядку фамилий.

Задание 6

Выбрать и распечатать (в том же виде, что и в программе) всех:

6.1 людей, живущих в Ярославле;

6.2 родившихся весной;

6.3 русских;

6.4 женщин;

6.5 людей с фамилией короче 10 букв;

6.6 с трехзначным номером квартиры;

6.7 мужчин с именем короче 8 букв;

6.8 русских с номером дома из одной цифры.

 

Лабораторная работа N22 Работа с файлами записей

Задание 1

Составить программу для чтения файла записей со следующей структурой:

фамилия ( string[20] )

имя ( string[20] )

специальность ( string[20] )

год рождения ( 1..9999 )

год смерти ( 1..9999 )

год открытия ( 1..9999 )

открытие ( string[255] )

страна ( string[40] )

Исполнить программу, дав файловой переменной имя "sciense". Распечатать фамилии, которые есть в этом файле.

Задание 2

Оформить печать, составив процедуру вывода. При этом на экране должно быть:

Фамилия и первая буква имени с позиции 3 до позиции 20

· годы жизни с 22 по 31

· страна с 33 по 41

· открытие с 43 по 67

· год открытия с 69 по 75

Задание 3

Дополнить печать колонкой "Число прожитых лет" с 77 по 80. Вывести на экран фамилию ученого, прожившего дольше остальных.

Задание 4

Распечатать с помощью процедуры вывода данные (в том же виде)

4.1 только о русских и советских ученых

4.2 только ученых, родившихся в XVIII веке

4.3 только ученых, родившихся в XIX веке

4.4 только ученых физиков

Задание 5

Определить, наиболее часто встречающуюся в данном файле

5.1 страну

5.2 специальность

5.3 век (среди лет открытий)

Лабораторная работа N23 Работа с файлами прямого доступа

Задание 1

1.1. Составить процедуру, которая создает файл из вещественных чисел, количество и значение которых, так же как и имя создаваемого файла вводится с клавиатуры;

1.2. То же задание, что и в 1.1, но для целых чисел.

Задание 2

Составить процедуры для чтения данных из файла в массив и печати полученного массива. Исполнить программу, дав файловой переменной имя файла, созданного Вами при выполнении задания 1.

Задание 3

Составить логическую функцию, которая не использует массивов и проверяет, выполняется ли свойство:

3.1 упорядоченности элементов некоторого файла по возрастанию;

3.2 что отрицательных элементов некоторого файла больше, чем положительных;

3.3 наличия нулевых элементов в некотором файле;

3.4 упорядоченности элементов некоторого файла по убыванию;

3.5 одинаковы ли два файла.

Проверить работу созданной функции на Ваших файлах.

Задание 4

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

4.2 То же, но для минимального элемента;

4.3 То же но для первого положительного элемента;

4.4 То же но для первого отрицательного элемента.

Задание 5

Составить и опробовать работу процедуры, которая не использует массивов и решает одну из следующих задач:

5.1. из двух файлов F и G одинаковой длины создает третий файл, в который записывается больший из компонентов двух файлов при их последовательном и одновременном просмотре или выдает сообщение о том, что файлы имеют разную длину;

5.2. в данном файле изменяет его содержимое таким образом, чтобы все его элементы с нечетными номерами были удвоены;

5.3. переписывает компоненты файла F1 в файл F2 в обратном порядке;

5.4. создает новый файл из тех целых чисел исходного файла, которые являются полными квадратами;

5.5. подсчитывает количество элементов файла F, меньших среднего арифметического всех элементов этого файла;

5.6. из файла, количество компонент которого кратно 3, переписывает содержимое в другой файл, производя в каждой тройке подряд идущих чисел (a b c) перестановку в порядке (c b a), причем, если количество компонент файла не кратно трем, то процедура выдает соответствующее сообщение и не выполняется.

Дополнительные залания

Составить и опробовать работу процедуры, которая определяет, есть ли в данном упорядоченном по возрастанию файле вещественных (целых) чисел данное… 2. Недостающее число (1 балл) Дан текстовый файл, имя которого вводится с клавиатуры. В его первой строке записано некоторое натуральное число N…

Лабораторная работа N 24 Работа с текстовыми файлами.

Задание 1

Составить и опробовать процедуру, считывающую текстовый файл с именем "sem1.21?", в котором каждая строка представляет собой фамилию студента и список всех оценок по информатике, полученных им за первый семестр. При этом фамилия отделяется от оценок запятой, так же как и оценки друг от друга. Знак "?" в имени файла надо заменить на порядковый номер вашей группы. Для проверки правильности чтения из каждой строки надо выделять фамилию и распечатывать их в столбик.

Задание 2

Дополнить предыдущую процедуру так, чтобы после считывания строки и выделения фамилии остаток строки разбивался на отдельные оценки, из которых создаются следующие числовые массивы:

- оценки за лабораторные работы (по 15 оценок у каждого)

- баллы за самостоятельные работы (по 5 оценок у каждого)

- баллы за собеседования (по 5 оценок у каждого)

- оценки за контролирующие программы (по 6 оценок у каждого)

- дополнительные баллы

- балл за итоговую контрольную работу

При этом должны вычисляться итоговые суммы по оценкам, записанным в строке и печататься вместе с фамилией на экран.

Дополнительное задание (+1 балл):

Составить и проверить работу процедуры, которая проверяет по полученным массивам корректность выставления оценок и выдает сообщение о том, что все оценки допустимые или полные сообщения о недопустимых оценках. При этом процедура должна производить пересчет неверных оценок. Например, если оценка за лабораторную работу 7 или 10, то ее надо заменить на 5, а оценку -3 за самостоятельную работу надо заменять на оценку -2 и т.д.

Задание 3

Составить процедуру печати информации в виде таблицы.

Задание 4

Составить и проверить работу процедуры, которая создает текстовый файл, в каждой строке которого записана фамилия студента и набранная им за семестр общая сумма баллов, отделенная от фамилии знаком "-".

Задание 5

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

Дополнительное задание (1 балл).

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

 

Лабораторная работа 25 Работа с динамической памятью

Задание 1

Составить программу, которая решает одну из следующих задач, используя только переменные динамической памяти:

1. посчитать сумму цифр данного целого числа;

2. посчитать сумму делителей данного целого числа;

3. определить, является ли данное целое число простым;

4. посчитать N-е число Фибоначчи;

5. посчитать сумму первых N чисел Фибоначчи;

6. посчитать количество трехзначных чисел с суммой цифр 13.

Задание 2

Составьте программу, которая формирует максимально длинный одномерный массив (коротких) целых чисел в динамической памяти и заполняет его случайными целыми числами из диапазона от 0 до 19. Уменьшите размер массива, сделав его кратным 1000.

Задание 3

Дополните предыдущую программу процедурой, которая проверяет на равномерность качество датчика случайных чисел Паскаля (для этого надо посчитать в сформированном массиве количество полученных 0, 1, 2 и т.д. и сравнить их между собой). Можно сравнивать значения счетчиков «на глазок» или с помощью критерия χ²-Пирсона (1 дополнительный балл за самостоятельное изучение критерия).

Задание 4

Составьте процедуру для упорядочивания сформированного массива.

Лабораторная работа №26 Работа со списками

Задание 1

Составить процедуры ввода и печати двунаправленного списка, опробовать их работу.

Задание 2

Составить нерекурсивную функцию для:

2.1. Подсчета числа элементов в списке

2.2. Нахождения суммы элементов списка

2.3. Нахождения максимума в непустом списке

2.4. Нахождения минимума в непустом списке

2.5. Поиска данного числа среди элементов списка (логическая функция)

2.6. Нахождения произведения ненулевых элементов списка

Задание 3

Составить аналогичную предыдущей рекурсивную функцию.

Задание 4

Выполнить одно из следующих заданий:

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

4.2. Составить процедуру смены местами двух последовательных элементов списка (аргументы – указатели на начало, конец списка и на первый из меняемых элементов, результат – указатели на начало и конец нового списка). Опробовать работу процедуры, а затем с ее помощью упорядочить данный список методом «пузырька».

Задание 5

Решить одну из следующих задач:

5.1. Составить процедуру слияния двух упорядоченных списков в один и с ее помощью организовать быструю сортировку списка.

5.2. Реализовать процедуру выбора водящего с помощью детской считалочки по кругу с выбыванием (после выбывшего счет начинается заново со следующего по кругу, а последний оставшийся и есть водящий).

5.3. Восстановить список, если есть список всех пар следующих друг за другом элементов, например по данным (4,13),(5,7),(7,3),(13,5),(67,4) должен быть получен исходный список (67,4,13,5,7,3).

Задание 6 (дополнительный балл)

Имеется указатель на первый элемент однонаправленного списка. Последний элемент списка указывает на nil. Описать алгоритм, (аккуратно, но не доводя до программы), с помощью которого можно установить корректность списка или наличие в нем циклов. При этом можно использовать только ограниченный объем памяти (например, не более 20 простых переменных). Кроме того, желательно, чтобы быстродействие программы было «хорошим», т.е. трудоемкость должна линейно зависеть от размера списка.

Лабораторная работа №27 Использование стека

Задание 1

Составьте с использованием процедур и функций программу, которая заполняет стек числами, введенными с клавиатуры, и распечатывает его содержимое, начиная от вершины. Используйте в программе реализацию стека в виде массива. После исполнения программу оставьте.

Задание 2

Составьте с использованием процедур и функций программу, которая заполняет стек числами, введенными с клавиатуры, и распечатывает его содержимое, начиная от вершины. Используйте в программе реализацию стека с использованием динамических структур. После исполнения программу оставьте.

Задание 3

Реализуйте задачу об определении правильности расстановки скобок трех типов «([{}])» в строке, не содержащей никаких других символов. Реализация стека при этом может быть любой на Ваше усмотрение.

Задание 4

Составьте и проверьте правильность работы программы по вычислению значения арифметического выражения, записанного в одну строку в постфиксной (или по желанию – префиксной) форме. При этом заранее известно, что все операнды в исходной строке являются целыми неотрицательными числами, выражение записано корректно, а числа и знаки операций разделяются друг от друга и между собой с помощью одного пробела. Реализация стека в данной программе должна отличаться от использованной Вами в задании 3.

Задание 5

Составьте программу для решения одной из следующих задач:

5.1. Перевести выражение с ограничениями из задания 4 и не содержащее скобок из обычной формы записи в постфиксную

5.2. Перевести выражение с ограничениями из задания 4 и не содержащее скобок из обычной формы записи в префиксную

5.3. Вычислить значение арифметического выражения с ограничениями из задания 4 и не содержащее скобок, записанного в обычной форме

5.4. Добавить в программу из задания 4 проверку корректности, т.е. прерывание работы с выдачей одного из сообщений: «мало чисел», «мало операций», «неверная структура», «некорректный символ»

5.5. (*) Вычислить значение арифметического выражения с ограничениями из задания 4, содержащее скобки.

5.6. (*) Перевести выражение с ограничениями из задания 4, содержащее скобки, из обычной формы записи в постфиксную.

Дополнительное задание (до 3 баллов)

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

Лабораторная работа №28 Работа с бинарными деревьями

Задание 1

Составьте процедуру создания Вашего генеалогического дерева. Запишите в него всех своих прямых предков, про которых Вы хоть что-нибудь знаете, указав их номер, ФИО, степень родства, годы жизни, профессию. При отсутствии соответствующих сведений в данной графе заносится какая-нибудь метка типа «-».

Задание 2

Составьте процедуру печати в виде таблицы информации о своих предках при обходе дерева «в глубину».

Задание 3

Составьте функции или процедуры для решения одной из следующих задач:

Посчитать количество элементов данного дерева;

Посчитать глубину данного дерева;

Найти данный элемент в данном дереве (ответ – указатель);

Найти данный элемент в данном дереве (ответ – логический);

Удалить данный элемент из данного дерева (удалить его, если он крайний и стереть информацию о нем, если он не является крайним);

Вставить данный элемент в нужное место генеалогического дерева.

Задание 4

Кроме вывода информации в виде таблицы, составьте процедуру вывода информации в виде дерева предков (т.е. снизу вверх).

Задание 5

Реализуйте в виде процедуры обход дерева «в ширину».

 

Лабораторная работа №29 Работа с деревьями поиска

Задание 1

Загрузите Вашу программу с предыдущей лабораторной работы. Составьте процедуру перенумерации вершин произвольного дерева таким образом, чтобы оно стало деревом поиска. Опробуйте ее работу на примере своего генеалогического дерева.

Задание 2

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

Задание 3-4

1. Составьте процедуру добавления одного элемента в дерево поиска и с ее помощью создайте процедуру, которая по массиву ключей создает дерево поиска с этими ключами. Опробуйте ее работу.

2. Составьте функции или процедуры для решения одной из следующих задач:

Найти данный элемент в дереве поиска (ответ – указатель);

Найти данный элемент в дереве поиска (ответ – логический);

Посчитать глубину данного дерева;

Посчитать количество элементов в данном дереве;

*Удалить элемент с данным ключом из дерева поиска

Задание 5

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

Дополнительные задания

Составьте программу для:

· создания сбалансированного дерева поиска по данному массиву (при этом создать и использовать процедуры левого и правого поворотов) (до 2 баллов);

· создания частотного словаря по данному текстовому файлу (1 балл).

 

Лабораторная работа №30 Создание деревьев разбора выражений

Задание 1

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

Задание 2-3

Составьте процедуры печати дерева в инфиксной, постфиксной форме и в виде дерева.

Задание 4

Составьте процедуру или функцию вычисления значения выражения по дереву его разбора. Проверьте ее на различных выражениях.

Задание 5

Измените программу так, чтобы она корректно обрабатывала выражения, содержащие скобки.

Дополнительные задания.

· Дополните программу разбора арифметического выражения диагностикой ошибок (1 балл);

· Модифицируйте программу так, чтобы можно было работать с выражениями, содержащими функции. При этом предусмотреть для тестирования ввод выражения из текстового файла, состоящего из одной строки (до 3 баллов);

· Создайте другую программу, с помощью которой можно разбирать логические выражения, содержащие константы, переменные, скобки и 3 операции: and, or, not (до 2 баллов);

· Составьте программу разбора выражения со строковыми и арифметическими операциями (до 3 баллов).


Примерные вопросы к собеседованиям

Величина. Команды присваивания, ветвления и выбора.

2. Дайте определения величины, выражения, оператора языка программирования. 3. Опишите общую структуру программы на языке Паскаль. Как называются основные… 4. Как по назначению разделяются величины в программе? Дайте определения.

Циклы

1. Объясните назначение команды повторения.

2. Назовите различные формы команды повторения на Паскале.

3. В каких случаях используется оператор FOR?

4. Какие формы записи оператора FOR существуют?

5. Как происходит работа оператора FOR?

6. Как могут располагаться друг относительно друга различные циклы внутри одной программы?

7. Какими должны быть идентификаторы параметров вложенных циклов?

8. Для каких значений параметра исполняется серия команд цикла с параметром?

9. Какие ограничения на начальное, конечное значение параметра и величину шага существуют на языке Паскаль?

10. Сколько раз исполнится тело цикла FOR в зависимости от формы оператора, начального и конечного значений:

  НЗ<КЗ НЗ=КЗ НЗ>КЗ
for to      
for downto      

11. Как организовать цикл с помощью оператора REPEAT?

12. Как организовать цикл с помощью оператора WHILE?

13. В чем отличие и сходство циклов REPEAT и WHILE?

14. Сравните работу циклов FOR, WHILE, REPEAT по следующим параметрам:

a) обязателен ли параметр цикла, и каким он должен быть;

b) требуется ли начальная установка параметра цикла;

c) возможно ли изменение параметра цикла в теле цикла;

d) в каком случае цикл завершается, и как определяется количество повторов;

e) может ли цикл не выполнится ни разу;

f) исполняется ли цикл всегда хотя бы один раз;

g) обязательно ли наличие операторных скобок в составном операторе тела цикла.

15. Переписать цикл FOR через WHILE (с положительным шагом).

16. Переписать цикл FOR через WHILE (с отрицательным шагом).

17. Переписать цикл FOR на алгоритмический язык:

17.1. с положительным шагом.

17.2. с отрицательным шагом.

18. Переписать цикл REPEAT на алгоритмический язык.

19. Переписать цикл WHILE через REPEAT.

20. Переписать цикл REPEAT через WHILE.

21. Переписать команду повторения "ДЛЯ" алгоритмического языка через FOR на Паскаль:

21.1. с положительным шагом.

21.2. с отрицательным шагом.

21.3. в общем виде.

22. Какие команды повторения на языке Паскаль и в каком случае не исполняются ни разу?

23. Сколько раз исполнится данная серия команд:

(1). m:=0; for i:=20 downto 2 do m:=m+1; (2). x:=1; repeat y:=sqr(x); x:=x+2; until x>=25; (3). t:=-10; while t<0 do begin y:=sqr(x); t:=t+1; end; (4). p:=1; for i:=10 downto 8 do p:=p*2;
(5). x:=1; y:=0; for i:=1 to x do for j:=5 downto y do write(i+j); (6). i:=1; a:=i<=2; p:=false; while a or p do begin i:=i+1; a:=i<=2; p:=not(p) end;
(7). b:='123'; repeat b:=b+b; until true;   (8). a:= -1; repeat a:=a+1; until a<>0;

24.При каком последнем значении будет исполняться цикл:

(1). for i=10 downto 8 do (2). g:=0; while g<0 do g:=g-1; (3). L:=13; repeat L:=13/2; until L>6;

25. Каково будет значение параметра цикла после его окончания:

(1). n:=2; for i:=10 downto 1 do n:=n+3; (2). y:=-1; repeat h:=sqr(y); y:=y+1; until y>=16; (3). u:=-25; while u<=0 do begin r:=sqr(u); u:=u+5; end;
(4). w:=1; for i:=8 to 8 do w:=w*2-1; (5). for c:='a' to 'z' do write(c);   (6). i:=1; repeat x:=10-i; i:=i-4; until i<-8;
(7). i:=1; a:=i<=2; p:=false; while a or p do begin i:=i+1; p:=not(p) end;   (8). y:=4<5; x:=-2; repeat x:=sqr(x); y:=not(y); until y;  

26. Найдите значение y после исполнения серии команд:

(1). y:=1; for i:=14 downto 2 do y:=3*y-2; (2). y:=12; repeat y:=y/2+3; until y>0; y:=y/3; (3). y:=1; while (y>12) and (y<25) y:=sqr(y)-5;
(4). readln(b); y:=56; repeat q:=b+10 y:=y/8; until q>b; (5). y:=8; w:=true; while (y>0) and w do begin if not(y mod 2=0) then w:=not(w) else y:=y/2; end; (6). y:=45; w:=false; while not(w) do begin if y mod 3=0 then y:=y/3 else w:=true; end;
(7). f:=256;y:=f; for i:=5 to trunc(f/32) do y:=sqrt(y); (8). s:=’’;y:=-2; repeat if y>5 then s:=’big’ else y:=y+2; until s<>’big’; (9). soob:=true;y:=0 for i:=0 to 5 do begin if soob then begin soob:=false; y:=y+5; end; if not(soob) then begin soob:=true; y:=y+2; end; end;

27. Найдите ошибки в записи серии команд:

(1). r:=0; for i:=1 to n do к:=k+i end; (2). q:=0; for i:=1 to n if q<0 then begin q:=q+i end;
(3). p:=6; for j:=9 to 8 do begin p+1:=i+1 end; readln(‘p=’,p); (4). q:=10;s:=’’; while q<>0 do s:=q*5-1; q:=q-1; writeln(s);
(5). n:=0;q:=true; while i<=5 and q do if i nod 2 =3 then trunc(i/2)=i/2 then q:=not(q);i:=0; else q:=false;i:=i-1; (6). readln(a); repeat; a:=a/2; until if a<2;
(7). writeln(q) y:=t-8; q:=y+t-q; until q<y or t>y; (8). for i=1 to p/2 do q:=q+2;
(9). q:=10; q:=(q+25)/5; for p:=1 to q do write(‘*’);
(10). t:='ура' for k to 1 do t:=t+'!'; (11). S:='1'; for i:=1 to S do write(S);
(12). S:=0 or S:=1; while (S=0) end (S<’1’) begin k:=k+1; S:=S-1; (13). a:= -1; b:=1; repeat: if a<1 then b:=b-1 if a>1 then b:=b+1; until: a>5
(14). for ch:=’a’ to ‘z’ S:=ch*2-ch; write(S); (15). while i<7 do begin if i:=1 then i:=4-x else i:=’8’;

28. Определите, что делает данный фрагмент программы:

(1). S:=0; n:=0; for i:=1 to 25 do if i mod 3 =0 then begin n:=n+1; S:=S*(n-1)/n+i/n end; (2). for i:=1900 to 2000 do if (i mod 4=0) and (i mod 100<>0) or (i mod 400=0) then write(i);
(3). while m<>n do if m>n then m:=m-n else n:=n-m; write(m); (4). write('m='); read(m); n1:=1; n2:=1; repeat n:=n1+n2; n2:=n1; n1:=n; until n>m; write(n);
(5). f:=false; i:=1; write('n='); readln(n); repeat write('m='); readln(m); i:=i+1; if m<n then f:=true else n:=m; until f or (i=100); if f then writeln('нет') else writeln('да'); (6). k:=0; i:=0; f:=true; repeat write('n='); readln(n); i:=i+1; if (n<0) and f then k:=k+1 else f:=false; until (i=50) or not(f); writeln(k);
(7). write('n='); readln(n); m:=0; for i:=1 to n-1 do if n mod i=0 then m:=m+i; if m=n then write('да') else write('нет');  

29. Напишите фрагмент программы для вычисления:

(1) суммы чисел, обратных к первым N натуральным числам;

(2) суммы квадратов чисел от 1 до n;

(3) n!;

(4) (2n+1)!!

(5) (2n)!!

(6) произведения (a-n)(a-2n)…(a-kn);

(7) суммы a-1+a-2+a-3+…+a-n;

(8) суммы a-1+a-2+a-4+a-8+…+

Массивы

2. Перечислите три основные свойства табличных величин (массивов). 3. Как описываются массивы на языке Паскаль? 4. Может ли массив содержать 1 элемент? не содержать ни одного элемента?

Литерные переменные

2. Как описываются литерные переменные на языке Turbopascal? 3. Объясните, какие значения могут принимать строковые величины А, В, С (что… var A: string;

Процедуры и функции

2. Что такое локальные и глобальные переменные и как они различаются на языке Паскаль? Сравните с алгоритмическим языком. 3. Как выглядит заголовок процедуры на языке Паскаль? 4. Как выглядит заголовок функции на языке Паскаль?

Графика

2. Как инициализируется и выключается графический режим? 3. Объясните, для чего предназначены и как используются стандартные процедуры… 4. Объясните, для чего предназначены и как используются стандартные функции основных элементов графических…

Датчик случайных величин

2. Что такое, по-вашему, равномерно распределенная случайная величина? 3. По какому принципу устроен датчик случайных чисел в языке Паскаль? 4. Приведите примеры использования датчика случайных чисел.

Множества

2. Как ввести множество с клавиатуры? 3. Как выводить множество на экран? 4. Выполните операции:

Записи

1. Что такое запись? В чем ее отличие от других структур данных?

2. Из чего состоит запись? Какого типа могут быть ее компоненты?

3. Как употребляется в программе оператор with?

4. Укажите синтаксические ошибки:

(1) type koor:record x,y,z=0..100;end; vektor:record n,k=koor;end; var A:array[1..4]of vektor; B:koor; x:integer; (4) type ent=record author,tite:string[50] bibl=record nom:real; kn:ent; var A:array[1..10] of bibl; B:array[1..10] of ent;
(2) type date=record day:1..31; month:1..12; year:1..9999; end; rem=record mes=array[1..5] of string[9]; ev=date;end; var tod:date; a:day; mem:array[1..100] of rem; (5) type klass=record f,im:string[20];end; oc=record ocenka:array[1..3] of integer; f:klass;end; var B:array[1..10] of oc;
(3) type com:record a,b:real;end; plo:record c:real d: complex;end; var a,b:array[1..100] of com;plo:real;  

5. Укажите тип переменной, если есть следующее описание:

type data=record

day:1..31;

month:1..12;

year:1..9999;

end;

rem=record

mes:array [1..5] of string[9];

event:data;

end;

var memos:array[1..100] of rem;

today:data; k:rem;

calendar:array[1..400] data;

(1) today.year (7) memos
(2) memos[2] (8) k.mes
(3) calendar[200] (9) calendar
(4) memos[16].mes[2] (10) memos[i].event
(5) k.event.year (11) calendar[1].day
(6) memos[16].mes[2][1] (12) rem.event  

6. Для описания из пункта 5 приведите примеры команд с переменными типа:

(1) 1..12 (2) data (3) rem

7. Укажите номера недопустимых операций, если дано следующее описание:

type zap=record

a:integer;

b:string[25];

c:array[1..10] of real; end;

kar=record

p:zap;

d:array[1..10] of char;end;

var T:zap;k:integer;

G:array[1..100] of zap;

O:array[1..100] of kar;

(1) for G[i].a=10 downto 1 do k:=k+1; (7) if O[99].c[6]=1945 then T.a:=200;
(2) if G[7].c=56.9 then O.d[4]:='9'; (8) if K=3 then O.d[4]:='9';
(3) for T.c[2]:=1 to 10 do k:=k+1; (9) O[17].p.a:=1990;
(4) G[5].c:=1990; (10) if G[99].c[6]=1945 then T.a:=20;
(5) if K=3 then O[4].d:='9'; (11) G[17].d:='ошибка';
(6) for T.a:=1 to 10 do k:=k+1; (12) G[17].d[i]:='1';

 

8.Укажите номер заголовка программы, который подходит для решения

следующей задачи:

(1) По успеваемости в сессию (зачеты, экзамены) определить размер назначаемой стипендии у каждого студента группы.

I. program stipendiya; type student=record fam:string[20]; zachet:array[1..10] of string[9]; marks:array[1..5] of real; end; var A:array[1..30] of student; II.program stipendiya; type student=record fam:string[20]; zachet:array[1..10] of string[9]; marks:array[1..5] of integer; end; var A:array[1..30] of student; III.program stipendiya; type student=record fam:string[20]; zachet:array[1..10] of string[9]; marks:array[1..5] of integer;end; var A,B:student;

(2) По данным заболеваемости на заводах Ярославля определить завод, на котором меньше всего пропущено дней по болeзни.

I.program zdorow; Type zawod=record Kolrab:integer; Den:integer; end; Var Z:array[1..5] of zawod; II.program zdorow; type zawod=record naz:string[40]; kolrab:array[1..500] of integer; den:integer; end; var Z:array[1..5] of zawod; III.program zdorow; type zawod=record naz:string[40]; kolrab:integer; den:integer; end; var Z:array[1..5] of zawod;

(3) По результатам игр в футбольном турнире определить команду победителя.

I.program turnir; Type komand=record Naz:string[15]; Rez:array[1..6] of real; Ochki:integer; end; Var K:array[1..7] of komand; II.program turnir; type komand=record naz:string[15]; rez:array[1..6] of string[5]; ochki:array[1..6] of real; end; var K:array[1..7] of komand; III.program turnir; type komand=record naz:string[15]; rez:array[1..6] of string[5]; ochki:integer; end; var K:array[1..7] of komand;

(4) По данным изменениям валютного курса для ряда стран в течение

текущего года определить изменение курса в % для каждой страны.

I.program walyuta; Type strana=record Naz:string[20]; Dened:real; Mestcurs:string[20]; end; Var W:array[1..12] of strana; II.program walyuta; type strana=record naz:char; dened:string[20]; mestcurs:array[1..12] of real; end; var W:array[1..12] of strana; III.program walyuta; type strana=record naz:string[20]; dened:string[20]; mestcurs:array[1..12] of real; end; var W:array[1..12] of strana;

(5) По итоговой турнирной таблице по хоккею определить команду, забившую больше всего шайб.

I.program turnir; type komanda=record naz:string[40]; result:integer; zab,prop:integer;end; var K:array[1..12] of komanda; II.program turnir; type komanda=record naz:string[40]; result:array[1..15] of string[5]; zab,prop:integer;end; var C,K:array[1..12] of komanda; III.program turnir; type komanda=record naz:integer; result:integer; zab,prop:real;end; var K:array[1..12] of komanda;

 

9. Напишите имя поля, которое отвечает за:

(1) результат последней игры i-ой команды, если заголовок программы имеет вид:

program turnir;

type komand=record

naz:string[15];

rez:array[1..6] of string[5];

och: integer; end;

var K:array[1..7] of komand;

(2) Номер дома последнего человека в списке, если заголовок программы имеет вид:

type adr=record

house:real;

street:string[20];end;

ank=resord

fam:string[20];

m:adr;end;

var spisok:array[1..10] of ank;

(3) год рождения i-го избирателя, если заголовок программы имеет вид:

type date=record

day:1..31;

month:1..12;

year:1..1999;

end;

izbiratel=record

fam:string[30];

rochd:date;

end;

var uchast:array[1..100] of izbiratel;

(4) ординату начала j-го вектора, если заголовок программы имеет вид:

type koor=record

h,y,z=0..100;end;

vektor=record

nach :koor;

kon:koor; end;

var A:array[1..4]of vektor;

(5) количество баллов i-го студента за 6-ю лабораторную работу, если заголовок программы имеет вид:

program upr;

type zachet=record

lab:array[1..10] of integer;

samrab:array[8] of integer;

konrab: integer; end;

var gryppa:array[1..25] of zachet;

 

10. Составьте заголовок программы (типы и переменные) для решения задач:

(1) Дан список группы, в котором указан размер стипендии, получаемой каждым студентом в каждом из 10 семестров, а также стоимость обучения студентов за каждый год.

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

(3) Дана спортивная таблица с указанием количества забитых и пропущенных мячей в каждой игре по футболу.

(4) Дан список рабочих, в котором указана начисленная заработная плата в каждом из четырех месяцев.

(5) Дан список районов Ярославской области, в котором указан план и фактические показатели надоев молока каждым районом в каждом квартале года.

(6) Дана таблица, в которой указано количество человек, прикрепленных к каждому округу, количество кандидатов в каждом округе, количество голосов отданных за каждого кандидата в каждом округе, количество бюллетеней, в которых вычеркнуты все кандидаты.

(7) Дана таблица, в которой указаны заводы, количество работающих на них человек, число обращений в поликлинику, количество пропущенных дней по болезни, скольким человекам выдавался больничный.

(8) Дана таблица, в которой указано количество лиц подававших заявления ( по категориям) для поступления в ЯГПИ (по факультетам),а так же указано число лиц принятых в ЯГПИ (по категориям и по факультетам).

(9) Дана таблица, являющаяся протоколом соревнований прыгунов в длину.(результаты в сантиметрах)

(10) Дана таблица, в которой указан курс валюты некоторых стран за определенный промежуток времени.

(11) Дана таблица, в которой за несколько лет указано количество студентов поступивших на каждый факультет ЯГПИ и успешно окончивших его через 5 лет.

(12) Дана таблица, в которой за несколько месяцев указано количество макулатуры и металлолома, собранных каждым классом.

(13) Дана таблица, в которой указана успеваемость студентов группы в данную сессию (фамилия, отметки, зачеты (проставить как + или -), оценки за экзамены).

Файлы

1. Что такое файл? Какие виды и типы файлов вы знаете?

2. Как описываются файловые переменные в заголовке программы?

3. Какие режимы работы с файлами вы знаете? Как их переключить?

4. Какова реакция машины на неверное имя файла при работе в разных режимах?

5. С какими файлами можно работать и как с файлами прямого доступа и как с файлами последовательного доступа?

6. Какие команды относятся только к одному типу файлов?

7. Как зависит от типа переменной S выполнение команды read(f,s) для текстового файла?

8. В чем разница между командами read(f,s), readln(f,s), read(s) и readln(s) при работе с текстовыми файлами?

9. В чем разница между командами write(f,s), writeln(f,s), write(s) и writeln(s) при работе с текстовыми файлами?

10. Объясните, для чего предназначены и как используются следующие команды:

(1) write(f,e); (2) read(s,p); (3) eof(f); (4) reset(w); (5) rewrite(p); (6) assing(f,'lab8.pas'); (7) filesize(f); (8) seek(f,5); (9) writeln(f,s); (10) readln(f1,s); (11) close(f); (12) eoln(f);  

11. Укажите ошибки:

(1) var f:file of integer; i:integer; x:array[1..100] of integer; begin assign(f,'файл1'); rewrite(f); i:=1; while not(eoln(f)) do bedin read(f,x[i]); i:=i+1; end; end. (4) var f:file of real; i:integer; x:array of integer; n:=1; repeat reset(f); read(f,x[n]); n:=n+1; until eof(f); end.
(2) var f:file of integer; i:integer; x:array[1..100] of real; begin assign(f,'файл1'); reset(f); i:=1; while eof(f) do begin read(f,x[n]); i:=i+1; end; end. (5) var f:file of real; i:integer; x:array of real; reset(f); i:=1; repeat readln(f,x[i]); until not(eof(f)); end.
(3) var f:file of integer; i,x:integer; reset(f,’файл1’); i:=1; while not(eof(f)) do begin readln(f,x[i]); i:=i+1; end; end. (6) var f:file of integer; i:integer; a:array[1..100] of integer; bagin assign(f,'файл1');rewrite(f); n:=1; repeat read(f,x[i]); i:=i+1; until eof(f);

12. Что делает данный фрагмент программы?

(1) var f:file of real; i,j:integer; begin assign(f,'файл1'); rewrite(f); for i:=1 to 100 do begin j:=sqr(i); write(f,j) end;close(f); (4) type t=file of integer; var f1,f2:t; a:integer; begin assign(f1,'файл1'); assign(f2,'файл2'); reset(f1); rewrite(f2); while not(eot(f1)) do begin read(f1, a); write(f2,a);end; a:=100; write(f2,a); end; close(f2);
(2) var f:file of real; s,i:integer; r:real; begin assign(f,'файл1'); reset(f); s:=0; i:=1; while not eot(f) do begin read (f,r); s:=sqr(r)+s; i:=i+1;end; (5) type t=file of integer; var f1,f2:t; a:integer; begin assign(f1,'файл1');assign(f2,'файл2'); reset(f1); rewrite(f2); while not(eot(f1)) do begin read(f1,a); write(f2,a);end; close(f2);
(3) type t=file of integer; var f1,f2,f3:t; a:integer; begin assign(f1,'файл1'); assign(f2,'файл2');assign(f3,'файл3'); reset(f1); reset(f2); rewrite(f3); while not(eot(f1)) do begin read(f1, a); write(f3,a); end; while not(eot(f2)) do begin read(f2, a); write(f3,a); end; close(f3); (6) type t=file of real; var f1,f2:t; a:real; begin assign(f1,'файл1');assign(f2,'файл2'); reset(f1); rewrite(f2); while not(eot(f1)) do begin read(f1,a); if a<0 then a:=-a; write(f2,a);end; close(f2);

13. Составьте процедуры на языке Паскаль для:

(1) чтения файла записей некоторой структуры в массив записей той же структуры;

(2) создание файла из 100 случайных целых чисел в диапазоне от 4 до 10;

(3) записи массива вещественных чисел в файл;

(4) объединения двух файлов вещественных чисел одинакового размера в один, в котором сначала идут числа из первого файла, а потом из второго;

(5) объединения двух файлов вещественных чисел одинакового размера в один, в котором числа из этих файлов чередуются,

(6) выделения из файла вещественных чисел первых двадцати чисел в новый файл;

(7) выделения из файла вещественных чисел последних двадцати чисел в новый файл;

(8) добавления одного числа в конец файла целых чисел;

(9) добавления одного числа в начало файла вещественных чисел;

(10) разбиения файла на два, один из которых содержит четные компоненты исходного файла, а второй – нечетные;

(11) разбиения файла на два – из положительных и неположительных компонент;

(12) создания из числового файла двух новых–из положительных и отрицательных чисел;

(13) объединения двух упорядоченных числовых файлов в один упорядоченный

Динамическая память

2. Какие виды внутренней памяти персонального компьютера Вы знаете? 3. Как распределяется оперативная память при работе программы на Паскале? 4. Каковы размеры статической памяти, выделяемой для хранения данных любой программы на Паскале? В чем ее…

Деревья

2) Приведите примеры деревьев. 3) Назовите различные способы графического представления древовидной… 4) Как с помощью массивов можно представить дерево?

Тексты программ для выполнения лабораторных работ

Файл PRIMER1.pas

uses crt; var f,i,o:string[15]; v,g,year:integer; begin

Файл lab10.pas

Файл lab11.pas

Файл Polinom.pas program polinoms; uses crt; type polinom=array[0..50] of real; var a,b,c,d:polinom; …

Файл List1.pas

type vector = array[1..20] of real; var m,g,s,f,a,b,c,d,p,q:vector;i,j,k,n:integer;l,w,v,x,y,z:real;  

Файл List2.pas

type vector = array[1..20] of real; var a,b,c,d,p,q,m,g,f,h:vector;i,j,k,n:integer;s,l,u,w,v,x,y,z:real;  

Файл LAB5.pas

{-----------------описание типов-----------------------} type st=string[20]; str=string[8]; ocenka=record ekz:array[1..6] of integer; zach1,zach2:str; end;

Файл LAB6.pas

{-----------------описание типов-----------------------} type st=string[20]; data=record

Примерный список индивидуальных задач

1. Составление программы решения задачи о назначениях.

2. Программа обхода конем шахматной доски произвольных размеров.

3. Программа превращения связного неориентированного графа в связный смешанный граф с максимальным количеством ориентированных ребер.

4. Программа нахождения эйлерова цикла в связном ориентированном графе, заданном матрицей смежности вершин.

5. Программа нахождения эйлерова цикла в связном неориентированном графе, заданном матрицей смежности.

6. Проверка условия разнообразия для задачи о назначениях, где двудольный граф задан матрицей смежности вершин.

7. Граф задан перечнем ребер с указанием весов. Написать программу построения остовного дерева с помощью алгоритма Краскала.

8. Граф задан матрицей весов. Написать программу построения остовного дерева с помощью алгоритма Прима.

9. Построение остовного графа с помощью «жадного» алгоритма (вершины графа заданы своими координатами на плоскости).

10. Определение изоморфности двух графов по их матрицам смежности (вершин).

11. Определение изоморфности двух графов по их матрицам инцидентности.

12. Определение системы ребер, которые надо удалить из графа, заданного матрицей смежности вершин, чтобы осталось дерево.

13. Программа нахождения максимального количества ребер в связном неориентированном графе, которые можно сделать ориентированными с сохранением связности графа.

14. На плоскости собрали некий механизм, состоящий из шестеренок с одинаковым шагом (т.е. расстоянием между соседними зубьями). Все шестеренки пронумерованы и для каждой из них известны номера шестеренок, с которыми она зацеплена. Составить программу, определяющую, можно ли привести весь механизм в движение, вращая какую-нибудь из шестеренок.

15. Определение двудольности графа по его матрице смежности вершин.

16. Построение максимального разреза в графе.

17. Нахождение цикла в графе, заданном матрицей смежности вершин.

18. Даны три пробирки по 100 мл. На двух из них имеются одинаковые метки, помечающие некоторые целые количества мл. Первоначально непомеченная пробирка заполнена жидкостью, а две другие – пустые. Составить программу, которая по количеству меток и их расположению определяет, можно ли отмерить с помощью переливаний 1 мл жидкости в одной из пробирок, и если да, то привести пример минимальной цепочки переливаний. Например. для 1 метки 33 цепочка состоит из 4 переливаний.

19. Нахождение кратчайшего пути в графе, заданном матрицей смежности вершин.

20. Определить по матрице смежности вершин графа, является ли он деревом.

21. Построение гамильтонова пути на полном ориентированном графе.

22. Определение возможности построения гамильтонова цикла на полном ор. графе.

23. Построение гамильтонова цикла на полном ориентированном графе.

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

25. Граф задан матрицей смежности. Написать программу, формирующую его матрицу достижимостей.

26. Граф задан матрицей смежности. Написать программу, выделяющую компоненты связности графа.

27. Граф задан матрицей смежности. Написать программу, которая определяет является ли граф эйлеровым и в случае, если является строит эйлеров цикл. В противном случае, указывает минимальное семейство путей, которые в совокупности содержат все ребра графа по одному разу.

28. Дан взвешенный граф, в котором нет циклов отрицательного веса. Найти путь минимального веса из одной заданной вершины в другую. (Алг. Форда - Белмана)

29. Дан взвешенный граф, в котором нет ребер отрицательного веса. Найти путь минимального веса из одной заданной вершины в другую.

30. Дан взвешенный граф. Найти кратчайшие пути между всеми парами вершин. (Алг. Флойда)

31. Пролетающие время от времени в опасной близости от нашего спутника Луны астероиды захватываются ее гравитационным полем и, будучи никем не задерживаемы, врезаются с огромной скоростью в лунную поверхность, оставляя в память о себе порядочных размеров кратеры приблизительно круглой формы. Увлекающийся астрономией профессор З. В. Ездочетов занялся изучением современной карты участка лунной поверхности. Он решил найти на ней максимально длинную цепочку вложенных друг в друга кратеров. Зная о Ваших недюжинных способностях в области построения алгоритмов, за помощью в решении этой непростой задачи он обратился к Вам.

32. Дан ориентированный граф с N вершинами (N<50). Вершины и дуги окрашены в цвета с номерами от 1 до M (M£6). Указаны две вершины, в которых находятся фишки игрока и конечная вершина. Правило перемещения фишек: игрок может передвигать фишку по дуге, если ее цвет совпадает с цветом вершины, в которой находится другая фишка; ходы можно делать только в направлении дуг графа; поочередность ходов необязательна. Игра заканчивается если одна из фишек достигает конечной вершины. Написать программу поиска кратчайшего пути до конечной вершины, если он существует.

33. Заданы два числа N и M (20£M£N£150), где N - количество точек на плоскости. Требуется построить дерево из M точек так, чтобы оно было оптимальным. Дерево называется оптимальным, если сумма всех его ребер минимальна. Все ребра - это расстояния между вершинами, заданными координатами точек на плоскости.

Даны два числа N и M. Построить граф из N вершин и M ребер. Каждой вершине ставится в соответствие число ребер, входящих в нее. Граф должен быть таким, чтобы сумма квадратов этих чисел была минимальна.