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

3.2.1 Лабораторные задания

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

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

  1. Строка содержит произвольные символы X1, X2, X3, X4,. X5, X6. Измените исходный состав символов и их порядок с помощью минимального числа вызовов строковых процедур и функций:

  1. X6, X5, X1, X2

  2. X3, X4, X2, X5, X6

  3. X2,X4, X6

  4. X2, X3, X5, X6, X4

  5. X5, X6, X3, X4, X1, X2

  1. Введите с клавиатуры фамилию, имя и отчество. Программа должна преобразовать введенные данные и вывести их в виде инициалов и фамилии. Например, при вводе Тургенев Иван Сергеевич программа должна вывести И.С. Тургенев.

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

  3. Найти в предложении слова длиной не более 6 символов, в которых количество гласных букв составляет не менее 30%

  4. Найти в предложении все слова, которые являются палиндромами.

  5. Заменить в предложении окончания слов «ing» на окончания «ed».

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

  7. В предложении S найти все слова, которые содержат строку S1 (длина 2 символа) или строку S2 (длина 3 символа).

  8. В предложении S1 найти самое длинное слово, которое отсутствует в предложении S2.

  9. В предложении S1 найти все слова, которые есть в предложении S2

  10. Сформировать строки (строку), которые содержат операторы вывода языка Object Pascal, эквивалентные заданному оператору вывода языка С/С++. Пример оператора вывода в языке С/С++:

cout<<"Сумма="<<summa<<"\n",

где coutопрератор вывода

<< – разделитель

"Сумма=" – строка

summaпеременная

"\n" – символ перехода на новую строку.

Для данного примера программа должна сформировать строки:

write('Сумма=', summa);

writeln;

3.3. Записи

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

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

Компоненты записи называют полями, и соответственно имена компонентов являются именами полей.

Синтаксис:

record

<имя поля>: <тип поля>;

. . .

<имя поля>: <тип поля>

end;

Пример:

type

Student = record

name : string[20];

gruppa : string[5];

number: integer;

end;

var

s: Student;

begin

s.name := 'Иванов И.И.';

s.number:= 5;

writeln (s.name, s.number);

end.

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

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

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

Синтаксис оператора with:

with <имя записи> do

<оператор>;

Пример (переменная s: Student):

with s do

begin

name := 'Иванов И.И.';

number:= 5;

writeln (name, number);

end.