Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
оап №1 н.doc
Скачиваний:
16
Добавлен:
01.05.2025
Размер:
3 Мб
Скачать
☆

Раздел 5 Организация файловой системы в Паскале

Тема 5.1 Типы файлов, объявление, физическая и логическая

организация файловой системы, процедуры и

функции обработки файлов. Нетипизированные

файлы их назначение и использование

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

Литература: [4, с. 150-164]; [6, с. 69-83]

Вопросы для самоконтроля

  1. Что называют файлом, файловой переменной.

  2. Как описывают файловую переменную, текстовый файл.

  3. Стандартные процедуры для работы с файлами Assign, Reset, Rewrite, Сlose, Rename, Erase.

5 Основные процедуры обработки всех типов файлов.

Тема 5.2 Типизированные и текстовые файлы их назначение и

использование. Основные процедуры обработки

типизированных и текстовых файлов

Типизированные файлы их назначение и использование. Основные процедуры и функции обработки типизированных файлов. Текстовые файлы их назначение и использование. Основные процедуры и функции обработки текстовых файлов.

Литература: [2]; [3]; [6, с. 69-83, 150-164]

Вопросы для самоконтроля

  1. Что называют типизированным файлом, файловой переменной, их назначение и использование.

  2. Пользовательские процедуры для обработки типизированных файлов.

  3. Процедуры и функции обработки типизированных файлов

  4. Как описывают файловую переменную, текстовый файл.

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

  6. Основные процедуры обработки файлов.

  7. Просмотр и модификации созданных файлов

Задания на домашнюю контрольную работу №1 по

дисциплине «Основы алгоритмизации и программирования»

  1. Ввести массив из 20 чисел, заполнить его случайными числами от 0 до 5. Заменить все нули на число 9.

  2. Составить программу заполнения одномерного массива из n элементов по формуле Y[i]=i2+23i.

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

  4. В массиве А(п) каждый эле­мент, кроме первого, заменить суммой всех предыдущих элементов.

  5. Составить программу заполнения одномерного массива из n элементов так, чтобы первый элемент был равен 1, второй ‑ 2, а каждый следующий был равен сумме двух предыдущих

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

  7. Найти сумму всех элементов одномерного массива.

  8. Найти сумму всех четных элементов одномерного массива.

  9. Найти сумму всех нечетных элементов одномерного массива.

  10. Найти произведение всех элементов одномерного массива.

  11. Найти произведение всех четных элементов одномерного массива.

  12. Найти произведение всех нечетных элементов одномерного массива .

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

  14. В одномерный массив А [1:n] занесены длины отрезков, которые выражены в сантиметрах. Составить программу, в результате выполнения которой каждый элемент массива будет выражен в миллиметрах.

  15. Составить программу. В одномерном массиве В[1:m] все нечетные элементы, начиная с 5-го заменить на 1.

  16. Составить программу, в которой все элементы одномерного массива L[1:n], значения которых находятся в числовом интервале [a,b], будут заменены на 0.

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

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

  19. Определить число локально минимальных элементов одномерного числового массива (элемент, меньший каждого из двух соседних ему элементов).

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

  21. Стандартный диаметр цилиндра должен равняться d. Имеется набор числовых значений – диаметры партии изготовленных цилиндров. Допустимые отклонения диаметра от стандартного не более чем Е. Составить программу, определяющую номера бракованных цилиндров и их количества.

  22. Определить наибольшее количество идущих подряд положительных (отрицательных) элементов таблицы.

  23. Имеется два одномерных массива одинаковой размерности. Создать третий, каждый элемент которого – сумма соответствующих элементов исходных массивов.

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

  25. Подсчитать количество различных чисел, встречающихся среди элементов данного одномерного массива.

  26. Составить алгоритм поиска наибольшего элемента одномерного массива.

  27. Даны три числовых массива. Найти наименьший элемент из этих массивов.

  28. Составить программу поиска номера N наименьшего элемента одномерного массива.

  29. Даны два одномерных массива. Определить, есть ли наибольший элемент массива А среди элементов массива В.

  30. Упорядочить по возрастанию (по убыванию) элементы одномерного массива.

  31. В массиве T (k,n) найти первый и последний нуле­вые элементы.

  32. Заполнить таблицу умножения.

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

  34. Дан числовой массив А, содержащий n строк и n столбцов. Найти суммы S1 и S2 элементов, записанных в каждой из его больших диагоналей.

  35. Дан числовой массив В[1:10,1:10]. Заменить в нем строки столбцами (первую строку – первым столбцом, вторую – вторым, и т.д.)

  36. Дан числовой массив А[1:6,1:6]. Заполнить одномерный массив S, элементами которого являются суммы элементов, записанных в строках массива А.

  37. Дан числовой массив А[1:6,1:6]. Заполнить одномерный массив S, элементами которого являются суммы элементов, записанных столбцах массива А.

  38. Дан числовой массив М[1:n,1:n]. Сохранив без изменения элементы крайних строк и крайних столбцов массива, заменить каждый внутренний элемент средним арифметическим четырех соседних с ним элементов (сверху, снизу, справа и слева).

  39. Дан прямоугольный вещественный массив размерностью m*n. Определить, для какой строки массива сумма элементов максимальная.

  40. Дан прямоугольный вещественный массив размерностью m*n. Найти наименьшее число М, обладающее таким свойством:

а) хотя бы в одной строке массива все элементы не превосходят М;

