Условие задачи : Найти самое длинное слово заданного предложения и вывести его длину.
Сложность : средняя .
Как мы будем решать эту задачу . Для начала создадим каркас нашей программы . Стоит сказать что в программе 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.
И вот результат :
