
Отчеты по проге паскаль вариант 27 / Отчет №7
.docЛАБОАТОРНАЯ РАБОТА№7
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ
ЭЛЕКТРОНИКИ И МАТЕМАТИКИ
(технический университет)
Кафедра ИТАС
ОТЧЕТ
ПО ЛАБОРАТОРНОМУ ПРАКТИКУМУ
по дисциплине “Алгоритмические языки и программирование”
Вариант___27______
Исполнитель Руководитель
__Хомич _ ____________
(фамилия) (фамилия)
___________ ____________
(подпись) (подпись)
Группа___АП-11____
Москва 2005
Содержание
1.Первая часть:
Постановка задачи, Внешняя спецификация 2
Алгоритм на псевдокоде 3
Листинг программы 4,5
Тесты 6
Самостоятельная работа №7
Цель работы:
Обработка символьных строк.
Первая часть.
Постановка задачи:
Дано: k литерных строк. Каждая строка содержит латинские и русские буквы, цифры и все возможные разделители. Требуется:
1.Выделить из каждой сторки и напечатать подстроки, разделенные одной или несколькими цифрами.
2.Среди выделенных подстрок найти подстроку, содержащую символ с минимальным кодом.
3.Преобразовать исходную строку , которой принадлежит найденная подстрока, следующим образом:
заменить все руские буквы на две.
Внешняя спецификация:
Дано:k – integer, количество строк;
a[i] – array [1..10] of string, заданный массив строк;
Результат:b[i,j] – array [1..10,1..10], двумерный массив из подстрок строк
(то есть j-ая подстрока i-ой строки );
stroka – string, разделенные строки;
ta_samaya – string, строка, сод. символ с минимальным кодом;
a[nmax] – string, преобразованная строка;
Алгоритм на псевдокоде.
НАЧАЛО
ввод(k,a[i])
max:=0
Цикл от i:=1 до k
stroka:=''
kol[i]:=0
если НЕ (a[i,1] in ['0'..'9']) то
stroka:=stroka+a[i,1];
цикл от j:=2 до length(a[i])
если (a[i,j] in ['0'..'9'])то
если length(stroka)>0 то
kol[i]:=kol[i]+1;
b[i,kol[i]]:=stroka;
все
stroka:='';
иначе stroka:=stroka+a[i,j];
если j>1 то если length(stroka)>0 то
kol[i]:=kol[i]+1;
b[i,kol[i]]:=stroka;
все
КЦ
min:=3424;
цикл от i:=1 до k
цикл от j:=1 до kol[i] вывод('"',b[i,j],'" ');
все
КЦ
цикл от i:=1 до k
цикл от j:=1 до kol[i]
str:=b[i,j];
цикл от l:=1 до length(str)
если ord(str[l])<min то
min:=ord(str[l]);
ta_samaya:=b[i,j];
stroka:=a[i];
все
все
КЦ
вывод(ta_samaya);
nmax:=i;
вывод('Preobrazovannaya stroka: ');
new_str:='';
i:=0;
Цикл пока i<=length(a[nmax])
Если ((ord(a[nmax,i])>127) и (ord(a[nmax,i])<176)) или
((ord(a[nmax,i])>223) и (ord(a[nmax,i])<240)) то
insert(a[nmax,i],a[nmax],i);
i:=i+2;
Иначе
i:=i+1;
Все
Кц
Вывод(a[nmax])
КОНЕЦ
Листинг программы.
program Shreder;
uses crt;
var
a:array [1..10] of string;
b:array [1..10,1..10] of string;
kol:array [1..10] of integer;
stroka,ta_samaya,str,new_str:string;
k,i,j,min,nmax,l:integer;
begin
clrscr;
repeat
write('Vvedite kolichestvo strok: '); readln(k);
until (k>=1) and (k<=10);
writeln('Vvedite stroki: ');
for i:=1 to k do readln(a[i]);
writeln;
for i:=1 to k do
begin
stroka:='';
writeln;
kol[i]:=0;
if not (a[i,1] in ['0'..'9']) then
stroka:=stroka+a[i,1];
for j:=2 to length(a[i]) do
if (a[i,j] in ['0'..'9'])then
begin
if length(stroka)>0 then begin
kol[i]:=kol[i]+1;
b[i,kol[i]]:=stroka;
end;
stroka:='';
end else stroka:=stroka+a[i,j];
if j>1 then if length(stroka)>0 then begin
kol[i]:=kol[i]+1;
b[i,kol[i]]:=stroka;
end;
end;
min:=3424;
for i:=1 to k do
begin
writeln;
for j:=1 to kol[i] do write('"',b[i,j],'" ');
end;
for i:=1 to k do
begin
writeln;
for j:=1 to kol[i] do
begin
str:=b[i,j];
for l:=1 to length(str) do
begin
if ord(str[l])<min then
begin
min:=ord(str[l]);
ta_samaya:=b[i,j];
stroka:=a[i];
end;
end;
end;
end;
writeln(ta_samaya);
nmax:=i;
writeln('Preobrazovannaya stroka: ');
new_str:='';
i:=0;
while i<=length(a[nmax]) do begin
if ((ord(a[nmax,i])>127) and (ord(a[nmax,i])<176)) or {zaglavnie}
((ord(a[nmax,i])>223) and (ord(a[nmax,i])<240)) then {i strochnie}
begin
insert(a[nmax,i],a[nmax],i);
i:=i+2;
end else
i:=i+1;
end;
writeln(a[nmax]);
readkey;
end.
Тесты.
1.Нормальная работа:
Vvedite kolichestvo strok: 2
Vvedite stroki:
Privet456ychitel
Это42357лабаnomer 7 sem
“Privet” ”ychitel”
“Это” ”лаба nomer” ”sem”
лаба nomer
Preobrazovannaya stroka:
Ээттоо42357 ллааббаа nomer 7 sem