Лабораторная работа №6 - Строки и записи
.docУГАТУ
Кафедра информатики
Лабораторная работа №6
Строки и записи
Выполнил
Федосеев Е.В. М-120
Проверил
Бажин Д.Н.
Уфа – 2004
Цель работы:
Приобретение навыков алгоритмизации и программирования задач, оперирующих строковыми типами данных:
- ввод и вывод строковых данных;
- обработка строковых данных;
- использование стандартных процедур и функций языка Turbo-Pascal для обработки строковых данных
Вариант 5:
Проверить, встечается ли в заданном предложении словосочетание «Сальдо счета».
начало
ввод исходной строки (st1)
st2:=сальдо счета
k:=pos (st2,st1)
нет k=0 да
Это словосочетание есть Этого словосочетания нет
конец
Таблица используемых значений
Имя |
Тип |
Назначение переменной |
Описание |
st1 |
string |
входящая |
Исходная строка |
st2 |
string |
внутренняя |
Искомое словосочетание |
k |
integer |
внутренняя |
Позиция, начала второго предложения |
program variant61;
uses wincrt;
Var st1,st2:string;
k:integer;
begin
writeln ('Введите исходную строку');
readln (st1);
st2:='сальдо счета';
k:=pos(st2,st1);
if k=0 then writeln('Этого словосочетания нет')
else writeln('Это словосочетание есть');
end.
Результат работы программы:
Введите исходную строку:
Аавпвап вапвапвап капв ываоывшщао
Этого словосочетания нет
начало
i=1,6
tbl[i]
ввод fam, dr, kurs,
ks
k= i,6
x:=’Б’
с:=pos(x, tbl[k].fam)
нет c=1
да
y:=tbl[k]
tbl[i]:=y
tbl[i]
i=1,6
fam, dr, ks
конец
Таблица используемых значений
Имя |
Тип |
Назначение переменной |
Описание |
str |
record |
внутренняя |
Запись сведений о студенте |
fam |
string [30] |
входящая |
Поле записи str - фамилия студента |
kurs |
integer |
входящая |
Поле записи str - № курса |
dr |
String [10] |
входящая |
Поле записи str – Дата рождения |
ks |
integer |
входящая |
Поле записи str – Количество семестров |
x |
string |
внутренняя |
Начальная буква фамилии |
с |
integer |
внутренняя |
Позиция переменной х в фамилии студента |
tbl |
array [1..6] |
внутренняя |
Массив |
i |
integer |
внутренняя |
№ студента |
k |
integer |
внутренняя |
№ студента |
y |
record |
внутренняя |
Промежуточная запись |
program var62;
type str=record
fam: string [30];
dr: string [10];
kurs: integer;
ks: integer;
end;
var tbl: array [1..6] of str;
i,k,c:integer;
y:str;
x:string;
begin
for i:=1 to 6 do
with tbl[i] do
begin
writeln ('Введите фамилию');
readln (fam);
writeln ('Введите дату рождения');
readln (dr);
writeln ('На каком курсе он учиться');
readln (kurs);
writeln ('Количество семестров');
readln (ks);
end;
for k:=i to 6 do begin
x:='B';
c:=pos(x,tbl[k].fam);
if c=1 then
y:=tbl[k];
writeln ('Список студентов');
tbl[i]:=y;
for i:= 1 to 6 do
with tbl[i] do
writeln (fam, dr, ks);
end;
end.
Результат работы программы:
Введите фамилию: Иванов
Введите дату рождения: 30.12.1984
На каком курсе он учиться: 4
Количество семестров: 6
Введите фамилию: Петров
Введите дату рождения: 21.07.1985
На каком курсе он учиться: 3
Количество семестров: 5
Введите фамилию: Быков
Введите дату рождения: 20.03.1986
На каком курсе он учиться: 2
Количество семестров: 5
Введите фамилию: Мочалкин
Введите дату рождения: 11.05.1984
На каком курсе он учиться: 3
Количество семестров: 4
Введите фамилию: Балванов
Введите дату рождения: 28.11.1986
На каком курсе он учиться: 1
Количество семестров: 5
Введите фамилию: Финк
Введите дату рождения: 28.03.1987
На каком курсе он учиться: 1
Количество семестров: 2
Список студентов
Быков 20.03.1986 5
Балванов 28.11.1986 5