Nickolay.info. Обучение. Задачник по основам программирования

ОГЛАВЛЕНИЕ

 

ТЕМА 1. ЛИНЕЙНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ  ПРОЦЕССЫ 4

ТЕМА 2. РАЗВЕТВЛЯЮЩИЕСЯ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ  7

ТЕМА 3. ЦИКЛИЧЕСКИЕ ВЫЧИСЛИТЕЛЬНЫЕ.............. 14

ПРОЦЕССЫ........................................................................... 14

ТЕМА 4. СТРУКТУРНЫЙ ТИП ДАННЫХ "МАССИВ"..... 25

Варианты задач на обработку векторов........................... 25

Варианты задач на обработку матриц.............................. 29

ТЕМА 5. ПОДПРОГРАММЫ............................................... 35

ТЕМА 6. ТЕКСТОВЫЕ ТИПЫ ДАННЫХ........................... 40

ТЕМА 7. ФАЙЛОВЫЕ ТИПЫ ДАННЫХ............................ 45

ТЕМА 8. ТИП "ЗАПИСЬ"....................................................... 52

Требования к оформлению индивидуального задания.. 52

КУРСОВАЯ РАБОТА........................................................... 53

Задание на курсовую работу............................................. 53

Пример отчета по курсовой работе.................................. 55

Варианты заданий курсового проекта............................. 63

ПРИЛОЖЕНИЕ 1. ТАБЛИЦЫ ASCII‑КОДОВ СИМВОЛОВ ДЛЯ ОПЕРАЦИОННЫХ СИСТЕМ DOS И WINDOWS............................................................................. 72

ПРИЛОЖЕНИЕ 2. РАСШИРЕННЫЕ КОДЫ КЛАВИАТУРЫ  74

РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА.................................... 76


 

ТЕМА 1. ЛИНЕЙНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ  ПРОЦЕССЫ

 

1.         Известны длины сторон треугольника a, b, c. Напишите программу вычисления его площади по формуле Герона.

2.         Известны координаты вершин треугольника (x1,y1), (x2,y2), (x3,y3). Напишите программу вычисления длин сторон треугольника и его площади.

3.         В равнобедренном треугольнике известна высота h, опущенная на гипотенузу. Найти стороны треугольника.

4.         Напишите программу вычисления стоимости покупки, состоящей из нескольких карандашей, линеек и тетрадей. Их количество и цену задать вводом. Ответ вывести в виде:

Сумма к оплате: … руб … коп.

5.         Для цилиндра радиусом r и высотой h напишите программу вычисления площади и объема по формулам:

; .

6.         Для  полого цилиндра высотой h, внешним радиусом r1 и внутренним радиусом r2 напишите программу вычисления объема по формуле:

.

7.         Напишите программу вычисления площади кольца с внешним радиусом r1 и внутренним радиусом r2.

8.         Для конуса радиусом r и высотой h напишите программу вычисления объема по формуле:

.

9.         Напишите программу вывода на экран фразы "Каждый охотник желает знать, где сидит фазан", в которой слова раскрашены соответствующими цветами. Указание: в программе необходимо подключить модуль Crt, для чего в начало программы вставьте директиву Uses Crt;. Для изменения цвета шрифта используйте процедуру TextColor(n), где n – номер цвета. Для красного цвета n равно 4 или 12, оранжевого – 6, желтого – 14, зеленого – 2 или 10, голубого – 3 или 11, синего – 1 или 9, фиолетового – 5 или 13.

10.     Напишите программу, переводящую время, указанное в минутах, во время в часах и минутах.

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

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

13.     Известны координаты двух населенных пунктов. Напишите программу вычисления расстояния между этими населенными пунктами с учетом масштаба карты.

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

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

16.     Напишите программу вычисления площади параллелограмма.

17.     Напишите программу вычисления площади параллелепипеда.

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

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

20.     Заданы действительная и мнимая части комплексного числа z = x + iy. Напишите программу, которая преобразовывает его в тригонометрическую форму и печатает в виде выражения  z = r (cos φ + i sin φ). Указание: , .

21.     Заданы уравнения двух пересекающихся прямых на плоскости: y1=k1x+b1, y2=k2x+b2. Напишите программу, вычисляющую угол между ними в градусах и минутах, используя формулу .

22.     Длина некоторого отрезка составляет p метров. Напишите программу перевода ее в русскую неметрическую систему. Указание: 1 верста = 500 саженей, 1 сажень = 3 аршина, 1 аршин = 16 вершков, 1 вершок = 44,45 мм.

23.     Функция y=sinx на отрезке  хорошо приближается разложением: . Напишите программу, которая для заданного значения аргумента x подсчитывает  по этой формуле и сравнивает его с точным значением, вычисленным с помощью стандартной функции.

24.     Трехмерные вектора A и B заданы своими координатами. Напишите программу вычисления угла в градусах между векторами, используя формулу:

.

25.     Напишите программу, которая, используя формулу Зеллера, определяет день недели для произвольной даты. Указания: день недели григорианского календаря n (n =0 – Сб, 1 – Вс, ..., 6 – Пт) определяется по формуле
dday= ([(m+1)*26/10]+d+y+[y/4]+[c/4]-2*c)%7,
где "%" – взятие остатка от деления, [...]  – выделение целой части числа, d – день месяца (1–31), m – номер месяца (1–12), y – год столетия (0–99), c – номер столетия (20 для XXI века) . Январь и февраль считаются как месяцы 13 и 14 предыдущего года.

 

 

ТЕМА 2. РАЗВЕТВЛЯЮЩИЕСЯ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ

 

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

.

2.         Вводится денежная сумма в рублях и копейках. Напишите программу печати введенной суммы с правильной формой слов "рубли" и "копейки", например, "123 рубля 15 копеек".

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

4.         Напишите программу, которая по введенному числу программ печатает "Я решил 2 задачи" или "Я решил 1 задачу" и т.д.

5.         Напишите программу начисления торговой скидки. Вводится сумма покупок, программа рассчитывает сумму к оплате с учетом того, что при покупке товара на сумму от 500 до 1000 руб. предоставляется скидка 5%, на сумму от 1001 до 10000 руб. – 7%, на сумму свыше 10000 руб. – 9%.

6.         Составьте программу, которая определяет, может ли быть построен треугольник по введенным длинам сторон a,b,c и, если треугольник можно построить, определяет его тип (прямоугольный, тупоугольный или остроугольный).

7.         Напишите программу, которая определяет, пройдет ли шар радиуса r через ромбовидное отверстие с размерами диагоналей ромба p и q.

8.         Напишите программу, которая определяет, можно ли коробку размером  поместить в ящик размером .

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

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

11.     Напишите программу, которая считывает три вещественных числа и заменяет каждое отрицательное нулем, а нулевое – числом .

12.     Напишите программу простого тестирования. Тестирование заключается в проверке правильности ответов на 5 вопросов (вопросы и их тематику выбрать самостоятельно, ответы на вопросы должны предполагать ввод числовых данных, например, "В каком году началась Великая Отечественная война?"). Предусмотреть выставление оценки по числу правильных ответов.

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

14.     Напишите программу, которая по введенному возрасту, росту и весу пользователя вычисляет оптимальный для него вес и выдает рекомендации вида "Ваш вес оптимален", "Вам надо поправиться" или "Вам надо похудеть". Оптимальный вес для лиц в возрасте до 30 лет вычисляется по формуле "Рост - 105", для лиц после 30 – по формуле "Рост – 100", допустимы отклонения ±3 кг.

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

16.     Напишите программу, которая по введенному номеру месяца выводит сообщение о том, какое сейчас время года.

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

18.     В университете города N принято, что старшая цифра трехзначного номера студенческой группы обозначает номер факультета, средняя – последнюю цифру года поступления, младшая – порядковый номер группы. Напишите программу, которая по заданному номеру группы студента определяет, в каком году он поступил и на каком факультете учится. Номера факультетов следующие: 1 – исторический, 2 – экономический, 3 – юридический, 4 – математический, 5 – физический, 6 – химический, 7 – биологический, 8 – филологический, 9 – географический.

19.     К финалу конкурса "Лучший по профессии" допущены трое: Иванов, Петров и Сидоров. Соревнования проходили в три тура. В первом туре Иванов набрал x1 баллов, во втором -  x2 баллов, в третьем – x3 баллов. Петров, соответственно, y1, y2,y3 баллов, Сидоров – z1, z2, z3 баллов. Напишите программу, определяющую, сколько баллов набрал победитель.

20.     Квадраты в игре "Крестики-нолики" пронумерованы так, как показано на рисунке. Напишите программу, которая по введенным номерам трех квадратов N1, N2, N3 (N1<N2<N3) проверяет, лежат ли они на одной диагонали или вертикали или горизонтали или нет.

21.     На шахматной доске стоят черный король и 2 белые ладьи. Напишите программу, которая проверяет, находится ли черный король под боем и печатает соответствующее сообщение. Позиция каждой фигуры задается в обычной шахматной нотации (например, a1, h8) или двумя цифрами – номером строки и столбца на доске.

22.     На шахматной доске стоят черный король и белые ладья и слон. Напишите программу, которая проверяет, находится ли черный король под боем и печатает соответствующее сообщение. Учтите возможность защиты (например, ладья не бьет через слона). Позиция каждой фигуры задается в обычной шахматной нотации (например, a1, h8) или двумя цифрами – номером строки и столбца на доске.

23.     На шахматной доске стоят 3 ферзя. Напишите программу, которая ищет те пары из них, которые угрожают друг другу и печатает соответствующие сообщения. Позиция каждой фигуры задается в обычной шахматной нотации (например, a1, h8) или двумя цифрами – номером строки и столбца на доске.

24.     В шашечном эндшпиле осталась одна белая дамка и 2 черные пешки, позиции которых известны. Ход белых. Напишите программу, которая проверяет, сможет ли дамка срубить одну или обе пешки?

25.     Банк предлагает 3 вида срочных вкладов: на 3 месяца под p1 процентов годовых, на 6 месяцев - под p2  и на год - под pпроцентов. Напишите программу, которая определяет, какой из вкладов наиболее выгоден для вкладчика.

26.     Напишите программу, которая определяет, из круга какого наименьшего радиуса можно вырезать треугольник со сторонами a,b,c. Указание: пусть c – большая из сторон треугольника. Если угол C – тупой, сторона c совпадает с диаметром круга, в противном случае имеем описанную окружность с радиусом

,

где p=(a+b+c)/2 – полупериметр треугольника.

27.     Напишите программу, которая определяет, попадает ли точка с координатами (x,y) в круг радиусом R и центром в начале координат.

28.     Напишите программу, которая определяет, в какой координатной четверти (квадранте) находится точка с координатами (x,y). Вывести на экран номер квадранта. Учесть случай, когда точка лежит на одной из координатных осей или в начале координат.

29.    

Напишите программу, которая вычисляет значение функции y(x), заданной графически:

30.     Напишите программу, которая определяет, принадлежит ли точка с координатами (x,y) прямой y=1-x. Если это имеет место, то программа должна вывести на печать координаты точки, а в противном случае – сообщение "Точка не принадлежит прямой".

31.     Напишите программу, которая вычисляет значение функции y(x), заданной графически:

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

33.     Напишите программу, которая определяет, лежит ли  точка с координатами (x,y) внутри квадрата:

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

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

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

z = max(min(a, b), max(c, d)).

Значения a,b,c,d задаются вводом с клавиатуры.

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

y =min( max(a, b)+min(c, d)).

Значения a,b,c,d задаются вводом с клавиатуры.

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

39.     С клавиатуры вводится трехзначное число. Напишите программу, которая проверяет, равна ли сумма его цифр значению 9.

40.     Напишите программу, которая определяет, входит ли заданная цифра во введенное трехзначное число.

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

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

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

44.     Напишите программу, которая определяет по введенным значениям длин сторон квадрата и радиуса круга верно ли утверждение "Круг вписан в квадрат". Используйте логическую переменную.

45.     Напишите программу, определяющую, можно ли квадрат со стороной r поместить внутрь прямоугольника с размерами сторон p и q.

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

47.     Напишите программу для обработки покупки на кассе в магазине. Вначале вносится стоимость совершенной покупки, затем сумма, внесенная покупателем, и делается вывод – нужна ли сдача и сколько. Если сдача не нужна, выводится текст "Спасибо".

48.     Составьте программу вычисления дней в месяце с учетом високосного года.

49.     Напишите программу вычисления корней квадратного уравнения ax2+bx+c=0. Программа должна предусматривать равенство коэффициентов a, b, c нулю и учитывать знак дискриминанта.

50.     Напишите программу вычисления даты следующего дня. Программа должна предусматривать смену года и месяца с учетом високосного года.

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

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

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

 

ТЕМА 3. ЦИКЛИЧЕСКИЕ ВЫЧИСЛИТЕЛЬНЫЕ  

ПРОЦЕССЫ

 

1.         Напишите программу, позволяющую численно проверить, является ли заданная функция f(x) четной или нечетной на заданном интервале x  [-a,a]. В программе необходимо учесть погрешность вычислений и возможные точки разрыва функции. Проверьте программу для функций f(x)=x4, f(x)=tg x, f(x)=ex, вычисляя их на отрезке [-5,5] с шагом 0.1.

2.         Утверждается, что функция f(x) – периодическая с периодом T. Напишите программу, которая позволяет численно проверить это, вычислив функцию с постоянным шагом на интервале [0, 2T]. В программе необходимо учесть погрешность вычислений и возможные точки разрыва функции. Проверьте программу на примере функции f(x)=sin2x, (T=π) и  f(x)=(sin x)/x (T=2π).

3.         Напишите программу, которая для заданных значений a и b находит все точки с целочисленными координатами, находящиеся внутри эллипса x2/a2 + y2/b2 R 2 и выводит их координаты.

4.         Прямоугольник на плоскости a≤ x ≤ b, c ≤ y ≤ d задается своими габаритами a,b,c,d. Напишите программу, в которую последовательно вводятся габариты N прямоугольников. В процессе ввода программа находит сумму площадей их пересечения, не запоминая самих габаритов.

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

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

7.         Известно время начала и окончания работы автобусного маршрута с одним автобусом на линии (например, 6:00 и 23:30), а также протяженность маршрута в один конец (в минутах) и время отдыха на конечных остановках. Напишите программу, которая составляет суточное расписание этого маршрута (моменты отправления с конечных пунктов) без учета времени на обед и пересмену.

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

9.         Напишите программу пересчета таблицы из миль в километры и обратно (1 миля=1.609344 км) для расстояний, не превышающих K километров с шагом dK.

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

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

12.     Напишите программу численной проверки первого замечательного предела . Задаются значения x = 1, 1/2, 1/4, 1/8 и т.д., до тех пор, пока левая часть равенства не будет отличаться от правой менее чем на заданную погрешность ξ.

13.     Напишите программу численной проверки второго замечательного предела . Программно  задаются значения n = 1, 2, 3 и т.д., до тех пор, пока левая часть равенства не будет отличаться от правой менее чем на заданную погрешность ξ.

14.     Напишите программу сравнения скорости сходимости следующих разложений числа π:

. Указание: скорость сходимости - это число слагаемых, требуемое для достижения заданной точности ξ.

15.     Напишите программу, которая вычисляет, сколько сомножителей надо взять в произведении , чтобы равенство выполнялось с точностью 10 -6?

16.     Напишите программу, которая вычисляет, сколько сомножителей надо взять в произведении , чтобы равенство выполнялось с точностью 10 -5?

17.     Напишите программу, которая для заданных значений a и p вычисляет , используя рекуррентную формулу Ньютона:  x0 = a. Сколько итераций надо выполнить, чтобы для заданной погрешности ξ выполнялось соотношение ?

18.     Напишите программу, которая для заданного значения x>1 вычисляет по итерационной формуле с заданной погрешностью ξ с начальным приближением y0 = x. Сравните полученное значение с результатом использования стандартной функции. Оцените требуемое число итераций.

19.     Напишите программу нахождения минимума и максимума. Числа x1, x2,… последовательно поступают на вход программы. Найти и напечатать минимальное и максимальное из введенных чисел. В памяти хранится только текущее число.

20.     Напишите программу нахождения текущего среднего. Числа x1, x2,… последовательно поступают на вход программы. Вычислите и напечатайте арифметическое среднее всех введенных чисел. В памяти хранится только текущее число.

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

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

.

23.     Напишите программу, которая для заданной величины ξ вычисляет наименьшее n, такое, что  и выводит все члены последовательности от 1-го до n-го.

24.     Задана функция ln(x) и ее разложение в ряд:

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

25.     Задана функция sin(x) и ее разложение в ряд:

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

26.     Задана функция cos(x) и ее разложение в ряд:

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

27.      Задана функция sin(x) и ее разложение в ряд:

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

28.     Задана функция arctg(x) и ее разложение в ряд:

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

29.      Задана функция логарифмического синуса и ее разложение в ряд:

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

30.      Напишите программу вывода таблицы квадратов чисел от 1 до N с шагом K.

31.      Напишите программу вычисления суммы первых N целых положительных чисел (значение N вводится).

32.      Напишите программу, которая создает таблицы стоимости товара в диапазоне от 1 до 100 штук. Цена единицы товара вводится.

33.      Напишите программу, выводящую на экран таблицу умножения чисел от 1 до 10

34.      Напишите программу, которая выводит двоичное представление введенного с клавиатуры десятичного числа.

35.      Напишите программу, которая выводит шестнадцатеричное представление введенного с клавиатуры двоичного числа.

36.      Напишите программу, которая выводит десятичное представление введенного с клавиатуры двоичного числа.

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

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

39.     Напишите программу-игру "Угадай число". Один игрок, в роли которого выступает компьютер, "задумывает" число в заданных пределах (например, от 1 до 999), другой игрок – человек – пытается его отгадать за минимальное число попыток. Для каждого числа, введенного человеком в качестве очередной версии, компьютер выдает сообщение "мое число больше", "мое число меньше" или "поздравляю, вы выиграли!", если число угадано точно. Предусмотрите начисление очков обратно пропорционально количеству затраченных попыток.

40.     Напишите программу вычисления и печати в виде таблицы с заголовком значения термического сопротивления массива с трубопроводом:

Глубина изменяется от 1 до 2.4 с шагом 0.2. Заголовок таблицы напечатать в виде: "Глубина  Термическое сопротивление ".

41.     Имеются данные об экзаменационных оценках группы:

;    n = 20, где n - число студентов в группе. Напишите программу вычисления среднего балла по предмету и количества пятерок.

42.     Известны координаты вершин многоугольника на плоскости (xi, yi), i=1, 2,…, N.  Напишите программу, в которой последовательно вводятся координаты вершин и вычисляется периметр многоугольника c вершинами (x1, y1), …, (xN, yN).

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

44.     Известны координаты точек на плоскости (xi, yi), i=1, 2,…, N.  Напишите программу, в которой последовательно вводятся координаты точек и определяется, сколько точек лежит в каждой из координатных четвертей.

45.     Напишите программу, которая проверяет, является ли простым введенное пользователем положительное целое число. Простым называется такое число, которое делится без остатка только на единицу и само себя (например, 5, 11, 19).

46.     Напишите программу вычисления сверхпростых чисел. Простым называется такое число, которое делится без остатка только на единицу и само себя (например, 5, 11, 19), сверхпростым – такое простое число, которое остается таким и в случае перестановки его цифр (например, 19-91).

47.     Напишите программу вычисления совершенных чисел, не превосходящих заданного числа N. Совершенным называется такое число, сумма делителей которого совпадает с самим числом (например, 6=1+2+3).

48.     Напишите программу вычисления чисел-близнецов, не превосходящих заданного числа N. Близнецами называют пару простых чисел, разность между которыми не превышает двух (например, 5-7, 11-13 и т.д.). Простым называется такое число, которое делится без остатка только на единицу и само себя (например, 5, 11, 19).

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

50.     Напишите программу сокращения дроби вида  с натуральными числами N и M.

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

52.     Составьте программу вычисления числа сочетаний из N по М по формуле:

.

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

54.     Дан ряд Напишите программу вычисления суммы ряда для , с шагом  и точностью .

55.     Дана последовательность , n = 1, 2, 3, … Составьте программу вычисления элементов последовательности и их печати до тех пор, пока не будет выполнено условие .

56.     Дана последовательность , n = 1, 2,…, 20. Составьте программу вычисления разностей между первым и остальными элементами исходной последовательности .

57.      Составьте программы вычисления количества элементов последовательности, i =  1, 2, 3, … таких, что их сумма не превышает значения 5.

58.     Напишите программу вычисления первого элемента последовательности  , i =  1, 2, 3, …; n = 10; ; значения a и b задать вводом.

59.     Напишите программу вычисления предела последовательности , n=1,2, 3, … За значение предела принять такую величину , при которой .

60.     Напишите программу вычисления элементов последовательности , n=1,2, 3, … до тех пор, пока очередной элемент последовательности не станет меньше 10-3.

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

62.     Дана последовательность , xi = 0, 0.1, 0.2, … Напишите программу подсчета элементов последовательности до первого встретившегося нуля. Выведите на печать то значение xi, при котором  yi = 0.

63.     Корень уравнения находится последовательными приближениями по формуле:

, n = 1, 2, 3, …

Напишите программу вычисления такого значения корня, при котором разность между двумя соседними приближениями по модулю не превысит 10-5, исходя из начального приближения x0= 1.

64.     Дана последовательность , i = 2, 3, …; x1=0.7. Напишите программу печати тех значений последовательности, сумма которых не превосходит 3.

65. Напишите программу вычисления и печати элементов последовательности , n = 0, 1, 2, … Вычисления прекратить, когда очередной элемент по модулю станет меньше 0.001.

 

ТЕМА 4. СТРУКТУРНЫЙ ТИП ДАННЫХ "МАССИВ"

 

Варианты задач на обработку векторов

 

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

2.     Напишите программу, которая для заданного массива  вычисляет величины A и n, где A - наибольший элемент массива,  n – его порядковый номер.

3.     Заданы два массива A и B одинаковой размерности. Напишите программу формирования массива С, компоненты которого определяются по формулам:

.

4.     Заданы два массива A и B. Напишите программу формирования массива С, компоненты которого находятся по правилу: . Выведите на печать массивы A, B, C.

5.     Напишите программу, которая в заданных массивах A и B меняет местами максимальные элементы. Выведите на экран исходные и преобразованные массивы.

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

7.     Дан массив чисел:. Напишите программу вычисления суммы элементов с нечетными индексами и произведения элементов с четными индексами.

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

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

10. Напишите программу сортировки элементов массива по возрастанию и убыванию методом обмена (пузырька). Пользователь выбирает способ сортировки.

11. Декартовы координаты десяти точек заданы массивами  и . Напишите программу вычисления полярных координат точек, лежащих внутри круга с центром в начале координат и радиусом  r =  3. 

12. Напишите программу, которая по заданному вектору X формирует целочисленный вектор T, состоящий из знаков элементов вектора X (Ti = 1, если Xi > 0; Ti = 0, если Xi = 0; Ti = -1, если Xi  < 0).

13. Напишите программу, которая из элементов заданного вектора X формирует вектор Y, в который войдут элементы Xi, по модулю не превышающие заданного числа A.

14. Напишите программу, которая проверяет, есть ли во введенном целочисленном массиве элементы с одинаковым значением и печатает значения каждого уникального элемента вместе с количеством раз, которое он встречается в массиве.

15. Заданы целочисленный вектор X и вещественный вектор Y. Напишите программу, которая определяет, являются ли элементы вектора Xi значениями элементов Yi, округленными до ближайшего целого.

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

17. Задан вектор T. Напишите программу, которая выводит на экран только те его компоненты, значения которых попадают в заданный интервал [A, B].

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

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

20. Задан массив X. Напишите программу вычисления наибольшего по модулю отклонения элементов массива от среднего значения.

21.  Задан массив X. Напишите программу вычисления величины  s = k1-k2, где k1 - сумма квадратов элементов массива, k2 - произведение положительных элементов массива.

22. Задан массив X. Напишите программу вычисления и печати массива Y , элементы которого определяются по формуле , где  B - максимальный элемент массива X.

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

24. Напишите программу обмена значений {xs, xs+1, …,xk} и {ys, ys+1,…,yk} между массивами X и Y. Значения s и k вводятся пользователем. Программа должна проверять корректность вводимых данных.

25. Задан массив A. Напишите программу, которая удаляет k-ый элемент массива и на его место вставляет число x.

26. Задан массив B. Напишите программу, которая меняет местами элементы с номерами l и k.

27. Задан массив C. Напишите программу, которая меняет местами первый элемент и последний их отрицательных элементов массива C.

28. Задан массив D. Напишите программу, которая меняет местами элементы с номера l до номера k теми же элементами, но в обратном порядке

29. Составьте программу вычисления суммы при n = 5. Элементы векторов a и b вычисляются по формулам:

30. Заданы координаты двух точек  и . Напишите программу вычисления расстояния между точками по формуле .

31. Задан вектор x и число b. Напишите программу, которая переменной M присваивает значение 1, если хотя бы один элемент , и значение 0 в противном случае.

32. Для заданного массива X(n) наблюдений напишите программу, вычисляющую среднее значение s и дисперсию d по формулам: , .

 

Варианты задач на обработку матриц

 

33. Задана матрица A. Напишите программу подсчета количества элементов, абсолютная величина которых превосходит заданное число b.

34. Напишите программу, которая  в заданной матрице A  подсчитывает и выводит на экран количество элементов, попадающих в заданный интервал [a,b] и значения этих элементов.

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

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

37. Напишите программу вычисления евклидовой нормы заданной матрицы A размерностью  по формуле:

.

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

39. Напишите программу вычисления следа матрицы. Указание: следом матрицы называется сумма ее элементов, стоящих на главной диагонали.

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

41. Напишите программу вычисления произведения элементов матрицы, лежащих на главной диагонали и выше ее.

