Скачиваний:
6
Добавлен:
20.05.2014
Размер:
55.3 Кб
Скачать

ЛАБОАТОРНАЯ РАБОТА№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

6

Соседние файлы в папке Отчеты по проге паскаль вариант 27