б) хотя бы в одном столбце массива все элементы не превосходят М.

  1. Поменять местами первую строку прямоугольного массива с последней, вторую с предпоследней и т.д.

  2. В матрице А(m,n) найти строку с максимальной суммой элементов и строку с минимальной суммой элементов. Далее сформировать вектор В(2,m), у которого бы элементы чередовались с максимальной и минимальной строк.

  3. Дана квадратная матрица А(4,4). За один просмотр элементов матрицы А(4,4) сформировать вектор С(4), каждый j-й элемент которого равен произведению элементов j-го столбца исходной матрицы, и вектор D(4), каждый j-й элемент которого равен сумме соответствующей строки матрицы А.

  4. Дана квадратная матрица V(4,4).За один просмотр найти строку с минимальной суммой элементов и строку с максимальной суммой элементов и образовать произведение этих строк.

  5. Задана квадратная матрица Х(5,5), указать индексы всех элементов, имеющих наименьшее значение.

  6. Даны две прямоугольные матрицы А(3,4) и В(3,4).Найти матрицу С(3,4), элементы которой равны сумме соответствующих элементов матриц А и В, после чего произвести транспонирование полученной матрицы С.

  7. Дана действительная квадратная матрица Х(5,5).Требуется преобразовать матрицу: поэлементно вычесть последнюю строку из всех строк, кроме последней.

  8. В данной целочисленной квадратной матрице А(5,5) указать индексы всех элементов, имеющих наибольшее значение.

  9. Задана квадратная матрица А(5,5). Найти местоположение столбца (номер L) строки c минимальной суммой элементов, а также элемент с минимальным значением в матрице А. Далее сформировать вектор Р(5), каждый элемент которого равен разности соответствующих элементов К-столбца и L-строки, деленной на минимальный элемент матрицы А.

  10. Задана прямоугольная матрица А(4,5).Найти местоположение (номер К) строки с максимальной суммой элементов. Далее сформировать матрицу В(4,5), каждый элемент строки которой равнялся бы элементу соответствующей строки матрицы А, деленному на соответствующий элемент К-й строки.

  11. Дана действительная квадратная матрица М(5,5). Требуется переставить строки матрицы по возрастанию первых элементов строк.

  12. Задана квадратная матрица R(n,n). Найти номер столбца К и строки L с максимальным произведением.

  13. Задана матрица Х(n,m). Найти строки с максимальным и минимальным средним значениями элементов и поменять их местами.

  14. Заполнить квадратную матрицу В(10,10) единицами в шахматном порядке, начиная с верхнего левого угла. Соседние клетки заполнить нулями.

  15. Дана действительная квадратная матрица С(7,7). Найти максимальный элемент в главной диагонали и напечатать строку, в которой он находится.

  16. Дана матрица М(7,4).Определить четные элементы, имеющие нечетную сумму индексов.

  17. Дана квадратная целочисленная матрица F(m,m).Найти суммы элементов строк, имеющих четные элементы на главной диагонали.

  18. Задана квадратная матрица Y(5,5).Определить, где больше четных элементов: выше или ниже главной диагонали?

  19. Заполнить квадратную матрицу Х(7,7) следующим образом: элементы, расположенные на главной диагонали, принять равными 1; выше главной диагонали - сумме индексов; ниже - их разности.

  20. Дана матрица В(l,p).Определить сумму элементов, кратных 3, и количество отрицательных элементов.

  21. Вычислить К=(М1+М2+М3)/3, где М1,М2,М3 - максимальные элементы массивов Х(30), Y(15), Z(20).

  22. Два треугольника заданы координатами своих вершин. Вычислить их площади по формуле S=1/2((Х2-Х1)(Y3-Y1)-(X3-X1)(Y2-Y1)) и определить, какой из них имеет большую площадь.

  23. В порт в среднем приходят 3 корабля в день. Какова вероятность того, что в день придет 2 корабля, 4 корабля? Вероятность вычислять по формуле: Р=3*е-3/к!.

  24. Футболист ударом ноги посылает мяч вертикально вверх с высоты h0=0,4 м с начальной скоростью v0=18 м/с. На какой высоте будет мяч через 2с, 4с? Вычислить высоту по формуле h=h0+v0t+gt2/2.

  25. Пятиугольник задан координатами своих вершин. Найти его площадь, используя для вычисления площадей треугольников формулу Герона: S=p(p-a)(p-b)(p-c), где p=(a+b+c)/2.

  26. Вычислить Z=(v1+v2+v3)/3, где v1,v2,v3 - объемы шаров с радиусами r1, r2, r3 соответственно. Объем шара вычислять по формуле V=4/3ПR3.

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

  28. Задан треугольник АВС длинами своих сторон. Определить его медианы (медиана, проведенная к стороне А равна 0.5 (2в2+2с2-а2).

  29. Даны три одномерных массива А(15), В(10), С(20).Вывести на экран их значения в порядке возрастания.

  30. Определить число сочетаний из n по m (n>m), по формуле С=n!/m!(n-m).

  31. Вычислить Z=(m1+m2)/2, где m1 и m2 - наименьшие элементы массивов Х(20) и Х(35).

  32. Вычислить среднее арифметическое значение положительных элементов для массивов Р(к), L(m), Q(n).

  33. Составить программу вычисления значения функции S= x2+y2+sin2xy + x2+z2+sin2xz + y2+z2+sin2yz , используя функцию вида: a2+b2+sin2ab

  34. Сформировать массив А(n), где а1=1!, а2=2!,...,аn=n!.

  35. Даны две квадратных матрицы Х(5,5) и Y(7,7). Определить сумму элементов, расположенных на главных диагоналях.

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

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

  38. Даны действительные s и t. Получить f(t,-2s,1.17)+f(2.2,t,s-t), где f(a,b,c)= 2a-b-sinc.

  39. Даны действительные а, в, с. Получить (max (a-b, a, a+b) + max (a, b+c, a-c))/ (1+max (a+bc,1.15,a/c)).

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

  41. Даны координаты треугольника и координаты точки на плоскости. Определить, лежит ли точка внутри треугольника.

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

Е=(min(a,c)-min(a,b)/ (5+min(b,c))

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

W:= min(x,y)/max(x,y) +max(x,y)/min(y,z+x).

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

  1. Определить, является ли число b делителем числа a.

  2. Составить программу нахождения НОД и НОК двух чисел a и b.

  3. Составить программу решения квадратного уравнения.

  4. Написать программу, которая меняет местами значения двух переменных х и y. Оформить как процедуру обмен значений переменных и вывод их на экран. Процедуру описать без параметров. В основной программе вызвать процедуру три раза. Процедуру описать с входными параметрами. В основной программе поменять местами значения переменных: a –> b–> c–> d

  5. Пятиугольник задан координатами своих вершин. Найти его площадь, используя для вычисления площадей треугольников формулу Герона:S=p(p-a)(p-b)(p-c), где p=(a+b+c)/2.

  6. Даны три одномерных массива А(15), В(10), С(20). Вывести на экран их значения в порядке возрастания.

  7. Вычислить К=(М1+М2+М3)/3, где М1,М2,М3 - максимальные элементы массивов Х(30), Y(15), Z(20).

  8. Ввести строку, если она является записью римского числа – записать ее как целое число.

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

  10. Ввести 10 русских имен. При вводе проверить, написано ли имя с прописной буквы. Если необходимо исправить и вывести на экран правильное написание.

  11. Вывести на экран коды латинских символов от «А» до «Z».

  12. Вывести на экран коды латинских символов от «a» до «z».

  13. Вывести на экран коды русских символов от «А» до «Я».

  14. Вывести на экран коды русских символов от «а» до «я».

  15. Для каждого символа указанного текста подсчитать, сколько раз он встречается в тексте. Сообщение об одном символе должно печататься не более одного раза.

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

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

  18. В заданном предложении указать слова, в которых содержатся гласные (А, I).

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

  20. Найти самое длинное симметричное слово заданного предложения, например АККА, и указать номер позиции, с которого оно начинается.

  21. Ввести три слова. Вывести их на экран по алфавиту.

  22. Отредактировать заданное предложение, заменяя многоточия точкой, а вместо точки ставить восклицательный знак.

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

  24. Из заданного текста предложения выбрать и напечатать только те символы, которые встречаются в нем только один раз (в том порядке, в котором они встречаются в тексте)

  25. В заданном тексте заменить последовательность символов X(i) на A(k] и подсчитать число произведенных замен.

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

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

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

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

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

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

  32. Ввести текст, содержащий от 1 до 4 цифровых символов, отображающих целые числа от 1 до 2000. На печать вывести введенные символы и их представление в римской системе счисления.

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

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

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

  36. В заданном тесте подсчитать количество четырехбуквенных слов и каждое четное из них заменить на сочетание "SsSs".

  37. Дана строка символов, состоящая из произвольного текста на английском языке, слова отделены пробелами. После каждого согласного символа вставить сочетание "Ff'..

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

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

  40. Используя записи, написать программу, которая формирует базу Меню (название блюда, категория, цена, вес в граммах). Программа выводит категорию, цену, вес в граммах на вводимое с клавиатуры название блюда.

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

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

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

  44. Используя записи, написать программу, которая формирует базу Туристическое агентство (страна, продолжительность тура, цена, количество экскурсий) – Программа выводит продолжительность тура, цену, количество экскурсий на вводимый с клавиатуры запрос на страну.

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

  46. Используя записи, написать программу, которая формирует базу Автомобильный салон (марка, модель, макс. скорость, цена). Программа выводит марку и модель автомобиля на вводимые с клавиатуры максимальную скорость, цену.

  47. Используя записи, написать программу, которая формирует базу Автомобильный салон (марка, модель, макс. скорость, цена). – Программа выводит модель, максимальную скорость, цену на вводимый с клавиатуры марку автомобиля.

  48. Используя записи, написать программу, которая формирует базу Ювелирный магазин (Наименование, металл, цена, вес). Программа выводит металл, цену, вес на вводимое с клавиатуры наименование изделия.

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

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

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

  52. Используя записи, написать программу, которая заполняет анкеты студентов. Анкета включает в себя ФИО, возраст, пол, номер группы и оценки по четырем предметам. Программа выводит ФИО студентов женского пола, номер группы, их оценки.

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

  54. Создать файл, содержащий сведения о количестве изделий собранных сборщиками цеха за неделю. Каждая запись содержит поля фамилия сборщика, количество изделий, собранных им ежедневно в течение шестидневной недели, т.е. раздельно - в понедельник, вторник и т.д. На печать вывести: фамилию сборщика и общее количество деталей, собранное им за неделю; фамилию сборщика, собравшего наибольшее число изделий, и день, когда он достиг наивысшей производительности груда. К файлу добавить числа 34, 25.

  55. Создать файл, содержащий сведения о количестве изделий категорий А, В, С, собранных рабочим за месяц. Структура записи имеет поля: фамилия сборщика, наименование цеха, количество изделий по категории, собранных рабочим за месяц. Считая заданными значения расценок Sa, Sв, Sc за выполненную работу по сборке единицы изделия категорий А, В, С соответственно, выдать на печать следующую информацию; общее количество изделий категорий А, В, С, собранных рабочим цеха X; ведомость заработной платы рабочих цеха X; средний размер заработной платы работников этого цеха. К файлу добавить числа 56,23.

  56. Создать файл, содержащий сведения о телефонах абонентов. Каждая запись имеет поля: фамилия абонентов, год установки телефона, номер телефона. На печать вывести информацию следующего вида: по вводимой фамилии абонента выдается номер телефона; определяется количество установленных телефонов с ХХХХ года. Номер года вводится с клавиатуры. К файлу добавить числа 23,12.

  57. Создать файл, содержащий сведения об ассортименте игрушек в магазине. Структура записи: название игрушки, цена, количество, возрастные границы, например 2 - 5, т.е. от 2 до 5 лет. На печать вывести: названия игрушек, которые подходят детям от 1 до 3 лет; стоимость самой дорогой игрушки и ее наименование; название игрушки, которая по стоимости не превышает "х" руб. и подходит ребенку в возрасте от "а" до "б" лет. Значения "х","а","б" вводятся с клавиатуры. К файлу добавить числа 67,18.

  58. Создать файл, содержащий сведения о сдаче студентами сессии. Структура записи: номер группы, фамилия студента, оценки по пяти экзаменам, признак участия в общественной работе: "Г - активное участие, "О" - неучастие. Написать программу зачисления студентов группы X на стипендию. Студент, получивший все оценки 5 и активно участвующий в общественной работе, зачисляется на повышенную стипендию (доплата 50%), не активно участвует - доплата 25%. Студенты, получившие 4 и 5, зачисляются на обычную стипендию. Студент, получивший одну оценку 3, но активно занимающийся общественной работой, также зачисляется на стипендию, в противном случае зачисление не производится. Номер группы вводится с клавиатуры. К файлу добавить числа 34,2.

  59. Создать файл, содержащий сведения о сдаче студентами сессии. Структура записи: Номер группы, фамилия студента, оценки по пяти экзаменам и пяти зачетам (зачет - незачет). На печать вывести: фамилии неуспевающих студентов с указанием номера группы и количества задолженностей; средний балл, полученный каждым студентом группы X и всей группой в целом. К файлу добавить числа 43, 12.

  60. Создать файл, содержащий сведения о личной коллекции книголюба. Структура записи: шифр книги, автор, название, год издания, местоположение (номер стеллажа, номер полки в Шкафу и т.п.). Ни печать вывести: местонахождение книги автора X название Y, значения X и Y вводятся с клавиатуры; список книг автора Z, находящихся в коллекции; число книг издания ХХХХ года. К файлу добавить числа 34,3.

  61. Создать файл, содержащий сведения о наличии билетов и рейсах Аэрофлота. Структура записи: номер рейса, пункт назначения, время вылета, время прибытия, Количество свободных мест в салоне. На печать вывести: время отправки самолетов в город X; наличие свободных мест на рейс в город X с временем отправления Y. Значения X, Y вводятся по запросу с клавиатуры. К файлу добавить числа 76,15.

  62. Создать файл, содержащий сведения об ассортименте обуви в магазине. Структура записи: артикул, наименование, количество, стоимость одной пары Артикул начинается с буквы Д для женской обуви, М для мужской, П - для детской. На печать вывести информацию; о наличии и стоимости обуви артикула X, ассортиментный список женской обуви с указанием наименования и имеющегося в наличии числа пар каждой модели. К файлу добавить числа 34,33.

  63. Создать два файла, содержащие сведения о десяти нападающих хоккейных команд "Динамо" и "Спартак" соответственно: имена нападающих, число заброшенных ими шайб, количество сделанных голевых передач, заработанное штрафное время. По данным, извлеченным из этих файлов, создать новый третий файл, содержащий имя, команду, сумму очков (голы + передачи) для шести лучших игроков обеих команд. Имена и показатели результативности хоккеистов вывести на экран. К файлу добавить числа 6,12.

  64. Создать файл, содержащий сведения о том, какие из пяти предлагаемых дисциплин по выбору желает слушать студент. Структура записи, фамилия студента, номер группы, пять дисциплин, средний балл успеваемости. Выбираемая дисциплина отмечается символом '1, иначе - пробел. Напечатать списки студентов, желающих прослушать дисциплину X. Если число желающих превысит восемь человек, то отобрать студентов, имеющих более высокий балл успеваемости. К файлу добавить числа 55,6.

  65. Создать файл, содержащий сведения об отправлении поездов дальнего следования. Структура записи: номер поезда, станция назначения, время отправления, время в пути, наличие билетов. На печать вывести: время отправления поездов в город X во временном интервале от А до Б часов; наличие билетов на поезд с номером XXX. К файлу добавить числа 44,2.

  66. Создать файл, содержащий сведения о сотрудниках института Структура записи: фамилия работающего, название отдела, год рождения, стаж работы, должность, оклад. На печать вывести: список сотрудников пенсионного возраста на сегодняшний день с указанием стажа работы; средний стаж, работающих в отделе X. К файлу добавить числа 67,12.

  67. Создать файл, содержащий сведения о пациентах глазной клиники Структура записи: фамилия пациента, пол, возраст, место проживания (город), диагноз На печать вывести: количество иногородних пациентов, прибывших в клинику; список пациентов старше X лет с диагнозом Y. Значения X и У ввести с клавиатуры. К файлу добавить числа 2,7.

  68. Даны три множества Х1, Х2, Х3, содержащие целые числа из диапазона 1..100. Известно, что мощность каждого из этих множеств равна 10. Сформировать новое множество Y=(X1UX2) (X2\X3), из которого выделить подмножество нечетных чисел. На экран вывести исходные и полученное множества. Значения элементов исходных множеств ввести с клавиатуры.

  69. Даны три множества Х1, Х2, Х3, содержащие целые числа из диапазона 1..100. Известно, что мощность каждого из этих множеств равна 10. Сформировать новое множество Y=(X1UX2)\(X2 X3) и вывести на экран его мощность. Проверить, есть ли в множестве Y числа, делящиеся на 6 без остатка. Значения элементов исходных множеств ввести с клавиатуры.

  70. Даны два множества М и N, состоящие из 10 целых чисел из диапазона 1..100. Из данных множеств выделить соответственно подмножества М1 чисел, делящихся на 3 без остатка, и N1 чисел, делящихся на 2 без остатка. На печать вывести мощность и значения элементов множества MN=M1 N1.

  71. Даны три множества X1, X2, X3, содержащие целые числа из диапазона 100...200. Известно, что мощность каждого из этих множеств равна 10. Сформировать новое множество Y=(X1 X2) (X1 X3). На печать вывести множества X1, X2, X3 и Y.

  72. Даны три множества X1= {1,2,3,...,20}, X2= {10,20,30,...,30} и X3= {1,3,5,...,19,21}. Сформировать множество Y= (X1 X2) (X1 X3) (X2 X3), из которого выделить подмножество Y1 чисел, делящихся на 4 без остатка. На печать вывести множество Y и мощность множества Y1. Исходные множества ввести с клавиатуры.

  73. Даны два множества М и N, состоящие из 10 целых чисел из диапазона 1..100. Из данных множеств выделить соответственно подмножества М1 чисел, делящихся на 3 без остатка, и N1 чисел, делящихся на 2 без остатка. На печать вывести мощность и значения элементов множества MN=M1 N1.

  74. Даны три множества X1= {1,2,3,...,20}, X2= {10,20,30,...,30} и X3= {1,3,5,...,19,21}. Сформировать множество Y= (X1 X2) (X1 X3) (X2 X3), из которого выделить подмножество Y1 чисел, делящихся на 7 без остатка. На печать вывести множество Y и мощность множества Y1. Исходные множества ввести с клавиатуры.

  75. Даны два множества М и N, состоящие из 10 целых чисел из диапазона 1..100. Из данных множеств выделить соответственно подмножества М1 чисел, делящихся на 3 без остатка, и N1 чисел, делящихся на 2 без остатка. На печать вывести мощность и значения элементов множества MN=M1 N1.

  76. Даны три множества X1= {1,2,3,...,20}, X2= {10,20,30,...,30} и X3= {1,3,5,...,19,21}. Сформировать множество Y= (X1 X2) (X1 X3) (X2 X3), из которого выделить подмножество Y1 чисел, делящихся на 8 без остатка. На печать вывести множество Y и мощность множества Y1. Исходные множества ввести с клавиатуры.

  77. Даны два множества М и N, состоящие из 10 целых чисел из диапазона 1..100. Из данных множеств выделить соответственно подмножества М1 чисел, делящихся на 3 без остатка, и N1 чисел, делящихся на 2 без остатка. На печать вывести мощность и значения элементов множества MN=M1 N1.

  78. Даны три множества X1= {1,2,3,...,20}, X2= {10,20,30,...,30} и X3= {1,3,5,...,19,21}. Сформировать множество Y= (X1 X2) (X1 X3) (X2 X3), из которого выделить подмножество Y1 чисел, делящихся на 9 без остатка. На печать вывести множество Y и мощность множества Y1. Исходные множества ввести с клавиатуры.

  79. Написать программу, которая формирует множество Y=(X1 Х2) и вывести на печать элементы Y, которые делятся на число 3 без остатка. Проверить выполнение условий ХЗ У. Дано: Х1-{ 1,2,3,4,5,6}; Х2={1,3,4,Дб}; Х3={1,5).

  80. Написать программу, которая формирует множество - Y=(X1\X2) и вывести на печать элементы У, делящиеся на 3 без остатка. Дано: Х1={1,2,3,4,5,6); Х2={ 1,3,4,5,6}.

  81. Написать программу, которая формирует множество Y=(X1 Х2) и вывести на печать его мощность. Дано: Х1={Т1,Т2,Т4,Т5}; Х2={Т1,ТЗ,Т4,Т5}.

  82. Написать программу, которая формирует множество Y=(X1\X3) и вывести его мощность. Дано: Х1={Т1,Т2,Т4,Т5}; ХЗ={Т1,Т5}.

  83. Написать программу, которая формирует множество Y-(X1 X2) и выделяет из него подмножество Y1 чисел, которые являются четными числами.

  84. Дано: Х1={ 1,2,3,4,5,6}; Х2={ 1,3,4,5,6}. Написать программу, которая формирует множество Y=(X1\X2) и выводит на печать его мощность.

  85. Дано: Х1={2,4,6,8,10}; Х2={1,3,5Д7}.- Написать программу, которая формирует множество Y=(Xl X2 ХЗ) и выделяет из него подмножество Y1, которое представляет все цифры, входящие BY.

  86. Дано: X1={‘s’, ‘v’, ‘e’, ‘a’, ‘2’}; X2={'*’,’-’, ’*’, ‘-’ }; X3={‘1’, ‘4’, ‘7’, ‘a’, ‘b’, ‘c’}.Написать программу, которая формирует множество символов Y и выделяет из него подмножество Y1, которое представляет из себя все буквы, входящие в Y

  87. Даны три множества X1= {1,2,3,...,20}, X2= {10,20,...,190,200} и X3= {10,11,12,...40}. Сформировать множество Y= (X2 X3)\((X1 X2) (X1 X3)) и множество Y1, состоящее из элементов Y, деленных на 2. Если полученное в результате деления число на целое, то округлить его до ближайшего целого. На печать вывести Y и Y1. Исходные множества ввести с клавиатуры.

  88. Даны три множества X1= {T2,T4,T6,T8,T10}, X2= {T1,T2,T3,T4,T5} и X3= {T2,T3,T5,T7,T8}. Сформировать множество Y= (X2\X3) (X1\X3). На печать вывести Y и его мощность. Исходные множества описать как типизированные константы.

  89. Написать программу, которая формирует множество: Y=(Xl X2 ХЗ) и выделяет из него подмножество Y1, которое представляет все цифры, входящие BY.

  90. Дано: X1={‘s’, ‘v’, ‘e’, ‘a’, ‘2’};X2={'*’,’-’, ’*’, ‘-’; };

X3={‘1’, ‘4’, ‘7’, ‘a’, ‘b’, ‘c’}.

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

  1. Написать программу, которая формирует множество: Y=(Xl X2 ХЗ) и выделяет из него подмножество Y1, которое представляет все цифры, входящие BY.

  2. Дано: X1={‘н’, ‘л’, ‘1’, ‘a’, ‘5’};X2={'*’,’-’, ’*’, ‘-’; };

X3={‘1’, ‘4’, ‘7’, ‘a’, ‘b’, ‘c’}.

Написать программу, которая формирует множество символов Y и выделяет из него подмножество Y1, которое представляет из себя: цифры и буквы, входящие в Y.

В вариантах 176-180 с клавиатуры вводится произвольный набор символов. Требуется построить и распечатать множество с элементами, символами которого являются:

  1. -цифры от 'О* до *5' и от *7' до '9'.

  2. - буквы от * А' до 4F и от 'X' до 'Z'.

  3. - буквы от *g* до V и цифры от * Г до '6*.

  4. - знаки препинания и скобки.

  5. - буквы от 'А' до 'Z' и цифры от '0* до '5*.

Методические рекомендации по выполнению задач домашней

контрольной работы №1

Одномерный массив (задачи 1-30)

Задача 1. Составить программу нахождения суммы элементов массива.

Решение:

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

Рисунок 1 - Схема алгоритма решения задачи

Текст программы приведен ниже.

Program:

Example;

Var m: Array [1..30] of integer;

S,sum: Integer; {Значение этой переменной s будет равно сумме всех элементов массива}

n, i: Integer; {Переменная для работы с элементами массива}

Begin:

Writeln('Введите n ');

Readln(n);

Writeln('Введите ', n, ' чисел');

For i:=l To n Do {Ввод массива с клавиатуры}

Readln(m[i]); {Чтение i-го элемента}

For i:=l To n Do {Вывод массива }

Write(m[i]: 3); {Вывод i-го элемента}

Writeln;

sum:=0; {Начальное значение суммы}

For i:=l To n Do sum:=sum+m[i]; {К уже найденной сумме прибавляем i-й элемент}

Writeln('их сумма равна ',s); {Вывод результата на экран}

Readln;

End.

Задача 2. Дан линейный массив. Упорядочить его элементы в порядке возрастания.

Сортировка массива выбором (в порядке возрастания).

Описание решения: пусть часть массива (по K-й элемент включительно) отсортирована. Нужно найти в неотсортированной части массива минимальный элемент и поменять местами с (K+1)-м}

Решение:

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

Рисунок 2- Схема алгоритма решения задачи

Текст программы приведен ниже.

Program Sortirovka;

Var

Pr : Integer; A : Array [1..30] Of Integer; {Линейный массив}

I, J, N, K : integer; {Переменные для работы с элементами массива}

Begin

Write('Введите количество

элементов: '); ReadLn(N);

For I := 1 To N Do {Ввод массива с клавиатуры}

Begin

Write('Введите A[', I, '] '); Readln(A[I]); {Чтение i-го элемента массива}

End;

WriteLn;

For I := 1 To (N-1) Do {Изменение номера элемента массива}

Begin

K := I;

For J := I + 1 To N Do If A[J] <= A[K] Then K := J; {Если j-ый элемент меньше или равен предыдущему (k-му), то меняем их местами используя дополнительную переменную Pr}

Pr := A[I]; A[I] := A[K]; A[K] := Pr;

End;

For I := 1 To N Do Write(A[I], ' '); {Вывод отсортированного массива на экран}

End.

Тест: N = 10; элементы массива - 1, 2, 2, 2, -1, 1, 0, 34, 3, 3.

Ответ: -1, -1, 0, 1, 2, 2, 2, 3, 3, 34.

Двумерный массив (задания 31-60)

З адача 1. Заполнить матрицу порядка n по образцу из таблицы 1:

Таблица 1 -Исходные данные

1

2

3

...

n-2

n-1

n

2

1

2

...

n-3

n-2

n-1

3

2

1

...

n-4

n-3

n-2

..

...

...

...

...

...

...

n-1

n-2

n-3

...

2

1

2

n

n-1

n-2

...

3

2

1


Решение:

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

Рисунок 3- Схема алгоритма решения задачи

Текст программы приведен ниже.

Program Massiv12;

Var I, J, K, N : Integer; {Переменные для работы с элементами массива}

A : Array [1..10, 1..10] Of Integer; {Двумерный массив}

Begin

Write('Введите порядок матрицы: '); ReadLn(N); {Чтение кол-ва строк (столбцов)}

For I := 1 To N Do { Изменение номера строки}

For J := I To N Do { Изменение номера столбца}

Begin

A[I, J] := J - I + 1; {Заполнение матрицы используя закономерность}

A[J, I] := A[I, J]; {Присвоение [J,I] элементу значения [I,J] элемента}

End;

For I := 1 To N Do {Перемещение по строкам}

Begin

WriteLn;

For J := 1 To N Do {Перемещение по столбцам}

Write(A[I, J]:4); {Вывод элемента массива}

End

End.

З

Writln

A[J, I] :4

адача 2.
Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали.

Решение:

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

Рисунок 4- Схема алгоритма решения задачи

Текст программы приведен ниже.

Program Obmen;

Var N, I, J: integer; {Переменные для работы с квадратной матрицей}

Max: integer; {Значение этой переменной будет равно значениям максимальных элементов каждой строки}

Ind: integer; {Переменная будет содержать номер столбца макс. элемента}

Vsp : Integer;

A : Array [1..15, 1..15] Of Integer; {Квадратная матрица}

Begin

WRITE('Введите количество элементов в массиве: '); READLN(N); {Чтение кол-ва строк (столбцов) квадратной матрицы}

FOR I := 1 TO N DO {Изменение номера строки}

FOR J := 1 TO N DO {Изменение номера столбца}

Begin

WRITE('A[', I, ',', J, '] '); READLN(A[I, J]){Заполнение матрицы }

End;

FOR I := 1 TO N DO {Изменение номера строки}

Begin

Max := A[I, 1]; {Начальное значение максимального элемента}

Ind := 1; {Запоминаем номер столбца максимального элемента}

FOR J := 2 TO N DO {Изменение номера столбца}

IF A[I, J] > Max THEN {Поиск максимального элемента строки}

Begin

Max := A[I, J]; {Сохранение максимального элемента строки}

Ind := J {Сохранение номера столбца максимального элемента }

End;

V sp := A[I, I]; A[I, I] := A[I, Ind]; A[I, Ind] := Vsp {Меняем местами максимальный элемент строки Max с элементом главной диагонали A[I, I] используя дополнительную переменную Vsp}

End;

F OR I := 1 TO N DO {Перемещение по строкам}

B

конец

egin

WriteLn;

FOR J := 1 TO N Do {Перемещение по столбцам}

Write(A[I, J] : 3); {Вывод элементов матрицы}

End; WriteLn

End.

З

Writln

A[J, I] :4

адача 2.
Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали.

Решение:

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

Рисунок 5- Схема алгоритма решения задачи

Текст программы приведен ниже.

Program Obmen;

Var N, I, J: integer; {Переменные для работы с квадратной матрицей}

Max: integer; {Значение этой переменной будет равно значениям максимальных элементов каждой строки}

Ind: integer; {Переменная будет содержать номер столбца макс. элемента}

Vsp : Integer;

A : Array [1..15, 1..15] Of Integer; {Квадратная матрица}

Begin

WRITE('Введите количество элементов в массиве: '); READLN(N); {Чтение кол-ва строк (столбцов) квадратной матрицы}

FOR I := 1 TO N DO {Изменение номера строки}

FOR J := 1 TO N DO {Изменение номера столбца}

Begin

WRITE('A[', I, ',', J, '] '); READLN(A[I, J]){Заполнение матрицы }

End;

FOR I := 1 TO N DO {Изменение номера строки}

Begin

Max := A[I, 1]; {Начальное значение максимального элемента}

Ind := 1; {Запоминаем номер столбца максимального элемента}

FOR J := 2 TO N DO {Изменение номера столбца}

IF A[I, J] > Max THEN {Поиск максимального элемента строки}

Begin

Max := A[I, J]; {Сохранение максимального элемента строки}

Ind := J {Сохранение номера столбца максимального элемента }

End;

V sp := A[I, I]; A[I, I] := A[I, Ind]; A[I, Ind] := Vsp {Меняем местами максимальный элемент строки Max с элементом главной диагонали A[I, I] используя дополнительную переменную Vsp}

End;

F OR I := 1 TO N DO {Перемещение по строкам}

B

конец

egin

WriteLn;

FOR J := 1 TO N Do {Перемещение по столбцам}

Write(A[I, J] : 3); {Вывод элементов матрицы}

End; WriteLn

End.

Подпрограммы и функции (задания 61-90)

Задача 1. Используем алгоритм нахождения наибольшего общего делителя двух натуральных чисел в качестве вспомогательного при решении задачи: составить программу вычитания дробей (a, b, c, d — натуральные числа). Результат представить в виде обыкновенной несократимой дроби.

Решение:

Схема алгоритма решения задачи представлена на рисунках 6,7.

Подпрограмма.

1) Ввести натуральные числа M, N.

2) Если M=N, перейти к п. 5, иначе к следующему пункту.

3) Если M>N, то M:=M-N, иначе N:=N-M.

4) Перейти к п. 2.

5) Передать значение M в основную программу.

6) Конец подпрограммы.

Основная программа.

1) Ввести значения A, B, C, D.

2) E:=A*D - B*C.

3) F:= B*D.

4) Если E=0, вывести значение E и перейти к п. 9, иначе перейти к следующему пункту.

5) M:=|E|, N:=F, перейти к подпрограмме вычисления НОД.

6) G := M.

7) E и F нацело разделить на G.

8) Вывести значения E и F на печать.

9) Конец программы.

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

Рисунок 6 - Схема алгоритма подпрограммы

Рисунок 7- Схема алгоритма решения задачи

Текст программы приведен ниже.

Program Sub;

Var A, B, C, D, G, E, F : Integer;

Procedure Nod(M, N : Integer; Var K : Integer); {Подпрограмма}

Begin

W hile M <> N Do {Пока переменные M и N не равны}

If M > N Then M := M - N Else N := N - M; {Выполняем условие 3)}

K := M {Выходному параметру K присваиваем значение переменной M}

End;

Begin

Write('Введите числители и знаменатели дробей:');

ReadLn(A, B, C, D); {Ввод числителей и знаменателей дробей}

E := A * D - B * C; {Вычисление числителя разности двух дробей}

F := B * D; {Вычисление общего знаменателя двух дробей}

If E = 0 Then WriteLn(E) {Проверка правильности знаменателя (не равен 0)}

Else

Begin

Nod(Abs(E), F, G); {Поиск наибольшего общего делителя (подпрограмма Nod)}

E := E Div G; {Сокращение числителя}

F := F Div G; {Сокращение знаменателя}

WriteLn('Ответ: ', E, '/', F) {Вывод результата на экран}

End

End.

Задача 2. Дано натуральное число n. Переставить местами первую и последнюю цифры этого числа.

Решение:

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

Рисунок 8- Схема алгоритма решения задачи

Текст программы приведен ниже.

Program Integ;

Var N : Integer; {Натуральное число}

Begin

Write('Введите натуральное число: ');

ReadLn(N); {Чтение натурального числа}

If Impossible(N) {Проверка возможности перестановки}

Then WriteLn('Невозможно переставить цифры, возникнет переполнение')

Else Begin

Change(N); {процедура, переставляет местами первую и последнюю цифры}

WriteLn('Ответ: ', N); {Вывод результата на экран}

End;

End.

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

Function Impossible(N : Integer) : Boolean; {функция, проверяющая возможна ли перестановка цифр – результат логический}

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

Рисунок 9- Схема алгоритма решения задачи

Текст программы приведен ниже.

Begin

If Number(N) < 5 {Если кол-во цифр числа N < 5}

Then Impossible := False {то перестановка невозможна – результат отрицательный}

