0 / 0 / 1
Регистрация: 04.10.2008
Сообщений: 64
1

Найти длину самого длинного слова.

10.12.2008, 10:25. Показов 4334. Ответов 13
Метки нет (Все метки)

У меня задача: дана строка состоящая из русских слов, разделенных пробелами(одним или несколькими). Найти длинну самого длинного слова.
Ничего не выходит, даже цикл никакой составить не могу...
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2008, 10:25
Ответы с готовыми решениями:

Найти длину самого длинного и самого короткого слова
Помогите,пожалуйста,решить задачу!!! Дана символьная строка,которая заканчивается точкой.Найти...

Найти длину самого короткого и самого длинного слова
пожалуйста помогите решать эту программу мне надо блок схема и программа. Дана строка, содержащая...

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

Найти длину самого короткого слова и самого длинного слова
Дана строка, содержащая текст. Найти длину самого короткого слова и самого длинного слова. Как...

13
Супер-модератор
8774 / 2514 / 143
Регистрация: 07.03.2007
Сообщений: 11,872
10.12.2008, 10:44 2
ну так яви нам свои потуги
0
0 / 0 / 1
Регистрация: 04.10.2008
Сообщений: 64
10.12.2008, 10:55  [ТС] 3
ну... тут такой маразм выходит...

for i:=1 to length(s) do
repeat
p:=s[i]+s[i];
until s[i]=' ';

но даже если бы этот цикл был правильный, то он бы считал ко-во символ только до первого пробела.. а он не считает-консоль открываеться, и на всегда глючит, приходиться закрывать всю программу.
0
Супер-модератор
8774 / 2514 / 143
Регистрация: 07.03.2007
Сообщений: 11,872
10.12.2008, 11:11 4
простите, а это код чего? считывания строки?
так все гораздо проще
Код
var s: string;
readln(s);
0
0 / 0 / 1
Регистрация: 04.10.2008
Сообщений: 64
10.12.2008, 11:14  [ТС] 5
нет, это еще до того цикла само собой... это поиск в строке пробела.... мне надо же както посчитать символы до пробела....
0
Супер-модератор
8774 / 2514 / 143
Регистрация: 07.03.2007
Сообщений: 11,872
10.12.2008, 11:20 6
простите, а зачем удалять символы до пробела, вам же надо просто найти самое длинное слово...
алгоритм прост:
1-ый вариант:
1. сканируешь строку и считаешь кол-во символов
2. пробел - это конец слова, записал в массив длину
3. повторяешь п.п. 1-2 до конца строки
4. в полученном массиве находишь максимум
2-ой вариант:
1. сканируешь строку и считаешь кол-во символов в переменную cnt (текущий размер)
2. пробел - это конец слова, если первое слово, то присваеваешь переменной max значение cnt, иначе проверяешь кто больше cnt или max (думаю, тут все понятно)
3. п. 3 варианта № 1
0
0 / 0 / 1
Регистрация: 04.10.2008
Сообщений: 64
10.12.2008, 11:38  [ТС] 7
сканируешь - значит читаешь?

Добавлено через 2 минуты 46 секунд
2. пробел - это конец слова, записал в массив длину
я это пониаю, но записать не могу! с языком пробемы наверно...
как показать программе, что если пробел то запись в массив?
0
Супер-модератор
8774 / 2514 / 143
Регистрация: 07.03.2007
Сообщений: 11,872
10.12.2008, 11:41 8
Код
if s[i] = ' ' then mas[index] := cnt;
0
701 / 573 / 59
Регистрация: 18.11.2008
Сообщений: 2,147
10.12.2008, 11:55 9
не проверял работает ли:
Код
max := 0;
len := 0;
for i:=1 to length(s) do
	if s<>' ' then
		inc(len)
	else begin
		if len>max then max := len;
		len := 0;
	end;
0
0 / 0 / 1
Регистрация: 04.10.2008
Сообщений: 64
10.12.2008, 11:56  [ТС] 10
я первым способом делала
Код
program str46;
uses crt;
var s:string; i,n:integer; mas:array[1..50] of byte;
begin
write('vvedite s-> ');
read(s);
for i:=1 to length(s) do
if s[i]=' 'then mas[n]:=i;
writeln(' ',mas[n]);
readln;
end.
но не верно
0
Супер-модератор
8774 / 2514 / 143
Регистрация: 07.03.2007
Сообщений: 11,872
10.12.2008, 12:17 11
раз уже пробывала, но не получилось, то глянь на такой код:
Код
program str46;
uses crt;
var s:string; i,c,max:integer;
begin
  write('vvedite s-> ');
  read(s);
  c:=0;
  max:=0;
  for i:=1 to length(s) do begin
    if s[i]=' 'then begin
      if c > max then max:=c;
      c:=0;
    end
    else inc(c);
  end;
  if c > max then max:=c;
  writeln(' ',max);
  readkey;
end.
0
0 / 0 / 1
Регистрация: 04.10.2008
Сообщений: 64
10.12.2008, 12:29  [ТС] 12
program str46;
uses crt;
var s:string; i,cnt,ind:byte; mas:array[1..100] of byte;
begin
write('vvedite s-> ');
read(s);
for i:=1 to length(s) do
begin
cnt:=i;
if s[i]=' ' then mas[ind]:=cnt;
end;
writeln('dlinna= ' , mas[ind]);
readln;
end.

эм...но только считает после первого пробела, и дальше там как все слово, даже если еще идут пробелы...
0
Супер-модератор
8774 / 2514 / 143
Регистрация: 07.03.2007
Сообщений: 11,872
10.12.2008, 12:36 13
посмотри мою программку, а свою потрассируй и глянь, что она там делает вообще...
1
0 / 0 / 1
Регистрация: 04.10.2008
Сообщений: 64
10.12.2008, 12:47  [ТС] 14
сейчас

Добавлено через 7 минут 15 секунд
:*) спасибо!!! я прослежу со своими маразмами, кажеться я поняла, где я делала не верно...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2008, 12:47
Помогаю со студенческими работами здесь

Найти длину самого длинного слова строки
помогите решить задачку Напишите программу, которая вводит с клавиатуры строку и находит длину...

Определить длину самого длинного слова в строке
С клавиатуры вводится строка символов. Определить длину самого длинного слова в строке. ...

Определить длину самого длинного слова тексте
Дан текст. Найти длину самого длинного слова

Найти длину самого короткого слова
Дано натуральное число n, символы s1..sn. Группы символов, разделенные пробелами(одним или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru