Другие языки программирования и технологии
Задача на Delphi. Аааа решите пожалуйста :'(
Задача на Delphi. Аааа решите пожалуйста :'( : Дана строка, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв, между словами поставлен пробел, за последним словом – точка. Вывести самое короткое слово и его длину
Доброго времени суток.
Задача, по сути, состоит из двух подзадач. Выделение слова из строки и нахождение слова с минимальной длиной. Один из возможных путей решения может быть таким. Программа допускает несколько пробелов между словами.
program Tst;
var
s, s1, MinWrd : String;
k, MinLen : Integer;
begin
Write('Введите предложение: ');
ReadLn(s);
MinLen := MaxInt;
MinWrd := '';
s1 := '';
k := 1;
while k <= Length(s) do begin
if (s[k] <> ' ') and (s[k] <> '.') then s1 := s1 + s[k]; {накапливаем, если не пробел и не точка}
if (s[k] = ' ') or (s[k] = '.') or (k = Length(s)) then {пробел, точка или последний символ}
if (s1 <> '') then begin {выделили очередное слово}
if Length(s1) < MinLen then begin {длина текущего слова меньше запомненной}
MinLen := Length(s1); {запомнили новую длину}
MinWrd := s1; {и само слово}
end;
s1 := ''; {очищаем накопитель}
WriteLn;
end;
k := k + 1;
end;
WriteLn('Самое короткое слово из предложения - ', MinWrd, '; имеет длину - ', MinLen);
ReadLn;
end.
Удачи!
Задача, по сути, состоит из двух подзадач. Выделение слова из строки и нахождение слова с минимальной длиной. Один из возможных путей решения может быть таким. Программа допускает несколько пробелов между словами.
program Tst;
var
s, s1, MinWrd : String;
k, MinLen : Integer;
begin
Write('Введите предложение: ');
ReadLn(s);
MinLen := MaxInt;
MinWrd := '';
s1 := '';
k := 1;
while k <= Length(s) do begin
if (s[k] <> ' ') and (s[k] <> '.') then s1 := s1 + s[k]; {накапливаем, если не пробел и не точка}
if (s[k] = ' ') or (s[k] = '.') or (k = Length(s)) then {пробел, точка или последний символ}
if (s1 <> '') then begin {выделили очередное слово}
if Length(s1) < MinLen then begin {длина текущего слова меньше запомненной}
MinLen := Length(s1); {запомнили новую длину}
MinWrd := s1; {и само слово}
end;
s1 := ''; {очищаем накопитель}
WriteLn;
end;
k := k + 1;
end;
WriteLn('Самое короткое слово из предложения - ', MinWrd, '; имеет длину - ', MinLen);
ReadLn;
end.
Удачи!
const s='Cолнышко лучистое улыбнулось весело потому что с корешем мы запели песенку. ';
var i,j,k,l:integer;
begin
j:=0;k:=0;l:=100;
for i:=2 to length(s)do begin
if (s=' ') or (s='.') then begin
if (i-j)
var i,j,k,l:integer;
begin
j:=0;k:=0;l:=100;
for i:=2 to length(s)do begin
if (s=' ') or (s='.') then begin
if (i-j)
вот так попроще и понятнее:
minCount=500
minStr=''
ищеш первый пробел с помощью k=Pos(...)
если k<0 то пробел не найден - ищещ точку и выделяешь слово (см. ниже)
вырезаешь в другую переменную все что до пробела S=Copy(1,k-1,...)
удаляешь в исходной строке все что до пробела Delete(1,k,...)
[для удаления двойных пробелов юзай Trim(Delete(1,k,...))]
определяешь длину строки Length(S)
сравниваешь с minCount, если длина меньше то меняешь переменные minCount и minStr
повторяшь все это в цикле
minCount=500
minStr=''
ищеш первый пробел с помощью k=Pos(...)
если k<0 то пробел не найден - ищещ точку и выделяешь слово (см. ниже)
вырезаешь в другую переменную все что до пробела S=Copy(1,k-1,...)
удаляешь в исходной строке все что до пробела Delete(1,k,...)
[для удаления двойных пробелов юзай Trim(Delete(1,k,...))]
определяешь длину строки Length(S)
сравниваешь с minCount, если длина меньше то меняешь переменные minCount и minStr
повторяшь все это в цикле
Похожие вопросы
- олимпиадная задача по информатике. Помогите решить пожалуйста
- помогите пожалуйста решить задачу по Delphi
- помогите решить задачи в delphi пожалуйста))
- Помогите решить задачу в Delphi срочно! буду очень благодарен.
- Помогите плз решить задачу в Delphi.
- Помогите пожалуйста с задачей в delphi !
- Помогите составить задачу в Delphi
- программисты помогите срочно задача на Delphi
- Помогите решить задачу на Delphi
- Задача по Delphi