Добавлен: 21.10.2018
Просмотров: 1969
Скачиваний: 6
16
Рис. 2 поиск максимального отрицательного числа в двумерном массиве
ввести двумерный массив целых чисел; на его основе создать
новый одномерный массив, каждый элемент которого - индекс
наибольшего числа в каждой строке исходного массива (рис. 3);
Рис. 3. Поиск координаты максимального элемента в строках двумерного массива
Результат
выполнения
этапа:
Вы
научились
записывать
разработанные ранее алгоритмы обработки целых чисел в виде программ на
алгоритмическом языке Pascal. Вы получили представление о структуре
программы и назначении ее разделов. Вы узнали и проверили на практике,
какими операторами языка записываются базовые алгоритмические
структуры ветвления и цикла и как работает оператор присваивания. Вы
научились обрабатывать одномерные и двумерные числовые массивы с
помощью вложенных циклов.
Этап 3.3. Программы обработки символьных данных.
1. Вам предстоит, действуя по шаблонам, создать простейшие программы
обработки символьных данных и сохранить их в виде файлов
char_1.pas, char_2.pas.
-2
3
4
20
-7
9
-5
-7
12
-5
18
19
-14
10
7
30
8
-4
-10
17
Дано: массив 4 х 5
4
4
2
1
Результат: массив 1 х 4
-2
3
4
-8
-7
9
-5
-7
-12
-5
18
-19
-14
10
7
-15
8
-4
-10
17
Дано: массив 4 х 5
-8
-12
-19
-15
Результат: массив 1 х 4
17
2. Переписать из листинга № 4 и отладить программу вывода на экран
букв латинского алфавита, расположив их в строку.
Листинг 4. Вывести на экран символы латинского алфавита, расположив
их в строку, используя цикл For … to …
Program char_1;
USES CRT;
VAR i: char;
BEGIN
CLRSCR;
Write('Изучаем алфавит: ')
for i:= 'A' to 'Z' do
Write (i);
Writeln;
END.
3. По аналогии с предыдущим заданием написать и отладить программу
вывода на экран символов латинского алфавита, расположив их в строку в
обратном порядке, используя оператор цикла For … downto …
4. Переписать из листинга № 5 и отладить программу вывода на экран
букв латинского алфавита, расположив их в строку в особом порядке.
Листинг 5. Вывести на экран символы латинского алфавита, расположив
их в строку в следующем порядке: ABBCCCDDDD … ZZZ … Z
Program char_2;
USES CRT;
VAR i: char;
k, j: integer;
BEGIN
CLRSCR;
k:=1;
for i:= 'A' to 'Z' do
BEGIN
For j:=1 to k do
Write (i);
k:=k+1;
END;
END.
5. По аналогии с предыдущим заданием, используя оператор цикла,
написать и отладить программы:
вывести в одну строку символы в следующем порядке: Z Y Y X
X X…A A…A;
вывести символы в следующем порядке (число строк равно
числу символов в алфавите):
18
A B C D … Z
A B C D … Z
A B C D … Z
…
A B C D … Z
вывести треугольник, состоящий из букв латинского алфавита,
используя
функцию
SUCC(char)
,
которая
возвращает
следующий символ после char:
A B C … Z
B C … Z
C … Z
… Z
Z
вывести треугольник другой конфигурации:
A B C … Z
B C … Z
C … Z
… Z
Z
Результат выполнения этапа: Вы ознакомились с приемами
обработки символьных данных на примере латинского алфавита, узнали
новые возможности организации цикла For, применили функцию-генератор
следующего символа. Вы получили навыки форматированного вывода
символов на экран.
Этап 3.4. Программы обработки строковых данных
1. Вам предстоит, действуя по шаблонам, создать простейшие программы
обработки строковых (текстовых) данных и сохранить их в виде файлов
str_1.pas, str_2.pas.
2. Переписать из листинга № 6 и отладить программу ввода и
редактирования текста.
Листинг 6. Ввести текст с клавиатуры. Вывести его на экран до первого
знака препинания.
Program str_1;
USES CRT;
VAR str: string;
k, i : integer;
m: set of char;
BEGIN
CLRSCR;
m:= ['.', ',', '!', '? ', ':', ';', '-'];
19
writeln ('Введите текст');
readln (str);
k:=length (str);
writeln ('Печатаем текст до первого знака препинания:');
for i:=1 to k do
If not (str[i] in m) then
write (str[i])
else
break;
END.
3. По аналогии с предыдущим заданием написать и отладить программы:
ввести текст с клавиатуры, вывести его на экран без знаков
препинания;
ввести текст с клавиатуры, вывести его на экран без гласных
букв, определив их первоначальное количество в тексте.
4. Переписать из листинга № 7 и отладить программу работы с текстовым
файлом.
Листинг 7. Создать текстовый файл File1.txt, заполнить его текстом.
Прочитать текст из файла и вывести его на экран.
Program file_1
USES CRT;
VAR F1: text;
str: string;
BEGIN
CLRSCR;
Assign (F1, 'File1.txt');
Reset (f1);
Read (f1, str);
Writeln('В файле записан текст: ');
Writeln (str);
Close(f1);
END.
5. По аналогии с предыдущим заданием написать и отладить программы:
-
создать текстовый файл File1.txt, записать в него текст «Hello,
friend!». Прочитать текст из файла. Преобразовать его в вид:
«Hello,
my
friend!»
.
Использовать
процедуру
INSERT(Word:string, String:string, pos:integer)
, где
Word – вставляемый текст, String – исходный текст, pos – позиция для
вставки) и функцию POS(word:string, str:string):integer,
где Word – символ, позицию которого в строке надо найти, str –
20
строка, в которой ведется поиск.
-
создать текстовый файл File2.txt, записать в нем текст. Прочитать
текст из файла. Ввести с клавиатуры строку текста. Вывести на экран
объединение текста и введенной строки. Использовать функцию
CONCAT(str1:string, str2:string):string – возвращает
объединение строк.
-
создать текстовый файл File3.txt, записать в нем текст. Удалить из
текста второе слово. Использовать процедуру DELETE(str:string,
i:integer, j:integer), где str – строка, в которой надо
произвести удаление, i – позиция, с которой начать удаление, j –
количество удаляемых символов.
-
создать текстовый файл File4.txt, записать в нем текст. Прочитать
текст из файла, вывести его на экран, разбив на слова по 5 символов.
-
создать текстовый файл File5.txt, записать в нем текст. Изменить
текст в файле, разбив его на слова по 5 символов.
Результат выполнения этапа: Вы ознакомились с приемами
обработки текстовых данных, вводимых с клавиатуры и из файла,
поработали со специфическим типом данных «множество», освоили
последовательность работы с файлом, применили функции и процедуры
модификации текстовых данных.
Форма представления результатов работы: файлы.