Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КНИГА_Учимся программировать TURBO PASCAL 7.doc
Скачиваний:
32
Добавлен:
19.08.2019
Размер:
1.62 Mб
Скачать

Var I, l : integer;

S1 : STRING;

BEGIN

WRITELN('BBEДИTE ТЕКСТ ДО ТОЧКИ');

READLN(S1);

L := LENGTH(S1);

FOR I := L-1 DOWNTO 1 DO

WRITE(S1[I]);

WRITELN('.')

END.

Для решения задачи:

- формируем тело программы и описываем переменные;

- вводим строку S1 и определяем ее длину;

- организуем цикл по выводу строки задом наперед.

Переменные:

I - переменная цикла;

L - длина строки;

S1 - строка текста.

ВВЕДИТЕ ТЕКСТ ДО ТОЧКИ

1234567890 Ааааааа .

ААААААА 0987654321.

ВВЕДИТЕ ТЕКСТ ДО ТОЧКИ

++++++++++++ ++++++++++++

++++++++++++ ++++++++++++

Рис. 5.6. Результат работы PRG5_12

Задача 5.13 Дана строка символов до точки. Определить, яв­ляется ли она палиндромом.

PROGRAM PRG5_13;

Var I, l : integer;

S1 : STRING;

F : BOOLEAN;

BEGIN

WRITELN('BBEДИTE ТЕКСТ ДО ТОЧКИ');

READLN(S1);

L := LENGTH(S1);

F := TRUE;

FOR I := (L-1)DIV 2 DOWNTO 1 DO

IF S1[I]<>S1[L-I] THEN F := FALSE;

If f then writeln('палиндром')

ELSE WRITELN('HE ПАЛИНДРОМ');

END.

Для решения задачи:

- формируем тело программы и описываем переменные;

- вводим строку S1 и определяем ее длину;

- устанавливаем флаг F;

- организуем цикл таким образом, чтобы элементы сравнива­лись попарно, начиная от середины строки при движении к краям строки;

- в зависимости от значения флага выводим результат на эк­ран.

Переменные:

I - переменная цикла;

L - длина строки;

F - флаг;

S1 - строка текста.

ВВЕДИТЕ ТЕКСТ ДО ТОЧКИ

1234567890 Ааааааа .

НЕ ПАЛИНДРОМ

ВВЕДИТЕ ТЕКСТ ДО ТОЧКИ

++++++++++++ ++++++++++++

ПАЛИНДРОМ

Рис. 5.7. Результат работы PRG5_13

Практические задания

1. Дана символьная строка. Зашифровать в ней все латинские символы с помощью циклической подстановки А = > В = > С... Y = > Z = > А

2. Дана символьная строка. Удалить из нее все кратные рядом стоящие одинаковые символы, оставив по одному. Например, ФЫЫЫЫВВВААПРО = > ФЫВАПРО

3. Дана символьная строка. Посчитать, сколько раз в ней встре­чается подслово АВВА. Обратите внимание: в строке АВВАВВА это подслово встречается два раза!

Тема 6 Одномерные массивы

Массив в языке PASCAL представляет собой заранее известное количество однотипных компонентов, снабженных индексами. Массив может быть одномерным или многомерным. Чтобы задать тип-массив, необходимо использовать зарезервированное слово ARRAY, тип индексов массива и тип компонентов массива.

Например, тип одномерного массива целых чисел может быть задан следующим образом:

TYPE

MAS = ARRAY[1..1O] OF INTEGER;

VAR

M1 : MAS;

Тот же самый тип массива может быть задан и при определе­нии соответствующих переменных:

VAR

М1 : ARRAY[1..1O] OF INTEGER;

Размерность массива может быть любой, компоненты тоже, только тип индексов должен быть обязательно порядковый и не Longint. Обратите внимание: тип индексов, как правило, объявля­ется как диапазон.

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

Рассмотрим несколько примеров на обработку одномерных массивов.

Задача 6.1 Дан массив чисел. Найти значение максимального элемента. Если таких элементов несколько, то определить, сколько их.

Эта задача может быть решена за один просмотр элементов массива. Вначале устанавливаем текущий максимум по первому элементу массива МАХ := MAS[1] и запоминаем количество мак­симумов К := 1. Затем выбираем очередной элемент MAS[I] мас­сива и сравниваем его с МАХ. В случае равенства увеличиваем значение К на единицу. Если текущий максимум меньше элемен­та MAS[I], то переприсваиваем его МАХ := MAS[I] и устанавли­ваем значение К в единицу. После окончания просмотра выводим результаты на экран. В данном случае считывание элементов мас­сива разумно совместить с процессом обработки, но считывание можно осуществить и двумя последовательными циклами:

PROGRAM PRG6_1;

CONST M = 100;