Реферат: Работа с текстовыми строками, двумерными массивами, файловыми структурами данных

/>Оглавление

1       Задание №1.

1.1    Блок-схема программы.

1.2    Работа программы

2       Задание №2.

2.1    Блок-схема программы

2.2    Работа программы.

3       Задание №3.

3.1    Блок-схема программы

3.2    Работа программы

4       Задание №4.

4.1    Работа программы

5       Задание №5.

5.1    Блок-схема программы

5.2    Работа программы

6       Заключение.

7       Список используемойлитературы.

8       Приложения А

9       Приложение Б

10     Приложение В

11     Приложение Г

12     Приложение Д


 

1 Задание №1

Подсчитатьколичество слов последовательности, начинающихся с большой буквы иоканчивающихся цифрой. Напечатать слова, содержащие задаваемую цепочку символови хотя бы один знак.

1.1 />Блок-схема программы

/>
/>/>

/> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> <td/> />

Работа программы

Основное телопрограммы.

Begin

Задаем переменные,которая будет обозначать о наличии введенного текста и признака продолженияработы программы.

Vvod:=False;

Cont:=True;

whileCont do

Begin

Очмщаем экран дляудобства ввода и вывода информации.

 clrscr;

Выводим меню сномерами команд, которое можно увидеть на рисунке 1.

/>

Рисунок 1 – главноеменю первой программы.

menu;

write('Vveditekomandu: ');

Считываем команду впеременную Rem.

readln(Rem);

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

caseRem of

'0':Cont:=False;

'1': begin

Считываем введеннуюстроку в переменную Txt и присваиваем Vvodзначение True, показывая, что текст введен.

writeln('Text:');

readln(Txt);

Vvod:=True;

end;

'2': begin

Если текст невведен то выводится соответствующее сообщение, в противном случае запускаетсяфункция вывода слова с максимальным количеством букв, расположенных валфавитном порядке.

ifNot Vvod then

writeln('Nevveden text')

else

alfslovo(Txt);

end;

'3':begin

Аналогичнопредыдущему, только запускается функция подсчета количества симметричных словбольше чем два знака.

ifNot Vvod then

writeln('Nevveden text')

else

colsimmslovo(Txt);

end;

'4':begin

Вывод на экранвведенной строки, если же она не введены, выводится соответствующее сообщение.

ifNot Vvod then

writeln('Nevveden text')

else

writeln(Txt);

end

else

Если переменная Rem не удовлетворяет предыдущим условиям, то выводитсясообщение о том что введена неизвестная команда.

writeln('Neizvestnaya komanda');

end;

Если программа всееще работает, то выводится предупреждающее сообщение о том что после нажатияклавиши ENTER необходимо будет ввести следующуюкоманду.

ifCont then

begin

write('NagmiteENTER dlya vvoda sleduyuschei komandy… ');

readln;

end

else

clrscr;

end;

end.

Процедура для нахожденияслова с максимальным количеством букв, находящихся в алфавитном порядке.

Она получает вкачестве параметра строку S и считает в ней слова, вкоторых латинские буквы расположены по алфавиту и печатает такое слово, вкотором максимально количество букв.

procedure alfslovo(S: Stroka250);

var

Если переменная F становится True, то это показываетчто найдено новое слово.

F:boolean;

Len:Byte;

I:Byte;

Counter:Byte;

FSlovo,Buf: Slovo;

Index,L: Byte;

MaxCol:Byte;

begin

Len:=Length(S);

Вставляем в конецстроки пробел, если его там нет.

ifS[Len]<>' ' then

begin

S:=S+'';

Inc(Len);

end;

F:=False;

MaxCol:=0;

forI:=1 to Len do

ifS[I]<>' ' then

begin

Если находим началонового слова, тогда устанавливаем признак нового слова, запоминаем номерсимвола начала слова в строке в переменную Index ивводим начальную длину слова в L.

if F=False then

begin

F:=True;

Index:=I;

L:=1;

end

else

Увеличиваем длинудо тех пор, пока не находим пробел.

Inc(L);

end

else

Если i-й символ пробел, то сбрасываем признак слова, копируемслово в переменную Buf и длину строки в нулевую ячейку.

if F=True then

begin

F:=False;

Buf:=Copy1(S,Index, L);

Buf[0]:=char(L);

Следующая процедурапроверяет слово. Если буквы расположены в алфавитном порядке, то возвращает True иначе False.

