![]() ![]() |
Главная страница > Курсовая работа: Работа с текстовыми строками, двумерными массивами, файловыми структурами данных | Курсовая работа: Работа с текстовыми строками, двумерными массивами, файловыми структурами данных |
|
![]() |
Работа программы Основное тело программы. Begin Задаем переменные, которая будет обозначать о наличии введенного текста и признака продолжения работы программы. Vvod:=False; Cont:=True; while Cont do Begin Очмщаем экран для удобства ввода и вывода информации. clrscr; Выводим меню с номерами команд, которое можно увидеть на рисунке 1. Рисунок 1 – главное меню первой программы. menu; write('Vvedite komandu: '); Считываем команду в переменную Rem. readln(Rem); Распознаем команду и выберем необходимые функции для выполнения в соответствии с введенном знаком. case Rem of '0': Cont:=False; '1': begin Считываем введенную строку в переменную Txt и присваиваем Vvod значение True, показывая, что текст введен. writeln('Text:'); readln(Txt); Vvod:=True; end; '2': begin Если текст не введен то выводится соответствующее сообщение, в противном случае запускается функция вывода слова с максимальным количеством букв, расположенных в алфавитном порядке. if Not Vvod then writeln('Ne vveden text') else alfslovo(Txt); end; '3': begin Аналогично предыдущему, только запускается функция подсчета количества симметричных слов больше чем два знака. if Not Vvod then writeln('Ne vveden text') else colsimmslovo(Txt); end; '4': begin Вывод на экран введенной строки, если же она не введены, выводится соответствующее сообщение. if Not Vvod then writeln('Ne vveden text') else writeln(Txt); end else Если переменная Rem не удовлетворяет предыдущим условиям, то выводится сообщение о том что введена неизвестная команда. writeln('Neizvestnaya komanda'); end; Если программа все еще работает, то выводится предупреждающее сообщение о том что после нажатия клавиши ENTER необходимо будет ввести следующую команду. if Cont then begin write('Nagmite ENTER 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); Вставляем в конец строки пробел, если его там нет. if S[Len]<>' ' then begin S:=S+' '; Inc(Len); end; F:=False; MaxCol:=0; for I:=1 to Len do if S[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. if alforder(Buf, Counter) then begin Если в слове больше символов, чем в максимальном, то заносим слово в Fslovo и колличество букв в MaxCol. if Counter>MaxCol then begin FSlovo:=Copy1(S, Index, L); FSlovo[0]:=char(L); MaxCol:=Counter; end; end; end; Если таких слов нет то выводим сообщение об этом, иначе выводим слово. if MaxCol=0 then writeln('Net podhodyaschi 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; Находим в цикле количество латинских букв в строке и приводим все заглавные буквы к строчному виду. for I:=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; if Count=0 then alforder:=False else if Count=1 then alforder:=True else begin F:=True; Перемещаем все буквы строки в начало строки. While F 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; Далее проверяем расположения букв по алфавиту. for I:=1 to Count-1 do if Sl[I]>Sl[I+1] then begin F:=False; break; end; alforder:=F; end; end; Процедура colsimmsolvo получает в качестве параметра строку S, и считает в ней симметричные слова, выводит их на экран и выводит количество найденных симметричных слов. procedure colsimmslovo(S: Stroka250); var F: boolean; Len: Byte; I: Byte; Counter: Byte; Buf: Slovo; Index, L: Byte; MaxCol: Byte; begin Len:=Length(S); Заносим в конец строки пробел, если его там нет. if S[Len]<>' ' then begin S:=S+' '; Inc(Len); end; За F обозначаем флаг нахождения слова, F=true –найдено новое слово. И сбрасываем начальное значение количества симметричных слов. F:=False; Counter:=0; writeln('Spisok simmetrichnyh slov iz bolshe chem 2 znaka:'); Начинаем поиск симметричных слов в строке. for I:=1 to Len do В случае, если i-й символ не пробел, устанавливаем флаг нового слова, запоминаем начало нового слова, и сбрасываем начальное значение длинны. if S[I]<>' ' then begin if F=False then begin F:=True; |
|
![]() |
|
Copyright © 2006-2012 |