Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сборник задач Бабалова.doc
Скачиваний:
95
Добавлен:
04.06.2015
Размер:
1.16 Mб
Скачать

Пример 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.

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

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

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

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

      3. Ввести последовательность слов , в каждом из которых от 2 до 6 латинских букв. Слова разделены запятыми. Последнее слово заканчивается точкой. Написать процедуру, определяющую одинаковых “соседей” (слова справа и слева — совпадают). Напечатать всех “соседей” и исходную последовательность слов.

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

      5. Ввести неупорядоченную последовательность из 20 элементов. Написать процедуры упорядочивания последовательности и вставки К новых элементов на правильное место в упорядоченную последовательность. Вывести результаты всех обработок последовательности.

      6. Ввести последовательность из N целых чисел. Упорядочить по возрастанию четные (по значению, а не по номеру) элементы последовательности. Нечетные элементы должны остаться на своих местах. Упорядочивание описывается процедурой.

      7. Ввести последовательность из N целых чисел. Выбрать из последовательности нулевые значения и составить последовательность из их номеров. Выбор элементов последовательности описывается процедурой. Вывести исходную последовательность и результат обработки последовательности.

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

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

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

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

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

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

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

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

      16. Задана таблица из нулей и единиц размерности N*N . С помощью функции определить количество единиц в каждой строке и в каждом столбце матрицы. Результаты обработки вывести вместе с номерами соответствующих строк и столбцов таблицы.

      17. Задана таблица размерности N*N. С помощью процедуры выполнить перестановку K-ого столбца таблицы на место L-ого столбца, а также перестановку K -ой и L-ой строк в соответствии с запросом на обработку таблицы. Вывести исходную таблицу и результат ее преобразования.

      18. В заданной таблице размерности N*N с помощью функции обеспечить поиск строки или столбца с минимальным числом нулевых элементов. Вывести исходную таблицу и результат ее обработки с указанием номеров искомых столбца или строки.

      19. Дана матрица действительных чисел размерности M*N. С помощью процедуры перестановки строк матрицы обеспечить преобразование матрицы:

1-ую строку поменять с N- ой строкой , 2-ую с N-1 -ой строкой и т.д.

Вывести исходную матрицу и результат ее преобразования.

      1. Задан некоторый текст, заканчивающийся точкой. Текст состоит из произвольного количества строк. Каждая строка заканчивается “;”. Слова в тексте разделены хотя бы одним пробелом. Подсчитать с помощью функции количество одинаковых букв в тексте и вывести результат обработки в виде:

<буква> . < количество >. <номер строки текста>.

      1. Задана некоторая строка длины не более 80 символов. Описать функцию, определяющую количество вхождений подстроки SS в ту часть строки, которая начинается с K - ой позиции. Вывести исходную строку, подстроку SS и результат обработки.

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

      3. Дана последовательность чисел или слов B. С помощью процедуры создать новую последовательность, в которую элементы последовательности B входят только по одному разу.

      4. Даны две последовательности действительных чисел произвольной длины. Упорядочить обе последовательности по возрастанию. Слить обе последовательности в одну упорядоченную последовательность. Вывести исходные последовательности, исходные номера элементов в последовательностях и результат слияния последовательностей. Упорядочивание последовательностей описать процедурой.

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

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

      7. Дана матрица размерности N*M целых чисел. Обеспечить с помощью процедуры сдвиг столбцов матрицы вправо или влево в зависимости от знака вводимого числа сдвигов K . Обеспечить вывод исходной матрицы и результата ее преобразования.

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

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

      10. Дана матрица размерности M*N. Упорядочить с помощью процедуры по возрастанию элементы первой строки матрицы, а во всех остальных строках переставить элементы матрицы в соответствии с исходным номерами элементов первой строки. ( до упорядочивания по возрастанию). Вывести исходную матрицу и результат преобразования с исходными номерами элементов первой строки.