ifalforder(Buf, Counter) then

begin

Если в слове большесимволов, чем в максимальном, то заносим слово в Fslovoи колличество букв в MaxCol.

ifCounter>MaxCol then

begin

FSlovo:=Copy1(S,Index, L);

FSlovo[0]:=char(L);

MaxCol:=Counter;

end;

end;

end;

Если таких слов нетто выводим сообщение об этом, иначе выводим слово.

ifMaxCol=0 then

writeln('Netpodhodyaschi slov v texte')

else

writeln(FSlovo,' kol-vo bukv: ', MaxCol);

end;

Функция alforder получает в качестве параметров строку S1, если в строке латинские буквы расположены по алфавиту, тофункция вернет True иначе False.Count – количество латинских букв в строке.

function alforder(Sl:Slovo; var Count: Byte): Boolean;

var

I,L: Byte;

F:Boolean;

Buf:Char;

begin

L:=Length(Sl);

Сбрасываемначальное количество букв в строке.

Count:=0;

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

forI:=1 to L do

begin

if(isletter(Sl[I])) then

Inc(Count);

if(Sl[I]>='A') and (Sl[I]<='Z') then

Sl[I]:=char(byte(Sl[I])+32);

end;

ifCount=0 then

alforder:=False

else

ifCount=1 then

alforder:=True

else

begin

F:=True;

Перемещаем всебуквы строки в начало строки.

WhileF do

begin

F:=False;

for I:=1 to L-1 do

Если i-й символ не буква, а его сосед справа – буква, то меняемэти символы местами.

if(Not isletter(Sl[I])) And (isletter(Sl[I+1])) then

begin

F:=True;

Buf:=Sl[I];

Sl[I]:=Sl[I+1];

Sl[I+1]:=Buf;

end;

end;

F:=true;

Далее проверяемрасположения букв по алфавиту.

forI:=1 to Count-1 do

ifSl[I]>Sl[I+1] then

begin

F:=False;

break;

end;

alforder:=F;

end;

end;

Процедура colsimmsolvo получает в качестве параметра строку S, и считает в ней симметричные слова, выводит их на экран ивыводит количество найденных симметричных слов.

procedurecolsimmslovo(S: Stroka250);

var

F:boolean;

Len:Byte;

I:Byte;

Counter:Byte;

Buf:Slovo;

Index,L: Byte;

MaxCol:Byte;

begin

Len:=Length(S);

Заносим в конецстроки пробел, если его там нет.

ifS[Len]<>' ' then

begin

S:=S+'';

Inc(Len);

end;

За F обозначаем флаг нахождения слова, F=true –найдено новое слово. И сбрасываем начальное значение количествасимметричных слов.

F:=False;

Counter:=0;

writeln('Spisoksimmetrichnyh slov iz bolshe chem 2 znaka:');

Начинаем поисксимметричных слов в строке.

for I:=1 to Len do

В случае, если i-й символ не пробел, устанавливаем флаг нового слова,запоминаем начало нового слова, и сбрасываем начальное значение длинны.

ifS[I]<>' ' then

begin

ifF=False then

begin

F:=True;

Index:=I;

L:=1;

end

else

Inc(L);

end

else

Иначе, еслиустановлен признак нового слова, то сбрасываем его. Если длинна слова большедвух символов, то копируем слово в буффер.

ifF=True then

begin

F:=False;

ifL>2 then

begin

Buf:=Copy(S,Index, L); {kopiruem slovo v Buf}

Buf[0]:=char(L);

Далее функциейпроверяем слово на симметрию, и если оно симметрично, то увеличиваем счетчик наединицу, и выводим это слово на экран.

ifsimmetr(Buf) then

begin

Inc(Counter);

writeln(Buf);

end;

end;

end;

writeln('Kol-vonaidennyh slov: ', Counter);

end;

Процедура проверкисловва на симметричность.

functionsimmetr(S: Slovo):boolean;

var

L,I, R: Byte;

F:Boolean;

Begin

Начинаем проверятьсимметричные относительно центра символы. Если они совпадают, то функцииприсваивается True. Если хоть один символ не сходится,то программа выходит из цикла и функции присваивается значение False.

L:=Length(S);

R:=Ldiv 2;

F:=True;

forI:=1 to R do

ifS[I]<>S[L-I+1] then

begin

F:=False;

break;

end;

simmetr:=F;

end;

еще рефераты
Еще работы по информатике, программированию