42. Задана матрица A. Напишите программу, которая переменной L присваивает значение 1, если число положительных элементов под главной диагональю больше числа положительных элементов над главной диагональю, и значение 0 в противном случае.

43. Напишите программу формирования матрицы Sign, определяющую знаки чисел матрицы A по следующему правилу:

.

Подсчитайте в полученной матрице количество элементов, имеющих значение 1, количество элементов, имеющих значение –1, и количество нулевых элементов.

44. Задана вещественная матрица. Напишите программу вычисления величины , где max - целая часть максимального элемента, min - целая часть минимального элемента матрицы А.

45. Напишите программу поиска минимального расстояния между двумя множествами точек на плоскости. Каждое множество точек задано матрицей размерностью n2.

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

47. Для произвольно заданной матрицы A напишите программу вычисления значений функции .

48. Напишите программу транспонирования матрицы и вывода исходной и транспонированной матриц на экран.

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

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

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

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

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

54. Напишите программу вычисления произведения сумм квадратов элементов каждой строки матрицы А.

55. Напишите программу, которая определяет, является ли заданная квадратная матрица магическим квадратом. Пояснение: Магическим квадратом называется матрица, сумма элементов которой в каждой строке, в каждом столбце и по каждой диагонали одинаковы, например:

,    .

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

57. Напишите программу умножения матриц. Программа должна проверять корректность вводимых данных.

58. Напишите программу, которая по заданной матрице A формирует вектор С, в котором i‑ый элемент равен разности между числом положительных и числом отрицательных элементов i -ой строки матрицы А.

59. Напишите программу, которая в заданной матрице A каждый последний элемент строки заменяет максимальным элементом этой строки.

60. Напишите программу, которая в каждой строке заданной матрицы A заменяет первый встретившийся нулевой элемент произведением предыдущих элементов этой строки.

61. Напишите программу, которая для заданной матрицы вычисляет среднее арифметическое в каждой строке.

62. Напишите программу умножения матрицы на вектор. Программа должна проверять корректность вводимых данных.

63. Напишите программу, которая  по заданной матрице A размерностью nm формирует вектор z размерностью n, состоящий из максимальных элементов строк матрицы A.

64. Напишите программу, которая  по заданной матрице A размерностью nm формирует вектор z размерностью m, состоящий из арифметических средних столбцов матрицы A.

65. Заданы вектор  размерностью m, определяющий объем производимой продукции, и матрица  размерностью , характеризующая распределение производимой продукции по n потребителям. Напишите программу, которая:

1. Вычисляет невязки в векторе А как разность между компонентой  и суммой элементов i-ой строки матрицы X.

2. Вычисляет общую сумму невязок S в векторе A. Если S = 0, т.е. вся продукция распределена, то программа выводит на печать текст: “План перевозок оптимальный”. При  печатает значение S и текст: “План перевозок неоптимальный”.

Пример: .

66. Напишите программу, которая для заданной матрицы A и вектора X вычисляет элементы вектора Z как скалярное произведение строки матрицы  A на вектор X.

67. Напишите программу вычисления скалярного произведения каждой строки матрицы на ее главную диагональ.

68. Задана квадратная матрица A. Напишите программу, которая переменной Т присваивает значение, равное скалярному произведению векторов X и Y, где компоненты вектора X определяются как максимальные элементы строк, а компоненты вектора Y - как минимальные элементы столбцов матрицы A.

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

70. Имеется экзаменационная ведомость студенческой группы из 20 человек по 5 дисциплинам. Напишите программу вычисления и вывода средних баллов по каждой дисциплине и  для каждого студента, а также отклонения среднего балла каждого студента от общего среднего балла группы.

71. Напишите программу подведения итогов Олимпийских игр. Пользователь вводит количество медалей разного достоинства, завоеванных каждой из команд-участниц. Программа считает число очков, набранное каждой из команд и упорядочивает список команд-участниц по количеству набранных очков (за золотую медаль начисляется 3 очка, за серебряную – 2, за бронзовую – 1).

72. Напишите программу, которая матрицу размерностью  заполняет числами от 1 до по спирали, начинающейся в левом верхнем углу и закрученной по часовой стрелке.

73.

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

74.  Напишите программу формирования матрицы следующего вида:

 

ТЕМА 5. ПОДПРОГРАММЫ

 

1.         Напишите подпрограмму, которая сравнивает два числа и возвращает результат в виде символа ‘<’ или ‘>’ или ‘=’.

2.         Напишите подпрограмму, определяющую, попадает ли вещественное значение a в интервал [x1,x2]. Используйте подпрограмму для формирования по вектору T размерности N нового вектора L, содержащего только те элементы исходного вектора, которые попадают в указанный интервал.

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

4.         Напишите подпрограмму перевода декартовых координат точки на плоскости в полярные.

5.         Напишите подпрограмму, которая по введенным координатам вершин треугольника находит его периметр и площадь.

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

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

8.         Напишите подпрограмму, печатающую первые N членов ряда Фибоначчи и проверьте ее для N=10 и N=40. Члены ряда Фибоначчи вычисляются по формулам: F0=0, F1=1, FN=FN‑1+FN‑2, N = 2, 3, …

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

10.     Напишите подпрограмму, определяющую центр масс множества точек на плоскости.

11.     Напишите подпрограмму, преобразующую матрицу размерностью N*M в вектор соответствующей размерности. Возможно сканирование матрицы как по строкам, так и по столбцам, в зависимости от значения дополнительного параметра.

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

13.     Напишите подпрограмму, которая по переданной матрице размерностью N*M, содержащей оценки за сессию группы студентов из N человек по M предметам, создает вектор, содержащий размеры стипендий для каждого из студентов. Стипендия в 1300 рублей начисляется отличникам, 900 рублей – хорошистам, для остальных студентов вместо размера стипендии в соответствующий элемент вектора записывается 0.

14.     Напишите подпрограмму, которая по переданным координатам многоугольника, записанным в массив размерностью N*2, определяет размеры объемлющей все точки многоугольника прямоугольной области. Стороны прямоугольника при этом параллельны осям координат.

15.     Напишите подпрограмму, которая по заданному числу экспериментов N формирует N целых случайных чисел из интервала [0,K] и возвращает выраженную в процентах относительную частоту каждого из чисел в общей выборке.

16.     Напишите подпрограмму, определяющую прибыль от вклада под p% годовых через N лет  для случаев простых или сложных процентов.

17.     Напишите подпрограмму, определяющую, принадлежит ли точка с координатами (x,y) кругу радиуса r с центром в точке (a,b).

18.     Напишите подпрограмму, определяющую, является ли квадратная матрица P симметричной относительно главной диагонали.

19.     Напишите программу формирования массива A по правилу: , где , . Для вычисления  и  используйте подпрограммы.

20.     Дана функция . Напишите программу формирования массива A, используя подпрограмму для вычисления , по правилу:

.

21.     Даны две функции: , . Напишите программу формирования массива A, используя подпрограммы для вычисления  и , по правилу:

.

22.     Напишите программу формирования массива  по формуле: , где . Вычисление  оформите подпрограммой.

23.     Задан массив положительных чисел Х. Напишите программу формирования массива Y по правилу: .  Вычисление оформите подпрограммой.

24.     Задан массив из 10 чисел Х. Напишите программу формирования массива Y по правилу: , где .  Вычисление  оформите подпрограммой.

25.     Задан массив из 50 чисел Х. Напишите программу формирования массива Y по правилу: , где . Вычисление  оформите подпрограммой.

26.     Известны координаты трех точек: , , . Напишите программу вычисления полярных координат для точек, лежащих внутри круга радиусом R=2 с центром в начале координат. Вычисление полярных координат оформите двумя подпрограммами.

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

28.     Напишите программу вычисления суммы . Вычисление факториала оформите подпрограммой.

29.     Напишите программу вычисления суммы . Вычисление факториала оформите подпрограммой.

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

31.     Напишите программу вычисления интеграла , где . Вычисление  оформите подпрограммой.

32.     Напишите программу вычисления корня уравнения , используя итерационную формулу:

; k = 0, 1, 2, … ; .

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

33.     Напишите подпрограмму вычисления определителя квадратной матрицы. Используйте написанную подпрограмму для нахождения определителя  третьего порядка.

34.     Напишите подпрограмму вычисления корней квадратного уравнения. Программа должна учитывать все возможные сочетания нулевых и ненулевых значений коэффициентов a, b, c.


ТЕМА 6. ТЕКСТОВЫЕ ТИПЫ ДАННЫХ

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

21.     Напишите программу, которая печатает все слова введенного предложения, имеющие заданную в программе длину в символах (например, 4).

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

23.     Напишите программу, которая в iом слове удаляет iую букву. Если количество букв в iом слове меньше i, то удалить все слово из предложения. Удаленные символы отсортируйте. Например: "мама мыла Милу" à "ама мла Миу"; символы – л, м, ы.

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

25.     Напишите программу печати слов предложения в обратном порядке.

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

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

28.     Напишите программу, которая проверяет, является ли слово перевертышем. Примеры слов-перевертышей – казак, шалаш.

29.     Напишите программу, выводящую на экран "бегущую строку".

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

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

32.     Напишите программу, определяющую, сколько раз в заданном предложении встречается указанное слово.

33.     Напишите программу, сортирующую символы введенной с клавиатуры строки в порядке возрастания их ASCII-кодов. Например, "CBA" à "ABC"

34.     Напишите программу, которая в заданном предложении в слове максимальной длины меняет местами попарно рядом стоящие буквы. Например, ABCDE à BADCE.

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

36.     Напишите программу, определяющую, сколько букв "У" в слове стоит на четных местах.

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

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

39.     Даны два слова. Напишите программу, меняющую местами буквы этих слов, занимающие одинаковые позиции. Например, "делопроизводство – тело" à "телопроизводство – дело".

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

41.     Даны два предложения. Напишите программу, вычеркивающую из первого слова первого предложения все буквы, которые встречаются в первом слове второго предложения и так далее. Например, "В лесу родилась елочка – В лесу она росла" à "_ ____ рдилсь ечк".

42.     Даны два слова. Напишите программу, которая определяет, можно или нет из букв первого слова составить второе слово. Например, "трикотаж-кот" à Ответ: "Да".

43.     Напишите программу, вычеркивающую каждую третью букву из слова в заданном предложении.

44.     Напишите программу, заменяющую в заданном предложении все символы пробела символом "-".

45.     Напишите программу, которая сжимает текст, заменяя все повторяющиеся символы kkk…  текстом k(n), где n – число повторений символа k.

46.     Напишите программу, которая изменяет предложение, заменяя текст k(n), на последовательность  kkk…, где символ k повторяется n раз.

47.     В качестве исходного текста задано арифметическое выражение на Паскале. Напишите программу, которая проверяет, соблюдается ли равенство открывающих и закрывающих скобок. Выведите на печать исходный текст, количество открывающих и закрывающих скобок и вывод. Например: "exp(exp(1/3*ln(abs(sin(x))/(a+b)+1"; "(" - 6; ")" - 3; "Открывающих скобок больше, чем закрывающих".

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

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

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

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

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

 

ТЕМА 7. ФАЙЛОВЫЕ ТИПЫ ДАННЫХ

 

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

2.         Создайте файл, содержащий массив целых чисел. Напишите программу, которая определяет количество элементов массива. Переменной L присвойте значение True, если в массиве нечетное число элементов, и значение False в противном случае.

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

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

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

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

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

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

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

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

11.     Создайте файл, содержащий фамилии студентов и их экзаменационные оценки по 5 предметам. Напишите программу печати фамилий студентов, сдавших экзамены только на "5".

12.     Создайте файл, содержащий фамилии студентов. Напишите программу печати списка студентов, имеющих самые длинные фамилии.

13.     Создайте файл, содержащий фамилии студентов и их экзаменационные оценки по 3 предметам. Напишите программу печати фамилий тех студентов, которые успешно сдали все экзамены.

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

15.     Создайте файл, содержащий названия всех месяцев года. Напишите программу печати названия месяцев от N до M включительно. Величины N, M вводятся с клавиатуры. Предусмотрите проверку корректность вводимых данных (соотношения 1≤N≤12, 1≤ M ≤12, N M).

16.     Напишите программу, которая считывает текстовый файл и определяет, содержатся ли в нем символы латинского алфавита.

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

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

19.     Напишите программу, которая создает файл из 100 случайных чисел в диапазоне 0…300. Найдите в полученном файле все простые числа и допишите их в конец файла.

20.     Напишите программу печати в файл таблицы значений функций y = sin x и z = tg x на отрезке [0, 3] c шагом dx = 0,1. Значения x запишите с 1 цифрой в дробной части, значения y, z – с двумя цифрами.

21.     Напишите программу, которая создает типизированный файл, описанный как file of char, затем считывает значения из файла и находит, сколько раз каждый алфавитно-цифровой символ встречается в этом файле.

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

23.     Напишите программу, дополняющую все строки произвольного текстового файла символом "*" до самой длинной строки.

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

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

26.     Создайте файл, в котором записаны различные даты. Каждая дата – это число, месяц и год. Напишите программу, которая записывает во второй файл самую раннюю и самую позднюю даты, а в третий файл – все весенние даты.

27.     Напишите программу, которая создает файл, состоящий из N строк. В первой строке запишите одну цифру "1", во второй – две цифры "2", и так далее, в строке с номером N – соответствующее число цифр "N", 1≤N≤9.

28.     Файл f1 состоит из целых чисел, расположенных по N в строке. Напишите программу, переписывающую в файл f2 все положительные числа из файла f1, оставляя их в тех же строках.

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

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

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

32.     Создайте файл, в котором содержатся семизначные номера телефонов и информация о сумме задолженности абонента данного телефона. Записи об одном абоненте могут повторяться. Напишите программу печати суммарной задолженности абонента по введенному номеру телефона. Указание: вместо типа данных integer для номера телефона следует использовать тип longint.

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

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

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

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

37.     Напишите программу, которая вводит с клавиатуры произвольный текст, затем записывает в первый файл закодированный текст, а во второй – дешифрованный, если известен алгоритм шифрования. Указание: код шифрования – это число, указывающее смещение букв в алфавите (например, код 3 означает, что вместо буквы "а" в зашифрованном тексте указана буква "в").

38.     Напишите программу, которая в текстовом файле подсчитывает количество строк и символов, включая пробелы, и находит наибольшую длину строки. Указание: каждая строка заканчивается парой символов "возврат каретки + перевод строки" - #10#13.

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

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

41.     Напишите программу, которая создает типизированный файл, описанный как file of char, а затем считывает из этого файла символьные значения до тех пор, пока не встретится его конец или не будут считаны по крайней мере по одному разу символы 'A'…'Z'.

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

43.     Задано предложение. Напишите программу, которая находит в каждом слове букву "а" и букву "о" и далее определяет слова, в которых эти буквы наиболее и наименее удалены друг от друга.

44.     Создайте файл, каждая строка которого содержит информацию о студенте в виде "Фамилия Имя Отчество", например, "Иванов Виктор Сергеевич". Напишите программу, которая создает второй файл с записями вида "Фамилия И.О.", например, "Иванов В.С.".

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

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

47.     Напишите программу, которая в заданном файле подсчитывает количество строк, длина которых в символах находится в заданных пользователем пределах (например, от 10 до 20). Выведите на экран только эти строки файла.

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

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

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

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

52.     Файл состоит из произвольных слов, расположенных по одному слову в строке. Напишите программу, позволяющую подсчитать и вывести количество тех слов в файле, которые являются записью произвольных чисел на Паскале (например, 1, 72.8, 0.33E‑5).

 

ТЕМА 8. ТИП "ЗАПИСЬ"

 

Задание по теме включает в себя написание модульного приложения для обработки данных табличного вида. Таблица содержит как статические, так и вычисляемые поля. Варианты таблиц выдаются преподавателем.

 

Требования к оформлению индивидуального задания

 

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

2.         Данные, используемые в программе, должны быть описаны как "запись", а файлы – как типизированные файлы записей.

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

4.         Данные, выводимые на экран, должны быть помещены в таблицу, сформированную с помощью символов псевдографики.

5.         Ширина по меньшей мере одного столбца таблицы должна автоматически изменяться в зависимости от длины текста, выводимого в этом столбце.


КУРСОВАЯ РАБОТА

 

Задание на курсовую работу

 

Цель работы: закрепление теоретических знаний и практических навыков по умению разрабатывать приложения в среде Турбо Паскаль.

Тематика: разработка приложения на языке программирования Турбо Паскаль

Срок выдачи курсовой работы: 10 учебная неделя.

Срок защиты курсовой работы: 17 учебная неделя.

Отчет по курсовой работе включает в себя следующие разделы:

Титульный лист, оформленный по принятым в университете правилам;

1. Постановка задачи (из выданных вариантов);

2. Описание программы Раздел должен описывать основные возможности программы, а именно:

·         способ ввода и/или хранения исходных данных, при файловом вводе также описание формата файлов, содержащих данные;

·         ограничения на входные данные и проверки корректности данных, выполняемые программой;

·         основной алгоритм работы программы;

·         краткое описание основных модулей с указанием их назначения и описанием передаваемых параметров;

·         способы вывода результатов работы программы;

·         интерфейс пользователя;

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

      3. Листинг программы. Листинг приводится шрифтом Courier New, представляется в  виде, удобном для чтения и анализа, желательны комментарии к основным действиям и подпрограммам.

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

