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

12. Строковый тип Часть I

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

  2. Текст задан строкой: var s: string;

    1. Написать программу, которая выводит все слова, содержащие букву 'a';

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

  3. Составить функцию UpcaseCyr(W:string):string, преобразующую все буквы, входящие в строку W (латинские и кириллицу) в прописные.

Часть II

  1. Текст задан строкой: var St: string

    1. Напечатать все слова, отличные от Hello

    2. Напечатать то слово, которое лексикографически (по алфавиту) предшествует всем другим словам

    3. Напечатать текст, составленный из последних литер всех слов

    4. Напечатать текст, составленный из средних литер всех нечетных слов

    5. Напечатать все слова, содержащие удвоенное н ("нн")

    6. Напечатать те слова, которые являются симметричными (например: казак, шалаш)

    7. Напечатать все слова, удалив из них первую букву

    8. Напечатать все слова, удалив из них последнюю букву

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

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

    11. Напечатать все слова, удалив среднюю букву у слов нечетной длины

    12. Напечатать все слова, перенеся их первую букву в конец

    13. Напечатать все слова, перенеся их последнюю букву в начало

    14. Напечатать все слова, содержащие только русские буквы

  2. Написать функцию

function Test(word:string): boolean

принимающую значение True, если

    1. Строка является словом

    2. Первая буква строки входит в нее еще раз

    3. Последнее слово строки входит в нее еще раз

    4. Буквы строки упорядочены по алфавиту

    5. Количество гласных (a, e, i, o, u) превосходит количество других символов

    6. Количество заглавных букв в строке превосходит количество прописных

    7. Количество русских букв в строке превосходит количество латинских

    8. Строка составлена только из строчных русских букв

    9. В строке больше букв, чем знаков

    10. В строке есть восклицание (!) и вопрос (?)

    11. Строка является символьным представлением натурального числа ("122", "34" и т.д.)

    12. В строку входят литеры, содержащиеся в глобальной переменной W типа string

    13. Строка является идентификатором

    14. Строка является перевертышем

13. Тип Запись Часть I

  1. Определите значение переменной y после выполнения следующей программы и поясните, что она вычисляет:

program zapis;

const N = 3;

type TMyPoint = record

x, y: integer;

end;

var p1, p2: TMyPoint;

y: real;

begin

p1.x := 3; p1.y := 6;

p2.x := 7; p2.y := 9;

y := sqrt( sqr(p2.x - p1.x) + sqr(p2.y - p1.y));

end.

  1. Ответьте на вопросы:

    1. Верно ли, что все поля записи должны быть разных типов?

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

  2. Опишите следующий объект в виде массива и в виде записи. Определите, какой тип более естественен для каждого из объектов:

    1. обозначение поля шахматной доски (A5, H8,...);

    2. комплексное число;

    3. точка в 10-мерном пространстве.

  3. type complex = record re, im:real end;

point = record x, y: real end;

var z, w: complex;

p: point;

re: real;

Какие значения будут иметь переменные z, w, p, re после выполнения операторов:

with z do begin re :=0; im:=1 end;

w:=z; re:=2;

with z do re:=1;

with z, w do im:= -im;

with p do begin x:=re; y:=2 end;

  1. type circle = record radius:real;

centre: record x,y:real end

end;

var C: circle;

Требуется получить круг С радиуса 2.5 с центром в точке(0, 1.8). Запишите операторы для решения этой задачи.

  1. Напишите процедуры DP(d,p), преобразующую координаты точки на плоскости из декартовых координат d в полярные p, и PD(p,d), выполняющую обратные преобразования:

Type dekart = record x, y: real end;

polar = record r, fi: real end;

  1. Type Phone = 1000000..9999999;

Aguant = record

Name: string[10];

Number: Phone;

end;

Page = array[1..20] of Aguant;

NoteBook = array ['A'..'Z'] of Page;

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

    1. FindNumber(Nb,F,NP) – определяющую, есть ли в записной книжке Nb сведения о знакомом F, и если есть, то возвращающую номер его телефона NP;

    2. FindName(Nb,F,NP) – определяющую, есть ли в записной книжке Nb сведения о знакомом c номером телефона NP, и если есть, то возвращающую его фамилию F.

  1. Const N= 10;

Type RecData = record

Key: LongInt;

Data: String;

end;

Table = array[1..N] of RecData;

Считая, что в таблице все записи имеют разные ключи, описать:

    1. процедуру Sort(T), упорядочивающую записи таблицы Т по возрастанию их ключей;

    2. логическую функцию Find(T, K, H), определяющую, есть ли в таблице Т (записи которой упорядочены по ключам) запись с ключом К, и если есть, присваивающую ее номер параметру Н.