
- •Сборник задач по структурному программированию
- •Оглавление
- •Аннотация
- •Введение
- •Раздел 1
- •Работа с простыми типами данных
- •I a b c результат (можно/ нельзя)
- •Пример 1.1.1
- •Var hour,minute,n:longint;
- •Пример 1.1.2.
- •Var X,s,p:real;
- •I,n:integer;
- •Работа с символами, строками и текстом.
- •3 Слова длины 8 букв и т. Д.
- •Пример 1.2.1
- •Var s:string[80];
- •I,k:integer;
- •Разработка структурированных программ с использованием процедур и функций.
- •Пример 1.3.
- •Var I:word;
- •Var I:word;
- •X:integer;
- •I,m:word;
- •Работа с файлами разных типов.
- •Пример 1.4.
- •I: word;
- •Var X:integer;
- •Var I:word;
- •Var X:integer;
- •Inc(X);{Количество слов будет на 1 меньше!!}
- •Var p:boolean;
- •If p then
- •Var j:integer;
- •Var k,l:byte;
- •Динамические структуры данных. Списки.
- •Пример 1.5.
- •Var lp,pList,pStart : pEl_list;
- •I,oi,kol: integer; {переменные для работы с меню}
- •Insert_list(li);
- •Var I:integer;
- •Var I:integer;p:boolean;
- •Var k:char;
- •1: Begin dialog;
- •2: Begin dialog;
- •3: Begin dialog;
- •4: Begin
- •If noswap then begin
- •5: Begin
- •Var I:integer;
- •Vivod(2,2,25);
- •Решение графических задач
- •Пример 1_6.
- •Var dr,md:integer;
- •X,y,x1,y1,x2,x3,y2,y3,r:integer;
- •Var a:real;
- •Раздел 2
- •Работа с графическими объектами
- •Пример 2.1
- •X,y: real;
- •Var f1,f2:real;
- •Var gd,gm:integer;
- •Xb,xe,I,j:integer;
- •Работа с объектами- векторами
- •Пример 2.2
- •Var t:tPerson;
- •Interface
- •Implementation
- •I:integer;
- •I:integer;
- •I,j:integer;
- •Var m:integer;
- •Init(m);
- •Insert;
- •Работа с объектами - списками.
- •Пример 2.3
- •Interface
- •Implementation
- •Var Pcur1:t_el;
- •Var fname:ss;
- •Var s1:ss; p:byte; I:byte;
- •Var I:integer;
- •Interface
- •Implementation
- •Var Mylt:my_list;
- •Разработка объектов- таблиц.
- •Работа со структурами данных типа дерево.
- •Inf: integer;
- •Пример 2.5.
- •Interface
- •Implementation
- •Var newnode:pnode;
- •X,nl,nr:integer;
- •Var I: word;
- •Var q:pnode;
- •Разработка многомодульных задач.
- •Приложение.
- •Interface
- •Ik:word;{количество записей}
- •IEl:elmnt;
- •Var init_Ok:boolean;
- •Implementation
- •Var I:word;
- •Var m:word;
- •Var I:word;
- •If n then begin
- •Var I:word;
- •Var I: word;
- •Var I:word;{при выходе уничтожаем все списки}
- •Interface
- •Implementation
- •1: Begin
- •2: Begin
- •3: Begin
- •1: Begin
- •2: Begin
- •I:byte;
- •1: Begin
- •2: Begin
- •3: Begin
- •4: Begin
- •Var stop:boolean;
Пример 1.2.1
program Number_2;
{Дана строка, в которой слова
разделены произвольным количеством пробелов.
Удалить все лишние пробелы, кроме одного.
Вывести исходную строку и результат обработки.}
Var s:string[80];
I,k:integer;
ch:char;
b:boolean;
begin
writeln('Работает программа- пример на использование строк');
repeat
writeln('Введите исходную строку');
readln(s);
writeln('Исходная строка = ',s);
k:=length(s);{Определяем длину введенной строки}
i:=1;
while (i<=k-1) do
begin
if s[i]=' ' then
begin
repeat
if s[i+1]=' ' then
begin
delete(s,i,1);
k:=k-1;
b:=false;
end
else b:=true;
until b;
end;
i:=i+1;
end;
writeln('Результат преобразования = ',s);
writeln('Будете еще преобразовывать строки? ');
readln(ch);
until ch='n';
end.
Разработка структурированных программ с использованием процедур и функций.
В этом разделе приведены задачи для освоения правил работы с массивами данных типа последовательностей, матриц, таблиц. Работа с подобными типами данных зачастую требует выполнения одинаковых или подобных операций, для описания которых целесообразно использовать процедуры и функции.
Дана последовательность из букв латинского алфавита размерности N . Упорядочить последовательность по алфавиту с помощью процедуры. Вывести исходную и упорядоченную последовательности букв.
Ввести произвольную последовательность чисел. Упорядочить с помощью процедуры последовательность в порядке возрастания. Вывести результат упорядочивания и номера чисел в исходной последовательности.
Ввести последовательность слов , в каждом из которых от 2 до 6 латинских букв. Слова разделены запятыми. Последнее слово заканчивается точкой. Написать процедуру, определяющую одинаковых “соседей” (слова справа и слева — совпадают). Напечатать всех “соседей” и исходную последовательность слов.
Ввести последовательность из N элементов. Подсчитать количество элементов, равных 0. С помощью процедуры обеспечить удаление всех нулевых элементов последовательности и сжатие последовательности. Вывести исходную последовательность, количество нулей, результат сжатия последовательности и количество элементов в преобразованной последовательности.
Ввести неупорядоченную последовательность из 20 элементов. Написать процедуры упорядочивания последовательности и вставки К новых элементов на правильное место в упорядоченную последовательность. Вывести результаты всех обработок последовательности.
Ввести последовательность из N целых чисел. Упорядочить по возрастанию четные (по значению, а не по номеру) элементы последовательности. Нечетные элементы должны остаться на своих местах. Упорядочивание описывается процедурой.
Ввести последовательность из N целых чисел. Выбрать из последовательности нулевые значения и составить последовательность из их номеров. Выбор элементов последовательности описывается процедурой. Вывести исходную последовательность и результат обработки последовательности.
Вводится последовательность из чисел, определяющих координаты вершин треугольников. Выбрать из этих значений тот треугольник, который будет иметь наибольшую площадь. Вычисление площади выполнить функцией. Вывести исходную последовательность и результат поиска.
Вводится произвольный текст, содержащий не более 50 слов. С помощью функции выбрать из текста те слова, в которых первая буква слова встречается еще хотя бы один раз. Вывести исходный текст и результат его обработки.
Вводится последовательность из N элементов. С помощью функции подсчитать количества положительных, отрицательных и нулевых элементов последовательности. Вывести исходную последовательность и результаты ее обработки.
Дана матрица действительных чисел размерности M*N. С помощью процедуры обеспечить получение сумм элементов матрицы по столбцам, строкам и диагоналям, параллельным главной диагонали. Вывести исходную матрицу и результаты вычислений в соответствующих строках и столбцах.
Задана последовательность из слов, в каждом из которых не более 7 букв. С помощью процедуры обеспечить перестановку слов в обратном порядке. Вывести исходную последовательность и результат преобразования.
Задана последовательность из N слов. С помощью функции обеспечить выбор из последовательности всех одинаковых слов. Оставить в исходной последовательности одинаковые слова по одному разу. Вывести исходную последовательность, последовательность одинаковых слов и результат преобразования последовательности.
Задана двухмерная таблица. Процедура вычисляет количество нулей в каждой строке таблицы. Вывести результат вычислений вместе с номером той строки, для которой выводится найденное количество нулей.
Определить с помощью функции симметричность матрицы размерности M*M относительно главной диагонали. Вывести исходную матрицу и сообщение о проверке.
Задана таблица из нулей и единиц размерности N*N . С помощью функции определить количество единиц в каждой строке и в каждом столбце матрицы. Результаты обработки вывести вместе с номерами соответствующих строк и столбцов таблицы.
Задана таблица размерности N*N. С помощью процедуры выполнить перестановку K-ого столбца таблицы на место L-ого столбца, а также перестановку K -ой и L-ой строк в соответствии с запросом на обработку таблицы. Вывести исходную таблицу и результат ее преобразования.
В заданной таблице размерности N*N с помощью функции обеспечить поиск строки или столбца с минимальным числом нулевых элементов. Вывести исходную таблицу и результат ее обработки с указанием номеров искомых столбца или строки.
Дана матрица действительных чисел размерности M*N. С помощью процедуры перестановки строк матрицы обеспечить преобразование матрицы:
1-ую строку поменять с N- ой строкой , 2-ую с N-1 -ой строкой и т.д.
Вывести исходную матрицу и результат ее преобразования.
Задан некоторый текст, заканчивающийся точкой. Текст состоит из произвольного количества строк. Каждая строка заканчивается “;”. Слова в тексте разделены хотя бы одним пробелом. Подсчитать с помощью функции количество одинаковых букв в тексте и вывести результат обработки в виде:
<буква> . < количество >. <номер строки текста>.
Задана некоторая строка длины не более 80 символов. Описать функцию, определяющую количество вхождений подстроки SS в ту часть строки, которая начинается с K - ой позиции. Вывести исходную строку, подстроку SS и результат обработки.
Вводятся 2 последовательности целых чисел A и B С помощью процедуры обеспечить поиск элементов, не входящих в одну из последовательностей или A, или B. Вывести исходные последовательности и результаты поисков.
Дана последовательность чисел или слов B. С помощью процедуры создать новую последовательность, в которую элементы последовательности B входят только по одному разу.
Даны две последовательности действительных чисел произвольной длины. Упорядочить обе последовательности по возрастанию. Слить обе последовательности в одну упорядоченную последовательность. Вывести исходные последовательности, исходные номера элементов в последовательностях и результат слияния последовательностей. Упорядочивание последовательностей описать процедурой.
Дана последовательность действительных чисел. С помощью процедуры обеспечить преобразование последовательности следующим образом: в начале последовательности стоят все положительные элементы, а затем все отрицательные.
Заданную последовательность целых чисел проверить с помощью функции на характер последовательности: арифметическая прогрессия, геометрическая прогрессия или произвольная. Вывести заданные последовательности и результат их проверки.
Дана матрица размерности N*M целых чисел. Обеспечить с помощью процедуры сдвиг столбцов матрицы вправо или влево в зависимости от знака вводимого числа сдвигов K . Обеспечить вывод исходной матрицы и результата ее преобразования.
Дана последовательность целых чисел. С помощью функции обеспечить запись этой последовательности в двоичной или восьмеричной системах счисления в соответствии с запросом.
Дана последовательность вещественных чисел. С помощью функции обеспечить запись этой последовательности в двоичной системе счисления.
Дана матрица размерности M*N. Упорядочить с помощью процедуры по возрастанию элементы первой строки матрицы, а во всех остальных строках переставить элементы матрицы в соответствии с исходным номерами элементов первой строки. ( до упорядочивания по возрастанию). Вывести исходную матрицу и результат преобразования с исходными номерами элементов первой строки.