5. Список использованной литературы, оформленный по стандарту:

Номер. Фамилия И.О. Название книги - Город: "Издательство", год, число страниц

Пример:

  1. Форсайт Р. Паскаль для всех -  М.: "Машиностроение", 1986, 288 с.
  2. Фаронов В.В. Программирование на персональных ЭВМ в среде Турбо Паскаль - М.: Изд-во МГТУ, 1990, 372 с.

Распечатка отчета включает нумерацию страниц (снизу, по правому краю, кроме титульного листа).

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

Файлы проекта сдаются на проверку вместе с файлом  и распечаткой отчета на подписанной дискете 3.5” или CD‑диске. Все файлы, относящиеся к проекту, должны находиться в папке, название которой соответствует названию исполняемого модуля приложения и построено по правилам DOS (имя до 8 символов длиной, содержащее только латинские буквы, цифры и знак подчеркивания).

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

 

Пример отчета по курсовой работе

 

Пример отчета приводится далее.

 

1. Задание на курсовой проект

 

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

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

Вывести таблицу с вычисленными и заполненными ячейками на печать или в файл.

 

2. Описание программы

 

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

Входной файл должен иметь следующий формат:

Название_товара1 Остаток1 Приход Расход

Название_товара2 Остаток1 Приход Расход

. . .

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

При этом данные заносятся в следующие массивы:

tovar – строковый массив наименований товаров;

ostatok1, prihod, rashod, ostatok2 – числовые массивы для столбцов Остаток1 (остаток на начало отчетного периода), Приход, Расход и Остаток2 (остаток после отчетного периода) соответственно.

Размерности массивов ограничены константой Мax в программе. Программа контролирует количество вводимых строк, чтобы оно не превысило Max. Проверка корректности типов вводимых данных не производится.

Основной алгоритм обработки табличных данных сводится к циклу, выполняемому rows раз, где rows – количество введенных строк данных. В этом цикле рассчитывается Остаток2 по формуле Остаток2=Остаток1+Приход-Расход, а также накапливаются суммы по столбцам таблицы для формирования строки "Итого"

Программа состоит из одного программного модуля tabl.pas. Перечислим основные подпрограммы файла tabl.pas и укажем их назначение:

·           function Chislo (var s:string):real; — функция выделяет из входной строки s очередное вещественное или целое число и возвращает его. Используется для извлечения значений столбцов Остаток1, Приход, Расход из строки таблицы.

·           function DeSpace (var s:string):string; — функция удаляет лишние пробелы в строке s. Лишними считаются более одного пробела, идущего подряд, а также пробелы в конце и начале строки. Необходимо для обеспечения большей гибкости в начальном представлении табличных данных.

·           procedure ReadData (var f:text; var rows:integer); — процедура читает табличные данные из файла с дескриптором f, заносит их в массивы, а также определяет общее число прочитанных строк данных (rows)

·           procedure Obrabotka (rows:integer); — процедура реализует основной алгоритм обработки табличных данных, то есть, вычисление столбца  Остаток2 и строки Итого

·           procedure WriteData (var f:text; rows:integer); — процедура пишет результирующую таблицу в файл f. Если  в качестве имени выходного файла введено con, результаты выдаются на экран монитора.

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

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

Работа выполнена с помощью системы программирования Turbo Pascal 7.1 на ПК PentiumIV с операционной системой Windows XP. Программа может исполняться в любой DOS‑ или Windows‑совместимой операционной системе, инсталляции и установки дополнительного программного обеспечения не требует.

 

3. Листинг программы

 

program Tabl;

const max=50; {максимальное число строк таблицы!}

type data=array [1..max] of real;

     names=array [1..max] of string;

var tovar:names;

    ostatok1,prihod,rashod,ostatok2:data;

    so1,sp,sr,so2:real;

    rows:integer;

    name:string;

    f:text;

 

function Chislo (var s:string):real;

{выделить и вернуть очередное число из строки s}

var p,code:integer;

    n:real;

begin

 Chislo:=0;

 p:=Pos(' ',s);

 if (p=0) and (length(s)>0) then p:=length(s)+1;

 if p>0 then begin

  Val(Copy(s,1,p-1),n,code);

  if code=0 then Chislo:=n;

  Delete (s,1,p);

 end;

end;

 

function DeSpace (var s:string):string;

{удалить лишние пробелы из строки s}

var p:integer;

begin

 repeat

  p:=pos('  ',s);

  if p>0 then delete (s,p,1);

 until p=0;

 if s[1]=' ' then delete (s,1,1);

 if s[length(s)]=' ' then delete (s,length(s),1);

 DeSpace:=s;

end;

 

procedure ReadData (var f:text; var rows:integer);

{Чтение данных из файла с дескриптором f}

{Вернет количество прочитанных строк через rows}

var s:string;

    n,code,i,p:integer;

begin

 i:=1;

 while not eof (f) do begin

  readln (f,s);

  s:=DeSpace(s);

  if length(s)>0 then begin

   p:=Pos(' ',s);

   tovar[i]:=Copy (s,1,p-1);

   Delete (s,1,p);

   ostatok1[i]:=Chislo(s);

   prihod[i]:=Chislo(s);

   rashod[i]:=Chislo(s);

   i:=i+1;

   if i>max then begin

    WriteLn ('Таблица заполнена до предела! ',

     'Для ввода большего количества');

    WriteLn ('данных увеличьте константу Max',

     ' в программе');

    Break;

   end;

  end;

  rows:=i-1;

 end;

end;

 

procedure Obrabotka (rows:integer);

{Основной алгоритмрасчет остатка2}

var i:integer;

begin

 so1:=0;

 sp:=0;

 sr:=0;

 so2:=0;

 for i:=1 to rows do begin

  ostatok2[i]:=ostatok1[i]+prihod[i]-rashod[i];

  so1:=so1+ostatok1[i];

  sp:=sp+prihod[i];

  sr:=sr+rashod[i];

  so2:=so2+ostatok2[i];

 end;

end;

 

procedure WriteData (var f:text; rows:integer);

{Вывод данных в файл с дескриптором f}

var i:integer;

begin

 writeln  (f, 'Наименование':18, 'Остаток1':15, 'Приход':15, 'Расход':15, 'Остаток2':15);

 for i:=1 to rows do begin

  writeln (f,tovar[i]:18, ostatok1[i]:15:2, rashod[i]:15:2, prihod[i]:15:2, ostatok2[i]:15:2);

 end;

 writeln (f,'Итого':18, so1:15:2, sp:15:2, sr:15:2, so2:15:2);

end;

 

begin

 WriteLn

 ('Введите имя файла для ввода табличных данных:');

 ReadLn (Name);

 Assign (f,Name);

 Reset (f);

 ReadData (f,rows);

 Close (f);

 WriteLn ('Данные прочитаны из файла ',name,

' (кол.-во строк=', rows, ')');

 Obrabotka(rows);

 WriteLn('Расчет выполнен');

 WriteLn('Введите имя файла для вывода ',

'результатов расчета (con - на экран):');

 ReadLn (Name);

 Assign (f,Name);

 Rewrite (f);

 WriteData (f,rows);

 Close (f);

end.

 

4. Результаты тестирования программы

 

Файл tabl.dat, использованный для тестирования программы:

Товар1 345 45 40

Товар2 721 31 34

Товар3 456 98 34

Товар4 682 12 18

Товар5 74 37 20

 

Листинг вывода программы:

Введите имя файла для ввода табличных данных:

tabl.dat

Данные прочитаны из файла tabl.dat (кол.-во строк=5)

Расчет выполнен

Введите имя файла для вывода результатов расчета(con-на экран):

con

Наименование Остаток1      Приход         Расход       Остаток2

Товар1      345.00          40.00          45.00         350.00

Товар2      721.00          34.00          31.00         718.00

Товар3      456.00          34.00          98.00         520.00

Товар4      682.00          18.00          12.00         676.00

Товар5       74.00          20.00          37.00          91.00

Итого      2278.00         223.00         146.00        2355.00


Варианты заданий курсового проекта

 

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

Игры (И)

И-1. Игра в стиле "Захватчики" (наша пушка внизу экрана двигается влево и вправо, стреляет вверх, "захватчики" атакуют сверху и стреляют вниз, вся игра проходит на одном экране). Предусмотреть начисление очков, уровни сложности, таблицу рекордов.

И-2. Игра с отгадыванием чисел (например, "Угадай число", "Быки и коровы" и т.д.) Компьютер может играть как в роли отгадывающей, так и в роли загадывающей стороны. Предусмотреть начисление очков, уровни сложности, таблицу рекордов.

И-3. Игра в стиле "Танки" (проходит на одном экране, вид на игровое поле сверху, цель - управляя своим танком и обходя препятствия, поразить танки противника-компьютера). Предусмотреть начисление очков, уровни сложности, таблицу рекордов.

И-4. Игра с стиле "Артиллерийский бой". Две пушки стоят на ровной или холмистой поверхности друг напротив друга и по очереди выполняют выстрелы. Можно поднимать дуло пушек и менять начальную скорость снаряда. Указание: использовать тему "Движение точки, брошенной под углом к горизонту". Предусмотреть начисление очков, уровни сложности, таблицу рекордов.

И-5. Story Teller - программа, реализующая идею "романа‑игры".  Игрок‑читатель может выбирать вариант  поведения, в зависимости от которого развивается действие романа. Варианты включены в текст романа-игры с помощью выбранных Вами специальных символов (например, фраза "Вы можете пойти к пункту $12$ или $25$", использует в качестве такого ограничителя символ "$").

И-6. Логическая игра на шахматной доске (кроме общеизвестных). Компьютер играет в роли одной из сторон. Пример: программа "Чипы". Игрок и компьютер по очереди бросают разноцветные фишки. Задача – набрать ряд из пяти фишек одного цвета. Размер игрового поля – 10*10 ячеек.

И-7. Карточная игра (кроме общеизвестных). Компьютер играет в роли одной из сторон. Например: колода из 52 карт сдается поровну четырем игрокам. Затем каждый игрок кладет одну карту.  Взятку берет тот игрок, чья карта старше. Порядок старшинства карт такой (по убыванию) – пики, червы, бубны, крести. Выигрывает тот, кто взял наибольшее количество взяток.

И-8. Шахматные эндшпили, где компьютер играет в роли одной из сторон. Предусмотреть несколько эндшпилей.

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

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

Графика (Г)

Г-1. Программа прокрутки баннеров в графическом режиме. Предусмотреть набор текстовых эффектов. Прокручиваемый текст и параметры управления эффектами передаются через командную строку.

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

Г-3. Диаграммы. Программа строит диаграммы и графики по произвольным данным, прочитанным из входного файла. Предусмотреть несколько типов диаграмм.

Г-4. Полет. Напишите программу, позволяющую управлять движущимся по экрану графическим объектом (самолет, птица и т. д.) Изображение не должно быть статичным.

Г-5. Поездка. Программа позволяет управлять движением по горизонтали графического объекта (машина, мотоцикл и т. п.). Изображение не должно быть статичным, предусмотреть "рельеф местности", а также "помехи", делающие движение невозможным (например, красный сигнал светофора).

Г-6. Калейдоскоп. Программа строит в первом квадранте графического экрана набор отрезков линий, начальные и конечные точки которых задаются случайными смещениями относительно первого отрезка, а в остальных трех квадрантах - наборы линий, полученные в результате зеркального отражения первого квадранта относительно вертикали и горизонтали. Изображение должно выводиться на экран в течение небольшого времени, а затем заменяться новым.

Калькуляторы (К)

K-1. Калькулятор мер и весов - программа для преобразования старинных русских мер веса, длины, площади и объема в метрические и обратно.

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

К-3. Лунный калькулятор - определение даты новолуния и распределения четвертей Луны для выбранного месяца и года. Графическое изображение.

К-4. Универсальный календарь. Приложение позволяет вывести календарь на любой месяц и год, а также поддерживает старояпонский календарь. Указание: в старояпонском календаре был принят 60‑летний цикл, состоявший из пяти 12‑летних подциклов. Подциклы обозначались названиями цвета: зеленый, красный, желтый, белый и черный. Внутри каждого подцикла годы носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. 1984 год – год зеленой крысы – был началом очередного цикла.

Утилиты (У)

У-1. Файл-менеджер. Программа поддерживает основные операции DOS с файлами и каталогами (упрощенный аналог оболочки Norton Commander или Far Manager).

У-2. Тест процессора. Программа тестирует скорость выполнения различных операций и быстродействие операций с различными типами данных на данном процессоре. Предусмотреть формирование индекса производительности программы, сохранение базы данных индексов производительности, построение диаграмм.

У-3. Кодирование файлов. Программа кодирует с паролем и декодирует любые файлы по выбранному алгоритму.

У-4. Перекодировщик текста между двумя‑тремя кодировками (например, DOS, Windows, KOI-8R). Предусмотреть вероятностное определение кодировки произвольного файла.

У-5. Конвертер структурированного текста в формат HTML. Предусмотреть автоматическую расстановку заголовочных тегов, тегов списков, таблиц и т.д.

У-6. Напишите программу, преобразующую pas‑файл в rtf‑файл. Текстовый формат rtf поддерживается MS Office. Преобразовать исходный текст в RTF-формат можно, добавив в него управляющие конструкции и заголовок. Управляющие конструкции описывают формат документа, т. е. тип шрифтов, их стиль, вид выравнивания текста и т. д. Предлагается следующий формат *.pas файла: служебные слова – полужирный шрифт, комментарии – курсив, более мелкий. Список служебных слов удобно хранить в отдельном файле. Пример RTF-файла:

{\rtf1\ansi

{\fonttbl

{\f35\froman\fcharset0\fprq2 Times New Roman;}

}

\fs20

{\f35 Example \par}

\fs40

{\b\f35 Example \par}

\fs10

{\i\f35 Primer \par}}

Здесь \parконец параграфа; \f35шрифт Times New Roman; \fs40размер шрифта; \b - полужирный шрифт; \iкурсив. Могут понадобиться: \ul – подчеркивание; \tab – табуляция; \qs – центрирование текста; \caps – прописные буквы; \scaps – маленькие прописные буквы; {\ и \} – открывающая и закрывающая фигурные скобки.

У-7. Подсчет частоты встречаемости символов ASCII‑кода в файлах, составление и поддержка частотных таблиц, выяснение "частотного профиля" произвольного текста, сравнение этих профилей.

У-8. Структурирование текстовых файлов – удаление лишних пробелов, замена пробелов на табуляции без изменения внешнего вида текста, замена пары символов CR, LF на LF (подряд идущие символы с кодами 13 и 10  заменяются на один символ с кодом 10), выравнивание текста по заданной ширине строки, выделение заголовков, удаление переносов. Все возможности программы опциональны.

У-9. Утилита поиска и замены строк в наборе файлов, определяемых заданной маской.

У-10. Batch Enchancer - программа-оболочка для улучшения интерфейса командных файлов DOS. Данные передаются через параметры командной строки. Программа работает с текстовым режимом монитора. Предусмотреть операции для оформления экрана, поддержку выбора пользователя, проверку свойств системы (таких, как объем диска, свободное место на диске и т.п.). Программа возвращает в операционную систему результаты своей работы через переменные системного окружения.

У-11. Link Grabber - программа извлечения всех ссылок на серверы Интернет и адресов E-mail из произвольно выбранного файла или группы файлов. Предусмотреть сохранение и поддержку базы данных найденных адресов.

У-12 . Архивация файлов по выбранному Вами алгоритму. Предусмотреть возможность деархивации.

У-13. Утилита разбивки текстового файла на страницы для двусторонней печати из DOS. Предусмотреть опцией нумерацию страниц, переменное число строк на странице, возможности по выравниванию строк текста.

У-14. Сжатие HTML-файлов. Программа должна уменьшать размер HTML-файлов, убирая из них комментарии, лишние теги и ненужные разделители.

У-15. Оценка близости текстов (частотной – по встречаемости символов или слов, стилистической – по длине и характеристикам предложений).

Редакторы (Р)

Р-1. Текстовый редактор. Программа поддерживает основные операции с текстовыми файлами — открытие, сохранение, редактирование, возможность выравнивания текста по ширине, по правой и левой границам.

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

Р-3. Музыкальный редактор. Программа поддерживает редактирование и проигрывание тональных мелодий, заданных в формате "частота-длительность звука". Предусмотреть возможность чтения мелодии из файла, а также создание мелодии и запись ее в файл. Например, имитация сирены – это последовательная прогонка частот от 500 до 2000.

Нота

Большая октава

Малая октава

Первая октава

Вторая октава

До

130,81

261,62

523.25

1046.50

Ре

146,83

293.66

587.33

1174.07

Ми

164,81

329.63

659.26

1318.05

Фа

174,61

349.23

698.00

1396.09

Соль

16,00

392.00

784.99

1568.00

Ля

220,00

440.00

880.00

1760.00

Си

246,94

493.88

987.77

1975.00

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

Р-5. Журнал успеваемости студенческой группы. Предусмотреть выставление и исправление оценок, статистическую обработку оценок (средние баллы, количественная и качественная успеваемость).

Р-6. Расписание занятий студента. Предусмотреть редактирование и архивирование расписаний, редактируемые списки преподавателей, типов занятий и дисциплин, различение или неразличение четной/нечетной недели, редактирование даты начала семестра, времени начала и окончания пар и т.д.

Базы данных (БД)

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