Else Impossible := (N Mod 10 > 3) Or

(N Mod 10 = 3) And

(N Mod 10000 Div 10 * 10 + N Div 10000 > MaxInt Mod 10000)

End;

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

Function Number(N : Integer) : Integer; {функция, возвращающая количество цифр}

Var Vsp : Integer; {переменная для подсчета цифр в числе}

Begin

Vsp := 0; {начальное кол-во цифр}

While N > 0 Do {пока число N>0}

Begin

Vsp := Vsp + 1; {увеличиваем кол-во цифр на 1}

N:= N Div 10; {присваиваем целую часть от деления числа N на 10}

End;

Number := Vsp; {значение кол-ва цифр (Vsp) присваиваем значению функции Number}

End;

Наконец, последняя процедура.

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

Рисунок 10- Схема алгоритма решения задачи

Procedure Change(Var N : Integer); {Выполнение перестановки}

Var Kol, P, S, R : Integer;

Begin

Kol := Number(N); {Переменной Kol присваиваем значение функции Number (функция высчитывает кол-во цифр числа N)}

P := N Mod 10; {определяем последнюю цифру}

If Kol > 1 Then

S := N Div Round(Exp((Kol - 1) * Ln(10)))

Else S := 0; {первая цифра}

R := N Mod Round(Exp((Kol - 1) * Ln(10))) Div 10;

N := P * Round(Exp((Kol - 1) * Ln(10))) + R * 10 + S

End;

Программирование с использованием строковых данных

(Задания 91-120)

Задача 1. Дана последовательность из 45 символов. Подсчитать в этой последовательности количество вопросительных и восклицательных знаков.

Решение:

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

Рисунок 11- Схема алгоритма решения задачи

Текст программы приведен ниже.

Program String_02;

Type

St=String[45]; {Определяем тип St – строка из 45 символов}

Var

A :St; {переменная типа St}

I,K:Byte;

Begin

Writeln('Введите строку символов:');

Readln(a); {чтение строки символов}

К:=0; {начальное значение суммы искомых символов}

For i:= 1 То Lenth(a) Do

If (a[i]='!') Or (a[i]= '?') Then К := K+1; {Если i-ый символ строки равен ‘?’ или ’!’, то увеличиваем сумму на 1}

W гiteln('Koличecтвo символов ! и ? в строке = ',k); {Вывод результата на экран}

End.

З адача 2. Написать программу, которая заменяет все вхождения в строку символа '*' заданной подстрокой.

Решение

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

Рисунок 12- Схема алгоритма решения задачи

Текст программы приведен ниже.

program Macro;

var sText: string[80]; {строка, в которой осуществляется поиск}

