Заказать
Работа № 1
Состоит из трех отдельных заданий, которые охватывают
следующие темы:
1) условный оператор;
2) операторы циклов;
3) структурированные типы данных.
Результаты выполнения работы № 1 оформляются в виде
отчета, который для каждой задачи должен содержать следую-
щие пункты:
1) текст задачи;
2) подробное описание решения задачи и алгоритм;
3) код программы;
4) результаты работы программы (скриншот).
Отчет по контрольной работе вместе с работающими про-
граммами помещается в архив и отправляется преподавателю на
проверку. Пример оформления контрольной работы приведен в
приложении.
Задание № 1
Самое главное в этой задаче правильно сформулировать ус-
ловие для выбора. Это может быть одно сложное логическое вы-
ражение для одного условного оператора или несколько условий
попроще. В последнем случае условных операторов может быть
несколько.
В описании решения задачи необходимо объяснить, каким
образом выбирались эти условия.
Задание № 2
Эту задачу необходимо решить три раза с использованием
трех видов цикла: FOR, WHILE и REPEAT.
В выводах обязательно сравнить все три цикла и опреде-
лить, какой именно наилучшим образом подходит для решения
этой задачи и почему.
6
Задание № 3
Для решения этого задания используется один или несколь-
ко структурированных типов данных: строки, массивы, файлы,
записи.
При решении этих задач рекомендуется использовать под-
программы (процедуры и функции). Это позволит упростить от-
ладку программы.
Варианты заданий к работе № 1
Вариант № 1
1. Дано вещественное число а. Для функции y=f(x), график
которой приведен ниже, вычислить f(а).
2. Вычислить сумму натуральных нечетных чисел, не пре-
вышающих N.
3. Составить программу «сжатия» исходной строки симво-
лов: каждая подстрока, состоящая из нескольких вхождений од-
ного и того же символа, должна быть заменена на текст «x (k)»,
где x — символ, а k — строка, являющаяся записью числа вхож-
дений символа в исходную строку. 7
Вариант № 2
1. Дано вещественное число а. Для функции y=f(x), график
которой приведен ниже, вычислить f(а).
2. Вычислить произведение натуральных четных чисел, не
превышающих N.
3. Составить программу выравнивания заданной строки тек-
ста по ширине экрана.
Группы символов, разделенные пробелами и не содержащие
пробелов внутри себя, будем называть словами.
Выравнивание строки заключается в том, что между ее от-
дельными словами дополнительно вносятся пробелы так, чтобы
длина строки стала равной заданной длине (предполагается, что
требуемая длина не меньше исходной), а последнее слово строки
сдвинулось к ее правому краю.
Вариант № 3
1. Даны вещественные числа x и y. Определить, принадле-
жит ли точка с координатами (x; y) заштрихованной части плос-
кости.
8
2. Вычислить количество натуральных чисел, кратных трем
и не превышающих N.
3. С клавиатуры вводится слово длинной M*N символов.
Каждый символ необходимо разместить в отдельной ячейке дву-
мерного массива размером MxN, выбранной случайным образом.
Вывести на экран слово, получившееся в k-й строке.
Вариант № 4
1. Даны вещественные числа x и y. Определить, принадле-
жит ли точка с координатами (x; y) заштрихованной части плос-
кости.
2. Вводится последовательность ненулевых чисел, 0 — ко-
нец последовательности. Определить, сколько раз последова-
тельность поменяет знак.
3. В каждую ячейку двумерного массива поместить числа,
равные среднему геометрическому их индексов. Значения в каж-
дой четной строке заменить суммой значений соседних нечетных
строк. Количество строк в массиве должно быть нечетным чис-
лом.
Вариант № 5
1. Задан круг с центром в точке О(x0, y0) и радиусом R0 и
точка А(x1, y1). Определить, находится ли точка внутри круга.
2. Вводится последовательность из N произвольных чисел,
найти наименьшее положительное число.
3. С клавиатуры вводится строка, состоящая из цифр. Найти
сумму этих цифр. Если в строке встречаются другие символы,
необходимо вывести на экран сообщение: «Не является числом!». 9
Вариант № 6
1. Определить, пересекаются ли параболы у=аx
2
+bx+c и
у=dx2
+mx+n. Если пересекаются, то найти точку пересечения.
2. Вводится последовательность из N произвольных чисел,
найти среднее значение положительных элементов последова-
тельности.
3. В файле хранятся действительные числа. Необходимо оп-
ределить (без использования массивов) максимальное число, ми-
нимальное число и их среднее арифметическое.
Вариант № 7
1. Задана окружность с центром в точке О(x0, y0) и радиусом
R0, найти точки пересечения линии с осью абсцисс.
2. Вводится последовательность из N произвольных чисел.
Определить процент положительных, отрицательных и нулевых
элементов.
3. В файле хранятся целые числа. Найдите (без использова-
ния массивов) сумму четных чисел.
Вариант № 8
1. Задана окружность с центром в точке O(0,0) и радиусом
R0 и прямая y=ax+b. Определить, пересекаются ли прямая и ок-
ружность. Если пересекаются, найти точку пересечения.
2. Вводится последовательность из N произвольных чисел.
Найти наибольшее число в последовательности. Если таких чисел
несколько, определить, сколько их.
3. Для хранения координат точки на плоскости используется
тип данных TCoord. Для четырех точек, заданных своими коор-
динатами, определить, являются ли они вершинами прямоуголь-
ника.
Type
TCoord = record
x, y:real
end;
10
Вариант № 9
1. Дано вещественное число а. Для функции y=f(x) вычис-
лить f(а).
( )
( )
2
2
1 , при 0
7 12
1
, при 0 10
5
sin , при 10
2
x
x
x x
e fx x
x
x
x
x
? ? ?
? + ?
?? ? = << ?
?
? ? ? + ??
2. Задано число P. Определить количество его четных и не-
четных делителей.
3. В одномерном массиве типа TPeople находится информа-
ция о N студентах гр. з-81. Найти всех студентов одного роста.
Type
Tpeople = record
Name, SurName: string[30];
Height: byte;
end;
Вариант № 10
1. Дано вещественное число а. Для функции y=f(x) вычис-
лить f(а).
( ) ( )
2 6
2
2
1 , при 1
2 3
tg 1 , при 1 06
3
2 , при 0.6
3
x e
x
x x
x
fx x . x x
x
? ? ? ? < ? ? ? ?
? ? = ? ? ?? ? ? ?
? ?
> ? ?
?
2. Определить, является ли последовательность из N произ-
вольных чисел строго возрастающей (то есть каждый следующий
элемент больше предыдущего). 11
3. Будем называть обменом операцию, при которой значе-
ния двух ячеек одномерного массива меняются местами. Два
одинаковых одномерных массива А и В заполнены одними и теми
же случайными целыми числами. Используя метод простого об-
мена («пузырька»), отсортировать массивы: А по возрастанию;
В по убыванию. Подсчитать количество обменов в обоих случаях
и сравнить.
Вариант № 11
1. Определить по дате день недели, на который она прихо-
дится. Для вычисления даты использовать формулу:
.
Здесь d — число месяца, m — номер месяца, начиная с мар-
та (март — 1, апрель — 2, …, февраль — 12), Y — номер года в
столетии, c — количество столетий. Квадратные скобки означа-
ют, что нужно взять только целую часть от результата. В резуль-
тате вычислений должно получиться целое число в диапазоне
[0..6]: 1 — понедельник, 2 — вторник, …, 0 — воскресенье.
2. Протабулировать1
функцию на интервале [a, b] с шагом
h=0.01
Найти сумму значений функции в каждой точке.
3. Заполнить двумерный массив размерностью NxN (N не-
четное число) целыми числами от 1 до N*N по следующим пра-
вилам:
a) единица помещается в среднюю клетку первой строки;
b) заполнение массива происходит по диагоналям вправо и
вверх;
c) при достижении верхней строки следующее число поме-
щается в нижнюю строку так, как будто она находится над верх-
ней строкой;
1
Табулирование функции — это вычисление значений функции при
изменении аргумента от некоторого начального значения до некоторого
конечного значения с определенным шагом. 12
d) при достижении крайнего правого столбца следующее
число помещается в крайний левый столбец так, как будто он на-
ходится около крайнего правого столбца;
e) при достижении верхней клетки крайнего правого столб-
ца следует опуститься на одну строку ниже в вертикальном по-
рядке и продолжать заполнение клеток по правилу;
f) если клетка уже заполнена, следует опуститься на одну
строку ниже в вертикальном порядке и продолжать заполнение
клеток по правилу.
Вариант № 12
1. Составить программу для определения, пройдёт ли кирпич
с рёбрами a, b, c в прямоугольное отверстие со сторонами x, y.
2. Протабулировать функцию на интервале [a, b] с шагом
h=0.01
Найти сумму значений функции в каждой точке.
3. Магический, или волшебный, квадрат — это квадратная
таблица NxN, заполненная N2
числами таким образом, что сумма
чисел в каждой строке, каждом столбце и на обеих диагоналях
одинакова.
Задан двумерный массив размерностью NxN. Определить,
является ли он магическим квадратом.
Вариант № 13
1. Даны 4 точки, заданные координатами. Определить явля-
ется ли данная фигура трапецией.
2. Найти сумму ряда с точностью Eps
Значение точности Eps вводится с клавиатуры.
3. Одномерный массив размерностью 2n
, где n — целое по-
ложительное число, заполнен случайными положительными це-
лыми числами. Изменить массив по следующему правилу: в пер-
вую ячейку поместить модуль разности между значениями пер- 13
вой и второй ячеек, во вторую — модуль разности между значе-
ниями второй и третьей ячеек, … в последнюю — модуль разно-
сти между значениями последней и первой ячеек.
Определить, сколько понадобится таких преобразований,
прежде чем массив будет состоять из одних нулей.
Вариант № 14
1. Известны площади круга и квадрата. Определить: уме-
стится ли круг в квадрате, и наоборот.
2. Четырехзначное число N разбили по центру на два дву-
значных числа: a и b. Найти все числа, для которых выполняется
условие (a+b)
2
=N.
3. Результаты таблицы выигрышей денежной лотереи пред-
ставлены последовательностью натуральных чисел, записанных в
текстовом файле построчно. Три первые цифры каждого числа —
номер билета, а последние три цифры — величина выигрыша.
Определите и выведите номера билетов с наибольшим выигры-
шем. Например:
Входные данные:
10245857
1254387
132563
6377739
4237857
Результат:
102 -857
423 -857.
Вариант № 15
1. Имеется стол прямоугольной формы размером axb (a и
b — целые числа, a>b). На столе размещают картонные коробки с
размером основания cxd (c и d — целые числа, c>d). Как лучше
всего расставить коробки, длинной их стороной вдоль длинной
стороны стола или вдоль короткой? Коробки нельзя ставить друг
на друга, ставить боком, и они не должны свисать со стола. 14
2. Дано пятизначное число А. Шестизначное число B полу-
чается добавлением единицы слева к числу А. Число C также
шестизначное, но получается добавлением единицы справа от
числа A. Определить, чему равно число A, если известно, что C
больше B ровно в три раза.
3. Дано имя файла и целые положительные числа N и K.
Создать текстовый файл с указанным именем и записать в него N
строк, каждая из которых состоит из K символов «*» (звездочка).
Вариант № 16
1. Траектория снаряда, вылетающего из орудия под углом ?
с начальной скоростью v0, задается уравнениями:
где g=9,81 м/с
2
— ускорение свободного падения, t — время.
Даны значения ? и v0. Определить, поразит ли снаряд цель
высотой P, расположенную в вертикальной плоскости ствола
орудия на расстоянии R на высоте H.
2. Найти сумму ряда с точностью Eps для x=0.82
Значение точности Eps вводится с клавиатуры.
3. Задан вещественный массив А размерностью N. Заменить
элемент Ak (3?k?N), среднее арифметическое K первых элементов
массива.
15
Вариант № 17
1. Даны вещественные положительные числа a, b, c. Выяс-
нить, существует ли треугольник со сторонами a, b, c.
2. Найти количество n-значных чисел в десятичной системе
счисления, у каждого из которых сумма цифр равна k. При этом в
качестве n-значного числа допускаются числа, начинающиеся с
одного или нескольких нулей. Например, число 000102 рассмат-
ривается как шестизначное, сумма цифр которого равна 3.
3. Задан целочисленный массив А размерностью N. Необхо-
димо создать два массива B и C, при этом массив B содержит все
четные числа из массива А, а массив C — все нечетные числа
(в том же порядке).
Вариант № 18
1. Двузначное число задано цифрами a2a1, где a1 — число
единиц, a2 — число десятков (a2>1). Из каких цифр состоит чис-
ло, равное разности заданного числа и цифры b? Само число оп-
ределять не нужно.
2. На натуральном отрезке [a,b] найдите и выведите число N
с наибольшей суммой своих делителей. Само число и единицу в
качестве делителей не учитывать.
3. Для хранения координат точки на плоскости используется
тип данных TCoord. Треугольник задан координатами вершин.
Определите длины его сторон.
Type
TCoord = record
x, y:real
end;
Вариант № 19
1. Составить программу, которая по порядковому номеру
месяца определяет время года, к которому относится этот месяц.
2. Имеется n бактерий красного цвета. Через 1 такт времени
красная бактерия меняется на зелёную, затем через 1 такт време- 16
ни делится на красную и зелёную. Сколько будет всех бактерий
через k тактов времени?
3. С клавиатуры вводится строка в виде: d1–d2+d3–d4+…, где
dn — цифры (n>1). Вычислить записанную в строке алгебраиче-
скую сумму.
Вариант № 20
1. Определить, в какую из областей — I, II, III (см. рисунок) —
попадает точка с заданными координатами. Для простоты при-
нять, что точка не попадает на границы областей.
2. Женщина шла на базар и разбила яйца, лежавшие у неё в
корзине. Она сказала, что не знает, сколько яиц у неё было, но
когда она брала по 2, 3, 4, 5 и 6 яиц, то в конце в корзине всегда
оставалось одно яйцо. Когда же она брала по 7 яиц, то ничего не
оставалось. Сколько яиц могло быть в корзине?
3. Проверить, является ли «перевертышем» введенная с кла-
виатуры фраза после удаления из неё пробелов. «Перевёртышем»
называется слово (фраза), читаемое одинаково как с начала, так и
с конца. 17
Работа № 2
Цель: научиться описывать и использовать структуриро-
ванные типы данных.
Задание
1. Написать программу, которая создает типизированный
файл и записывает в него MxN значений. Имя для файла создает-
ся по маске <login2
>.dan.
2. Написать программу, которая создает массив A[M,N] и
заполняет его значениями из файла, созданного первой програм-
мой. Вывести на экран массив в виде матрицы MxN.
3. В следующей программе описать запись Homme, которая
используется для описания человека (поля: Имя, Отчество, Фа-
милия, дата рождения, пол). Создать файл типа Homme с именем
<login>.note и записать в него не менее 10 записей. Первая запись
должна описывать студента, выполняющего работу.
4. Написать программу, которая считывает из файла
<login>.note все данные и выводит на экран в виде таблицы, вы-
полненной по образцу ниже (табл. 1).
Таблица 1 — Образец таблицы для четвертого пункта задания
Фамилия Имя Отчество Пол Возраст
Гураков Алексей Валерьевич М 39
Мещеряков Павел Сергеевич М 35
… … … … …
Варианты заданий к работе № 2
Вариант M N Type
1 11 9 Byte
2 12 10 Real
3 13 11 Integer
4 14 12 Char
5 15 14 Boolean
6 15 16 Byte
7 16 18 Integer
8 17 13 Real
9 18 15 Char
10 19 17 Boolean
2
Логин выдается студенту в самом начале обучения. 18
Требования к оформлению отчета
В отчете необходимо привести текст заданий, описание и
код программ с комментариями. Привести результаты работы
программ в виде скриншота. Сделать выводы.
Вместе с отчетом необходимо выслать на проверку файлы,
содержашие коды программ, и файлы с результатами <login>.dan
и <login>.note. 19
ЛИТЕРАТУРА
1. Острейковский В. А. Информатика : учебник для вузов /
В. А. Острейковский. — М. : Высш. шк., 1999.
2. Вирт Н. Алгоритмы и структуры данных / Н. Вирт. —
М. : Мир, 1989.
3. Епанешников А. М. Программирование в среде Turbo
Pascal 7.0 / А. М. Епанешников, В. А. Епанешников. — 3-е изд.,
стер. — М. : ДИАЛОГ-МИФИ, 1996.
4. Культин Н .Б. Turbo Pascal в задачах и примерах / Н. Б.
Культин. — СПб. : БХВ-Петербург, 2000.
5. Немнюгин С. А. Turbo Pascal / С. А. Немнюгин. — СПб. :
Питер, 2000.
6. Шпак Ю. А. Turbo Pascal 7.0 на примерах / Ю. А. Шпак ; под
ред. Ю. С. Ковтанюка. — Киев : Юниор, 2003.
20
ПРИЛОЖЕНИЕ
Министерство образования и науки Р Ф
Томский государственный университет систем управления
и радиоэлектроники
Кафедра радиоэлектроники и защиты информации (РЗИ)
Контрольная работа № 1
по дисциплине «Информатика-2»
учебное пособие Гураков А.В., Мещеряков П.С. «Информатика. Часть 2»
Вариант № 2
Выполнил студент
направления подготовки 210400.62
Иванов Петр Семёнович
18.05.2013
Томск — 2013 21
Задание № 1
Даны вещественные числа x и y. Определить, принадлежит
ли точка с координатами (x; y) заштрихованной части плоскости.
Решение:
Заштрихованная область ограничена четырьмя прямыми:
Y=5
Y=0
Y=5x+15
Y=-5+15
Точка с координатами (x, y) будет принадлежать заштрихован-
ной области в том случае, если одновременно выполняются че-
тыре условия. Она должна лежать:
1. ниже прямой Y=5 (y?5);
2. выше прямой Y=0 (y?0);
3. ниже прямой Y=5x+15 (y?5x+15);
4. ниже прямой Y=-5x+15 (y?-5x+15).
Эти условия можно объединить с помощью операции логиче-
ское И:
(y?5) and (y?0) and (y?5x+15) and (y?-5x+15)
Теперь можно составить алгоритм решения задачи. 22
Алгоритм:
Описание структуры программы:
Для решения задачи достаточно двух переменных: x и y, в
которых будут храниться координаты точки. Обе переменные
вещественного типа.
Для очистки экрана используется специальная процедура
ClrScr из модуля CRT.
Код программы:
Program z_01;
Uses CRT;
Var
x, y: real; {координаты точки}
Begin
ClrScr;
Write(?Введите координаты точки (x, y) через пробел:?);
Readln(x,y);
If (y<=5) and (y>=0) and (y<=5*x+15) and (y<=-5*x+15) Then Writeln(?Принадлежит?)
Else Writeln(?Не принадлежит?);
End.
Результаты работы программы:
Для тестирования программы использовались две точки:
принадлежащая области (2, 3) и лежащая вне (3,1).
23
Задание № 2
Вводится последовательность ненулевых чисел, 0 — конец
последовательности. Определить наибольшее число в последова-
тельности.
Решение:
Пусть первое число в последовательности является макси-
мальным. Чтобы в этом убедиться, необходимо по очереди срав-
нить его со всеми остальными. Если какое-либо другое число
окажется больше, чем первое, то это число последовательности
принимается за максимальное и сравнивается с оставшимися.
Алгоритм:
24
Описание структурыпрограммы:
Необходимо минимум две переменных для реализации дан-
ного алгоритма. Так как явно тип данных не указан, принят цело-
численный тип.
Для цикла While необходимо изменить условие цикла на
противоположное. Поскольку выход из этого типа осуществляет-
ся после того, как условие станет ложным.
Использовать цикл For для решения данной задачи не-
эффективно, так как неизвестно точное количество чисел в по-
следовательности. В данной программе максимальное количество
итераций ограничено множеством допустимых значений для пе-
ременной цикла. Если ноль в последовательности возникнет
раньше, то требуется принудительное завершение работы цикла с
помощью процедуры Break.
В цикле Repeat возможна пустая итерация, если первое вве-
денное число будет равняться нулю. Однако это никаким образом
не повлияет на точность вычислений.
Код программы:
Program z_02;
uses crt;
Var
max, {максимальное значение}
x, {число последовательности}
i: integer; {переменная цикла FOR}
Begin
clrscr;
{Цикл While}
Writeln('Цикл While');
WriteLn('Введите числовой ряд в строку через пробел. Последним введите нуль:');
Read(x);
While x<>0 Do
Begin
If max<x Then max:=x; 25
Read(x)
End;
Writeln('Максимальное число последовательности - ', max);
{Цикл Repeat}
Writeln('Цикл Repet');
WriteLn('Введите числовой ряд в строку через пробел. Последним введите нуль:');
Read(x);
Repeat
If max<x Then max:=x;
Read(x)
Until x=0;
Writeln ('Максимальное число последовательности - ', max);
{Цикл For}
Writeln ('Цикл FOR');
WriteLn ('Введите числовой ряд в строку через пробел. Последним введите нуль:');
Read(x);
For i:=1 to MaxInt Do
Begin
If max<x Then max:=x;
Read(x);
If x=0 Then Break; {Выход из цикла если введен нуль}
end;
Writeln('Максимальное число последовательности - ', max);
End.
Результаты работы программы:
Задание № 3.
В файле типа Coord хранятся координаты N точек на плос-
кости. Все точки соединены отрезками. Определить длину наи-
большего отрезка.
Type
TCoord = record 26
x, y:real
end;
Решение:
Расстояние между двумя точками, заданными координатами
на плоскости, определяется по простой формуле:
Так как точек много, их координату лучше всего поместить
в массив. Тип массива определяется типом данных, считываемых
из файла, т.е. Coord.
Сначала определяется расстояние между первой и второй
точками R12 (первый и второй элементы массива) и принимается
за максимальное MaxR.
Далее определяется расстояние между первой и третьей R13.
Это расстояние сравнивается с R12. Если оно больше, чем R12, то
принимается за максимальное (MaxR:=R13). Затем определяется
расстояние между первой и четвертой точками, первой и пятой и
т.д. После того как будет найдено и проверено на максимум рас-
стояние между первой и последней точками, осуществляется по-
иск расстояний между второй и остальными точками, кроме пер-
вой. Затем между третьей и остальными, кроме первой и второй,
и т.д.
Для решения задачи понадобится два цикла. Внешний —
определяет номер первой точки из исследуемой пары, внутрен-
ний — номер второй. Переменная первого цикла будет изменять-
ся от 1 до N-1, где N — количество точек. Начальное значение 27
переменной второго цикла величина переменная, всегда больше
переменной первого цикла на единицу. Конечное значение равно
N.
Алгоритм:
Описание структуры программы:
Для тестирования и отладки программы понадобилось напи-
сать программу, которая создает файл типа TCoord и заносит в
него данные. Имя созданного файла — point.dat. Код программы
находится в файле WrPoint.pas. 28
Для открытия файла используются стандартные процедуры:
Assign и Reset. Закрыватеся файл с помощью процедура Close.
Количество точек определяется с помощью функции
FileSize:
N:=FileSize(F);
где F — файловая переменная типа TCoord; N:byte — количество
точек на плоскости.
Для считывания значений из файла и заполнения массива
используется цикл For, так как известно точно число записей в
файле.
Код программы:
Uses crt;
Type
TCoord=record
x, y: real;
end;
Mas=array [1..100] of TCoord;
Var
F:File of TCoord; {Файловая переменная}
MaxR, R : real; {Максимальное и текущее расстояние между точками}
N : byte; {Число точек на плоскости}
A : Mas; {Массив с координатами точек}
i, j:byte; {Номера точек}
Begin
ClrScr;
Assign(F,'point.dat');
Reset(F);
{Определяется количество точек в файле и заполняется массив А}
N:=Filesize(F);
For i:=1 To N Do Read(F, A);
{Перебирая всевозможные пары точек, определяется максимальное расстояние}
MaxR:=SQRT(SQR(A[1].x-A[2].x)+SQR(A[1].y-A[2].y));
For i:=1 To N-1 Do
For j:=i+1 To N Do
Begin
R:=SQRT(SQR(A.x-A[j].x)+SQR(A.y-A[j].y));
If R>MaxR Then MaxR:=R
End; 29
Writeln ('MaxR=', MaxR:0:2);
Close(F);
End.
Результаты работы программы:
Для удобства наших клиентов, проходящих обучение на ФДО ТУСУРа, была создана данная форма заказа, с помощью которой Вы можете БЕСПЛАТНО УЗНАТЬ СТОИМОСТЬ оказания помощи в выполнении работ по тем дисциплинам, которые Вам необходимы. Если Вы хотите заказать ОПТОМ выполнение одного и более семестров, то мы предложим Вам выполнение работ под ключ по самым выгодным ценам. Пожалуйста свяжитесь с нами по следующим контактам