Условие задачи : Найти самое длинное слово заданного предложения и вывести его длину.
Сложность : средняя .
Как мы будем решать эту задачу . Для начала создадим каркас нашей программы .
Стоит сказать что в программе Delphi лучше не делать там нужен какой то модуль который найти трудновато , так что качайте Turbo или FreePascal.
program prog1 ; Uses crt; begin end.
Решать задачу мы будем следующим образом . Мы будем считывать каждый нажатый нами символ с клавиатуры , затем заносить его в переменную и потом в зависимости от условия , что то с ним делать .
Объявим переменные :
program prog1 ; Uses crt; var maxsl,sl:string; simvol:char; kol,maxkol:integer; begin end.
Переменные типа string нужны для того что бы в одну из них занести самое длинное слово а в другую мы будем заносить букву за буквой и затем получив слово проверять его на длину.
В переменную типа char мы будем заносить нашу букву , а затем прибавлять в переменной sl и таким образом у нас получиться слово .
В переменные типа integer мы будем заносить количество символов в слове .
Дальше мы задаём цикл repeat until , чтобы считывать символы с клавиатуры и будем вводить до тех пор пока не поставим точку .
Repeat simvol:=Readkey; {читаем нажатый символ. Нажимать Enter не нужно} Write(simvol); {выводим символ на экран} Until simvol='.';{нажатие клавиши "точка" - признак окончания ввода}
Ну просто вводить символы нам не нужно . Нам нужно найти самое длинное слово, для этого мы пишем в цикле условие :
if not(simvol=' ') and not(simvol='.') then begin inc(kol); {считаем кол-во букв, также можно написать kol:=kol+1} sl:=sl+simvol; {собираем слово по буквам} end
Оно проверяет что на данный момент у нас в переменной simvol , если не точка и не пустота , то мы начинаем собирать наше слово и увеличиваем количество символов на 1 .
Если эти два условия не выполняются not(simvol=’ ‘) and not(simvol=’.’) , то уже идет следующее :
else begin if length(sl) > maxkol then{ищем самое длинное слово} begin maxkol:=kol; maxs:=sl; end; sl:=''; k:=0; end;
т.е. здесь мы просто работаем с нашим словом . Считываем его длину и записываем в переменную maxsl самое длинное слово и так пока мы не нажмем точку .
И нам остается только вывести наши результаты на экран .
Весь текст программы :
program prog1 ; Uses crt; var maxsl,sl:string; simvol:char; kol,maxkol:integer; begin ClrScr; Write('Vvedite vashy stroky : '); Repeat simvol:=Readkey;{читаем нажатый символ. Нажимать Enter не нужно} Write(simvol);{выводим символ на экран} if not(simvol=' ') and not(simvol='.') then begin inc(kol); {считаем кол-во букв, также можно написать kol:=kol+1} sl:=sl+simvol; {собираем слово по буквам} end else begin if length(sl)>maxkol then{ищем самое длинное слово} begin maxkol:=kol; maxs:=sl; end; sl:=''; k:=0; end; Until simvol='.';{нажатие клавиши "точка" - признак окончания ввода} Writeln; Writeln('Samoe dlinnoe slovo : ', maxsl); Writeln('kol. simvolov v nem = ', maxkol); Readln; End.