sArg: string[8]; {подстрока, на которую заменяются все символы ‘*’}

p: Integer; {переменная, указывающая позицию в строке искомого символа}

begin

WriteLn('Введите sText и sArg:');

ReadLn(sText); {Чтение строки}

ReadLn(sArg); {Чтение подстроки}

p := Pos('*', sText); {определяем позицию символа ‘*’}

while p <> 0 do

begin

Delete(sText, p, 1); {Удаляем символ ‘*’}

Insert(sArg, sText, p); {Вставляем подстроку}

p := Pos('*', sText); {Ищем следующий символ ‘*’}

end;

WriteLn('Выход:');

WriteLn(sText); {Вывод результата на экран}

end.

Программирование с использованием данных типа запись

(Задания 121-135)

Задача 1. Используя записи, написать программу, которая определит количество студентов, сдавших экзамен на 4 и 5 и выведет их фамилии.

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

№студ. Ф.ИО. Оценка

  1. Петров В.В. 5

  2. ИвановСИ. 4

  3. Чемоданов М.Т. 3

Решение:

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

Рисунок 13- Схема алгоритма решения задачи

Текст программы приведен ниже.

program zad 8;

{ Блок описания данных }

type v=record {определяем тип запись}

nom: Integer; {Номер студента}

fio: string[25]; {ФИО}

ball: integer {Оценка}

end;

var spisok: array[1..25] of v; {Одномерный массив содержащий элементы записи}

i,n,kol: integer;

begin{ Начало программы }

{ Ввод данных и подсчет студентов }

kol:=p;

writeln('введите кол-во студ. в группе:'); readhi(n); {Чтение кол-ва студентов}

for i:=l to n do

begin

writeln('вводите данные след, студента');

With spisok[i] do {Ввод данных списка}

begin

write('номер в списке:'); readln(nom); {номер студента}

write('Ф.И.О: '); readln(fio); {ФИО студента}

write('оценка:'); readln(ball); {Оценка студента}

if ball >= 4 then kol:=kol+1; {Считаем кол-во студентов, чей балл выше 3}

end;

end;

{ Вывод данных }

w riteln ('кол-во студентов; сдавших экзамен на 4 и 5: ',kol); {Вывод кол-ва студентов, чей балл выше 3 на экран}

writeln('Ф.И.О. этих студентов:');

for i:=1 to n do begin {Выводим их ФИО}

with spisok[i] do

if ball>=4 then writeln(fio); {если балл выше 3, то выводим ФИО}

end; end.

Файлы (Задания 136-150)

Задача 1. Сформировать файл, состоящий из целых чисел 5, 6, 7, 8, 9.

Решение:

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

Рисунок 14- Схема алгоритма решения задачи

Задача 2. К файлу, созданному в предыдущем примере, добавить числа 20, 30,40.

Решение:

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

Рисунок 15- Схема алгоритма решения задачи

Текст программы приведен ниже.

Program Number_2;

Var Fb:File Of Byte; {файловая переменная (файл состоит из целых чисел типа byte)}

I,A:Byte;

Begin