БД-1. База данных ЖЭУ. Программа поддерживает БД жильцов и коммунальные платежи. Как минимум, сохраняется следующая информация о жильцах: номер дома, квартиры, фамилия, имя, возраст, для лиц старше 18 лет в зависимости от рода занятий (учеба, работа, пенсия) – запись места учебы или  места работы и трудового стажа, для пенсионеров – год выхода на пенсию. Предусмотреть несколько отчетов.

БД-2. База данных АТС. Программа поддерживает БД абонентов и платежи за телефон. Предусмотреть отчеты по абоненту, поддержку дополнительных услуг и т. д.

БД-3. Менеджер исторических событий. Поддержка всех возможных форматов даты события – от диапазона столетий до конкретного дня. Поиск по датам и описаниям событий, редактирование базы.

БД-4. База-словарь по выбранной предметной области (языки программирования, философия и т.п.). Поиск в базе, ведение и редактирование базы словаря.

Обучение (О)

О-1. Pascal Tutor - обучающая программа по языку Паскаль. Программа должна как содержать справочные сведения о языке, так и давать возможность выполнить изучаемые команды Паскаля.

О-2. Универсальный тестер. Программа тестирования с выбором вариантов ответа и начислением баллов. Все данные конкретного теста хранятся в файле, разработать формат этого файла.

О-3. Азбука Морзе. Программа умеет передавать сообщения при помощи азбуки Морзе. Предусмотреть регулировку скорости передачи,  режим генерации случайных букв, режим обучения.

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

Разработка модулей (М)

M-1. Модуль для перевода числовых записей ("1213") в строковые ("тысяча двести тринадцать") и обратно. Предусмотреть числа максимально возможного диапазона значений и форм записи.

M-2. Модуль для работы с функциями даты и времени: день недели по дате, время между датами в днях, месяцах, неделях, часах, минутах, секундах и т.п., поддержка различных форматов дат, аппаратно-независимая функция Delay и т.п.

M-3. Модуль для создания интерфейсов DOS‑приложений (горизонтальное и вертикальное меню, компоненты для списка, переключателя, поля ввода и т. п.). Возможны как текстовые, так и графические интерфейсы.

М-4. Модуль для работы с текстовыми данными – не зависящее от языка преобразование регистра символов, удаление лишних пробелов, форматирование по заданной длине строки, проверка правильности расстановки знаков препинания, поиск и замена слов и т. д.

 

ПРИЛОЖЕНИЕ 1. ТАБЛИЦЫ ASCII‑КОДОВ СИМВОЛОВ ДЛЯ ОПЕРАЦИОННЫХ СИСТЕМ DOS И WINDOWS

 

Далее представлены две основные русскоязычные кодировки, известные как DOS‑866 и Windows‑1251.  С первой работает среда Турбо Паскаль и все программы русифицированных версий DOS, со второй – все приложения русифицированных версий Windows. Чтобы узнать код символа, достаточно к числу десятков из первого столбца приписать число единиц из первой строки. Так, код буквы "Z" в обеих кодировках равен 90. Символы с кодами меньше 32 – непечатаемые, (перевод строки, возврат каретки, табуляция и т. д.), поэтому они не вошли в таблицу. Код пробела равен 32. Отдельно приведенная первая половина кодовых таблиц (символы с кодами меньше 128) совпадает как в этих двух кодировках, так и во всех остальных.

 

Символы с кодами 0—127

 


 

Символы с кодами 128—255 для кодировки DOS‑866

Символы с кодами 128—255 для кодировки Windows‑1251

ПРИЛОЖЕНИЕ 2. РАСШИРЕННЫЕ КОДЫ КЛАВИАТУРЫ

 

Нажатие клавиши преобразуется в двухбайтовый код, называемый скан‑ASCII‑кодом. Этот код помещается в буфер клавиатуры, откуда Ваша программа может считать его с помощью прерывания системы BIOS. Старший байт двухбайтового кода называется скан‑кодом и является отображением фактически нажатой клавиши. Скан‑код не отражает состояние клавиш Shift, Ctrl или Alt и не является уникальным. Помимо скан‑кодов нажатия, существуют коды отпускания клавиш, отличающиеся на шестнадцатеричное значение 80 в сторону увеличения. Младший байт полного кода, называемый ASCII‑кодом, также не является уникальным, но полная комбинация скан- и ASCII‑кода уникальна. Некоторые клавиши не имеют ASCII‑кода и вместо него возвращается ноль. Такие двухбайтовые коды называются расширенными. При приеме кода нажатой клавиши через DOS последняя отделяет от общего значения скан‑код. Кроме того, работающий в системе русификатор может дополнительно транслировать скан‑коды буквенных клавиш в ASCII‑коды русских букв.

Исходя из сказанного, при использовании стандартной функции Readkey, работающей с ASCII‑кодами клавиш, в общем случае является правильной следующая схема обработки на Паскале:

Ch := ReadKey; {Чтение символа в байт Ch}

if Ch = #0 then begin

   {Если нет ASCII‑кода,

    прочитать дополнительно расширенный код}

   Ch := ReadKey;

   {Обработка расширенного кода}

end

else

   {Обработка ASCII‑кода}

На Паскале десятичный код может быть записан в виде #N, где N – число, например, #65 ('A' латинская). ASCII‑коды основных печатных символов можно узнать из Приложения 1, остальные нужные коды приводятся далее.

ASCII‑коды

ENTER

13

Пробел

32

ESC

27

Backspace

8

Tab

9

 

 

Расширенные коды

Клавиша

Код

Код с Shift

Код с Ctrl

Код с Alt

F1

59

84

94

104

F2

60

85

95

105

F3

61

86

96

106

F4

62

87

97

107

F5

63

88

98

108

F6

64

89

99

109

F7

65

90

100

110

F8

66

91

101

111

F9

67

92

102

112

F10

68

93

103

113

Стрелка вверх

72

 

 

 

Стрелка вниз

80

 

 

 

Стрелка влево

75

 

 

 

Стрелка вправо

77

 

 

 

Insert

82

 

 

 

Delete

83

 

 

 

Home

71

 

119

 

End

79

 

117

 

Page Up

73

 

132

 

Page Down

81

 

118

 

 


РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА

 

1.         Глинский Я. Turbo Pascal 7.0 и Delphi. Учебное пособие. / ЯН. Глинский. — М.: Диасофт, 2001. – 208 с.

2.         Гусева А. Учимся программировать: Pascal 7.0. Задачи и методы их решения. / А. И. Гусева. М.: Диалог-МИФИ, 2005. – 256 с.

3.         Зеленяк О. Практикум программирования на Turbo Pascal. Задачи, алгоритмы и решения. / О. П. Зеленяк. СПб.: ДиаСофтЮП, ДМК Пресс, 2007. – 320 с.

4.         Кетков Ю. Практика программирования: Бейсик, Си, Паскаль. / Ю. Л. Кетков, А. Ю. Кетков. СПб.: БХВПетербург, 2001. – 480 с.

5.         Климова Л. Pascal 7.0. Практическое программирование. Решение типовых задач. / Л. М. Климова. М.: КУДИЦобраз, 2003. – 528 с.

6.         Коффман Э. Turbo Pascal. / Э .Б. Коффман. М.: Диалектика, 2002. – 896 с.

7.         Культин Н. Программирование в Turbo Pascal 7.0 и Delphi. / Н. Б. Культин. СПб.: БХВ‑Петербург, 2007. – 400 с.

8.         Лукин С.Н. Турбо Паскаль 7.0. Самоучитель для начинающих. / С .Н. Лукин. М.: ДиалогМИФИ, 2002. – 400 с.

9.         Марченко А. Программирование в среде Turbo Pascal 7.0. Базовый курс. / А. И. Марченко, Л. А. Марченко. М.: Век+, 2003. – 464 с.

10.     Меженный О. Turbo Pascal. Учитесь программировать./ О. А. Меженный М.: Вильямс, 2001. – 448 с.

11.     Немнюгин C. Изучаем Turbo Pascal. / Л. В. Перколаб, C. А. Немнюгин. СПб: Питер, 2007. – 320 с.

12.     Немнюгин С. Turbo Pascal. / С. А. Немнюгин. СПб.: Питер, 2006. – 268 с.

13.     Фаронов В. Turbo Pascal 7. Начальный курс. / В. В. Фаронов. М.: ОМД Групп, 2003. – 576 с.

14.     Фаронов В. Turbo Pascal 7. Практика программирования. / В. В. Фаронов. М.: ОМД Групп, 2003. – 415 с.

15.     Федоренко Ю. Алгоритмы и программы на Turbo Pascal. Учебный курс. / Ю. П. Федоренко. СПб: Питер, 2001. – 240 с.

Рейтинг@Mail.ru

вверх гостевая; E-mail