Assign(Fb,’TileByte.Dat'); {Связываем файловую переменную с файлом на диске}

Rewrite(Fb); {Открываем файл для записи (создаем файл)}

Seek(Fb,FileSize(Fb)); {переходим к последнему элементу файла}

For I:= 2 To 4 Do

Begin

A:=I*10;

Write(Fb,A) {Записываем в файл числа 20, 30, 40}

End; Close(Fb); {Закрываем файл}

End.

Рисунок 16- Схема алгоритма решения задачи

Задача 3. Видоизменить содержимое файла, созданного в первом примере, заменив последние три элемента на числа 30,40, 50. Затем вывести на печать содержимое файла.

Решение

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

Текст программы приведен ниже.

Program Number_3;

Var Fb : File Of Byte; {файловая переменная (файл состоит из целых чисел типа byte)}

I,A:Byte;

Begin

Assign(Fb,’FileByte.Daf’); {Связываем файловую переменную с файлом на диске}

Rewrite(Fb); {Открываем файл для записи}

{Корректировка элементов}

For I :=3 To 5 Do

Begin

Seek(Fb,I-1); {}

Read(Fb,A);

A:=I*10;

Seek(Fb,I-l);

Write(Fb,A)

End;

{Печать элементов)

Reset(Fb); {Открываем файл для чтения}

While Not Eof(Fb) Do {Пока не конец файла}

Begin

Read(Fb,A); {Читаем компоненту файла}

Write(A,"); {Выводим на экран}

End;

Close(Fb); {Закрываем файл}

End.

Задача 4. Необходимо написать программу, которая формирует и выводит на экран дисплея текстовый файл Т ,состоящий из девяти строк , в первой из которых содержится один символ "1", во второй - два символа "2",. ,в девятой - девять символов "9". Файл будет создан и хранится на диске а: под именем tt.txt.

Решение:

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

Рисунок 17- Схема алгоритма решения задачи

Текст программы приведен ниже.

Program Zadanie_9;

Var T :Text; {текстовая переменная}

C,D: Char;

Begin

Assign(T,'a:tt.txt'); {связываем текстовую переменную с файлом на диске}

Rewrite(T); {Открываем файл для записи (создаем файл)}

For D:='1' To '9' Do

Begin

For С := '1' To D Do

Write(T,D); {Записываем в файл}

Writeln(T); {Перемещаемся на строку вниз}

End;

Close(T); {Закрываем файл}

Reset(T); {Открываем файл для чтения}

While Not Eof(T) Do {Пока не конец файла}

Begin

Read(T,C); {Читаем компоненту файла}

Write(C); {Выводим на экран}

End;

Close(T); {Закрываем файл}

End.

Программирование с использованием множеств

(Задания 151-180)

Задача 1. Пусть в программе вводится строка символов W с точкой в конце. Для заполнения множества W используем символьную переменную К. Участок программы ввода такой строки символов выглядит следующим образом:

Решение:

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

Рисунок 18- Схема алгоритма решения задачи

Текст программы приведен ниже.

var w: set of char;

k:char;

begin

{ Ввод строки символов в множество W}

w:=[];

repeat

read(k);

wi:=w+[k];

until k=’.’;

Вывод различных символов, входящих в сформированное множество, выглядит так:

for k:='af to fz' do

if k in w then write (' ',k);

Задача 2. Даны три множества: Х1 = {1,2,4}; Х2 = {3,4,5,6}; Х3={1,6}.

Сформировать новое множество Y=(X1 X2) Х1 и вывести на печать его элементы. Проверить выполнение условия ХЗ Y.

Решение:

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

Рисунок 19- Схема алгоритма решения задачи

Текст программы приведен ниже.

program zad6;

var xl,x2,x3,y: set of 1..6; {множества}

k:integer; {счетчик цикла}

begin xl :=[1,2,4]; x:=[3,4,5,6]; x3:=[l,6]; {присваиваем значения множествам}

y:=(x1x2)*xl; {Получаем множество y}

write (' МНОЖЕСТВО Y: ');

{Вывод множества на экран}

for k:=l to 6 do

if(k in y) then write('',k);{Если число принадлежит множеству, выводим его на экран}

if x3<=y then write (' ХЗ принадлежит Y') {Проверка, принадлежит ли множество x3 множеству y}

else write (' ХЗ не принадлежит Y');

end.

Таблица 2 – Варианты домашней контрольной работы №1 по дисциплине «Основы алгоритмизации

и программирования»

Предпоследняя цифра

шифра

Последняя цифра шифра

0

1

2

3

4

5

6

7

8

9

0

27, 57, 65, 117, 127, 161

26, 44, 79, 100, 132, 153

18, 49, 63, 111, 137, 157

17, 48, 69, 106, 137, 173

22, 60, 70, 113, 131, 157

7, 55, 83, 92, 127, 171

19, 41, 77, 106, 141, 169

24, 53, 88, 100, 137, 160

23, 38, 76, 112, 140, 172

19, 51, 87, 91, 121, 152

1

27, 57, 65, 117, 127, 161

26, 44, 79, 100, 132, 153

18, 49, 63, 111, 137, 157

17, 48, 69, 106, 137, 173

22, 60, 70, 113, 131, 157

7, 55, 83, 92, 127, 171

19, 41, 77, 106, 141, 169

24, 53, 88, 100, 137, 160

23, 38, 76, 112, 140, 172

19, 51, 87, 91, 121, 152

2

27, 57, 65, 117, 127, 161

26, 44, 79, 100, 132, 153

18, 49, 63, 111, 137, 157

17, 48, 69, 106, 137, 173

22, 60, 70, 113, 131, 157

7, 55, 83, 92, 127, 171

19, 41, 77, 106, 141, 169

24, 53, 88, 100, 137, 160

23, 38, 76, 112, 140, 172

19, 51, 87, 91, 121, 152

3

27, 57, 65, 117, 127, 161

26, 44, 79, 100, 132, 153

18, 49, 63, 111, 137, 157

17, 48, 69, 106, 137, 173

22, 60, 70, 113, 131, 157

7, 55, 83, 92, 127, 171

19, 41, 77, 106, 141, 169

24, 53, 88, 100, 137, 160

23, 38, 76, 112, 140, 172

19, 51, 87, 91, 121, 152

Продолжение таблицы 2

Предпоследняя цифра

шифра

Последняя цифра шифра

0

1

2

3

4

5

6

7

8

9

4

27, 57, 65, 117, 127, 161

26, 44, 79, 100, 132, 153

18, 49, 63, 111, 137, 157

17, 48, 69, 106, 137, 173

22, 60, 70, 113, 131, 157

7, 55, 83, 92, 127, 171

19, 41, 77, 106, 141, 169

24, 53, 88, 100, 137, 160

23, 38, 76, 112, 140, 172

19, 51, 87, 91, 121, 152

5

27, 57, 65, 117, 127, 161

26, 44, 79, 100, 132, 153

18, 49, 63, 111, 137, 157

17, 48, 69, 106, 137, 173

22, 60, 70, 113, 131, 157

7, 55, 83, 92, 127, 171

19, 41, 77, 106, 141, 169

24, 53, 88, 100, 137, 160

23, 38, 76, 112, 140, 172

19, 51, 87, 91, 121, 152

6

27, 57, 65, 117, 127, 161

26, 44, 79, 100, 132, 153

18, 49, 63, 111, 137, 157

17, 48, 69, 106, 137, 173

22, 60, 70, 113, 131, 157

7, 55, 83, 92, 127, 171

19, 41, 77, 106, 141, 169

24, 53, 88, 100, 137, 160

23, 38, 76, 112, 140, 172

19, 51, 87, 91, 121, 152

7

27, 57, 65, 117, 127, 161

26, 44, 79, 100, 132, 153

18, 49, 63, 111, 137, 157

17, 48, 69, 106, 137, 173

22, 60, 70, 113, 131, 157

7, 55, 83, 92, 127, 171

19, 41, 77, 106, 141, 169

24, 53, 88, 100, 137, 160

23, 38, 76, 112, 140, 172

19, 51, 87, 91, 121, 152

8

27, 57, 65, 117, 127, 161

26, 44, 79, 100, 132, 153

18, 49, 63, 111, 137, 157

17, 48, 69, 106, 137, 173

22, 60, 70, 113, 131, 157

7, 55, 83, 92, 127, 171

19, 41, 77, 106, 141, 169

24, 53, 88, 100, 137, 160

23, 38, 76, 112, 140, 172

19, 51, 87, 91, 121, 152

Продолжение таблицы 2

Предпоследняя цифра

шифра

Последняя цифра шифра

0

1

2

3

4

5

6

7

8

9

9

27, 57, 65, 117, 127, 161

26, 44, 79, 100, 132, 153

18, 49, 63, 111, 137, 157

17, 48, 69, 106, 137, 173

22, 60, 70, 113, 131, 157

7, 55, 83, 92, 127, 171

19, 41, 77, 106, 141, 169

24, 53, 88, 100, 137, 160

23, 38, 76, 112, 140, 172

19, 51, 87, 91, 121, 152