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

Списки: Распечатайте слова, имеющие максимальную длину

23.09.2012, 20:30. Показов 2642. Ответов 23
Метки нет (Все метки)

Пусть дан текстовый файл. Распечатайте слова, имеющие максимальную длину.





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

Задача со строками. Определить максимальную длину слова
Строка Т состоит из слов, разделенных запятыми. Определить максимальную длину слова. Не могу...

Переписать в алфавитном порядке все слова из заданного файла, имеющие длину n, в другой файл.
Разобрать программу "Сортировка по алфавиту".Дан текстовый файл. Переписать в алфавитном порядке...

Удалить из текста слова имеющие максимальную длину
Дан символьный массив, образованный из слов, разделенных пробелами С использованием процедур и...

Вывести на экран слова, имеющие максимальную длину
Дана строка, содержащая несколько слов, разделенных пробелами. Вывести на экран слова, имеющие...

23
angstrom
23.09.2012, 22:56 2
Максимальную относительно чего? Напоминает мультфильм - 10 это куча, а три?
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 10
24.09.2012, 18:58  [ТС] 3
относительно других слов конечно)
0
162 / 76 / 21
Регистрация: 22.04.2012
Сообщений: 221
24.09.2012, 21:42 4
перебирай все слова)
0
angstrom
24.09.2012, 21:48 5
Хорошо, имеются слова длиною от 3 до 15 символов. Какие из них отнести к выбираемым? 15-символьные само-собой, 10-ти, а 12-ти? Где граница между длинными слова и короткими.
P.S. Я не зря мультфильм вспомнил (сериал про попугая, слона и мартышку).
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32244 / 20884 / 8086
Регистрация: 22.10.2011
Сообщений: 36,119
Записей в блоге: 7
24.09.2012, 21:51 6
angstrom, слово "максимальную", употребленное ТС, имеет строгое значение. Если в тексте есть 15-символьное слово, то о 12/13/14-символьных можно забыть.

Не по теме:

Или максимальное значение синуса у нас тоже "где-то от 0.75 до 1"?

1
angstrom
24.09.2012, 22:03 7
Вопрос по-русски звучит неоднозначно. Что значит максимальную? Относительно чего она максимальна?
5656 / 2255 / 464
Регистрация: 20.11.2009
Сообщений: 7,592
Записей в блоге: 1
24.09.2012, 22:06 8

Не по теме:

и все же, задание тупо звучит как-то



Добавлено через 1 минуту
Цитата Сообщение от angstrom Посмотреть сообщение
Вопрос по-русски звучит неоднозначно. Что значит максимальную? Относительно чего она максимальна?
UI имеет ввиду относительно максимального по длине слова в списке

получается что? у нас есть скажем сто слов, все разной длины от 1 буквы до 20 скажем.... и вот нужно взять все слова у которых длина 20, так что ли?
0
429 / 337 / 36
Регистрация: 31.05.2011
Сообщений: 1,156
24.09.2012, 22:11 9
Цитата Сообщение от _Vika_ Посмотреть сообщение
П.С.: решите позязя до 25. Сяпки)
а ведь до 25 осталось 2 часа
0
HighPredator
24.09.2012, 22:49
  #10
 Комментарий модератора 
БогДелфей, пишите по делу.
0
1 / 1 / 2
Регистрация: 08.08.2011
Сообщений: 61
24.09.2012, 22:56 11
символ разделитель задать между словами вытянуть их в какой-нибудь StringList и сравнивать их, типа того )
0
13089 / 5870 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
24.09.2012, 23:11 12
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от БогДелфей Посмотреть сообщение
а ведь до 25 осталось 2 часа
Успеваем.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
type
  //Тип основных данных списка.
  TData = String;
  //Тип указателя на элемент списка.
  TPElem = ^TElem;
  //Тип элемента списка.
  TElem = record
    Data : TData;
    PNext : TPElem;
  end;
  //Тип, описывающий однонаправленный список.
  TDynList = record
    PFirst : TPElem; //Указатель на первый элемент списка.
    PLast : TPElem; //Указатель на последний элемент списка.
  end;
 
//Процедуры для работы со списком.
 
//Инициализация списка. Внимание! Эту процедуру можно выполнять только
//в отношении пустого списка. Иначе - будут утечки памяти.
procedure Init(var aList : TDynList);
begin
  aList.PFirst := nil;
  aList.PLast := nil;
end;
 
//Добавление элемента в конец однонаправленного списка.
procedure AddL(var aList : TDynList; const aData : TData);
var
  PElem : TPElem;
begin
  New(PElem);
  PElem^.Data := aData;
  PElem^.PNext := nil;
  if aList.PFirst = nil then
    aList.PFirst := PElem
  else
    aList.PLast^.PNext := PElem;
  aList.PLast := PElem;
end;
 
//Удаление однонаправленного списка из памяти и инициализация.
procedure ListFree(var aList : TDynList);
var
  PNext, PDel : TPElem;
begin
  if aList.PFirst = nil then Exit;
 
  PNext := aList.PFirst;
  while PNext <> nil do begin
    PDel := PNext;
    PNext := PNext^.PNext;
    Dispose(PDel);
  end;
  Init(aList);
end;
 
//Распечатка однонаправленного списка.
function ListToStr(const aList : TDynList) : String;
var
  PElem : TPElem;
  i : Integer;
begin
  Result := '';
  if aList.PFirst = nil then begin
    Result := 'Список пуст.';
    Exit;
  end;
 
  PElem := aList.PFirst;
  i := 0;
  while PElem <> nil do begin
    Inc(i);
    if i > 1 then Result := Result + ', ';
    Result := Result + PElem^.Data;
    PElem := PElem^.PNext;
  end;
end;
 
//Разбиение текста на слова, добавление их в список и подсчёт наибольшей длины слов.
function ProcStr(const aStr : String; var aList : TDynList) : Integer;
const
  //Множество разделителей слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
var
  i, Len, LenW : Integer;
begin
  Result := 0;
  Len := Length(aStr);
  LenW := 0;
  for i := 1 to Len do begin
    //Пропуск разделителей.
    if aStr[i] in D then Continue;
    //Учитываем очередной символ в длине слова.
    Inc(LenW);
    //Отслеживаем конец слова.
    if (i = Len) or (aStr[i + 1] in D) then begin
      //Выделяем слово и добавляем его в список.
      AddL(aList, Copy(aStr, i - LenW + 1, LenW));
      //Уточняем сведения о наибольшей длине слов.
      if LenW > Result then Result := LenW;
      //Сброс длины слова.
      LenW := 0;
    end;
  end;
end;
 
//Обработчики нажатий кнопок на форме.
 
procedure TForm1.Button1Click(Sender: TObject);
const
  Fn = 'file.txt';
var
  F : TextFile;
  List : TDynList;
  PElem : TPElem;
  S, FileName : String;
  Len, LenMax : Integer;
begin
  //Полное имя файла. Файл должен располагаться в той же папке,
  //где лежит исполняемый файл программы.
  FileName := ExtractFilePath(ParamStr(0)) + Fn;
  //Проверка существования файла.
  if not FileExists(FileName) then begin
    MessageBox(
      0
      ,'Файл с именем "' + Fn + '" не найден. Действие отменено.'
      ,'Внимание!'
      ,MB_OK + MB_ICONEXCLAMATION + MB_APPLMODAL
    );
    Exit;
  end;
 
  //Начальная инициализация списка.
  Init(List);
  //Построчное чтение из файла, разбиение на слова, запись их в список и подсчёт
  //наибольшей длины слов.
  AssignFile(F, FileName);
  Reset(F);
  LenMax := 0;
  while not Eof(F) do begin
    Readln(F, S);
    Len := ProcStr(S, List);
    if Len > LenMax then LenMax := Len;
  end;
  CloseFile(F);
 
  Memo1.Lines.Add('------------------------------');
  if LenMax = 0 then begin //Или так: if List.PFirst = nil then begin
    Memo1.Lines.Add('В файле нет слов.');
    //В этом случае список пуст и удалять его из памяти не требуется.
    Exit;
  end;
  Memo1.Lines.Add('Наибольшая длина слов: ' + IntToStr(LenMax));
  Memo1.Lines.Add('Список слов, прочитанных из файла:');
  Memo1.Lines.Add(ListToStr(List));
 
  //Распечатка самых длинных слов.
  Memo1.Lines.Add('----------');
  Memo1.Lines.Add('Список слов с наибольшей длиной:');
  S := '';
  PElem := List.PFirst;
  while PElem <> nil do begin
    if Length(PElem^.Data) = LenMax then begin
      if S <> '' then S := S + ', ';
      S := S + PElem^.Data;
    end;
    PElem := PElem^.PNext;
  end;
  Memo1.Lines.Add(S);
 
  //Удаление списка из памяти.
  ListFree(List);
end;
_Vika_, на форму надо положить TButton и TMemo. Для кнопки создать обработчик события OnClick и оформить код так, как показано выше. В папке с программой должен лежать файл с именем file.txt - в нём исходный набор слов должен быть.
2
angstrom
24.09.2012, 23:25 13
Offtop
Увы, у меня уже 2 часа как 25-е.
429 / 337 / 36
Регистрация: 31.05.2011
Сообщений: 1,156
24.09.2012, 23:29 14
Я вообще понял задачу ТС вот так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm1.Button1Click(Sender: TObject);
var
  Str: TStringList;
  x, i: Integer;
  s: String;
begin
  Str := TStringList.Create;
  Str.LoadFromFile('0.txt');
  x := 0;
    for i := 0 to Str.Count - 1 do
      begin
        if Length(Str.Strings[i]) > x then x := Length(Str.Strings[i])
      end;
    for i := 0 to Str.Count - 1 do
      begin
        if Length(Str.Strings[i]) = x then s := s + Str.Strings[i] + #13#10;
      end;
  Str.Free;
  ShowMessage(s);
end;
0
angstrom
24.09.2012, 23:42 15
Это уже больше подходит для ТС.
5656 / 2255 / 464
Регистрация: 20.11.2009
Сообщений: 7,592
Записей в блоге: 1
24.09.2012, 23:42 16
Цитата Сообщение от БогДелфей Посмотреть сообщение
Я вообще понял задачу ТС вот так:
задача ТС, как в задании написано, должна работать со списками
Цитата Сообщение от angstrom Посмотреть сообщение

Не по теме:

Увы, у меня уже 2 часа как 25-е.

Не по теме:

еще больше 2 часов до 25 :))))

0
429 / 337 / 36
Регистрация: 31.05.2011
Сообщений: 1,156
24.09.2012, 23:50 17
Цитата Сообщение от Arcor Посмотреть сообщение
задача ТС, как в задании написано, должна работать со списками
чо в глаза штоле долбишся, где там такое написано?
0
13089 / 5870 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
24.09.2012, 23:56 18
БогДелфей, в самом названии темы про списки сказано:
Цитата Сообщение от _Vika_ Посмотреть сообщение
Списки: Распечатайте слова, имеющие максимальную длину
0
429 / 337 / 36
Регистрация: 31.05.2011
Сообщений: 1,156
25.09.2012, 00:00 19
ну да
0
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 10
25.09.2012, 17:52  [ТС] 20
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
type
TE=string;
Li=^Elem;
Elem=Record
     inf:string;
     next:Li;
     end;
Var f:text;
 st:string; {st1:array [1..255] of string;  }
 a:array [1..255] of integer; 
 ch:char;
 bl:boolean;
 i,j,max:integer;
 st1:Li;
begin
  Assign (f,'my.txt');
  //rewrite (f);
  bl:=true;
  {while (bl=true) do
  begin
  read (st);
  writeln (f,st);
  if st[length (st)]='.' Then bl:=false;
  end;    }
  max:=1;
  i:=0;
 // closefile(f);
  reset (f);
  while not(EOF(f)) do
  begin
 { while not (EOLN(f)) do
  begin  }
  i:=i+1;
  a[i]:=0;
 { st1[i]:='';}
  read (f,ch);
 
  while (ch<>' ') and not((EOLN(f))) do
  begin
  st1[i]:=st1[i]+ch;
  a[i]:=a[i]+1;
  read(f,ch);
  end;
 
    end;
     st1[i]:=st1[i]+ch;
     a[i]:=a[i]+1;
 
  for j:=1 to i do
  begin
  If a[j]>a[max] Then max:=j;
  end;
  //  end;
 
  write (st1[max]);
 
  readln;
end.
Препод сказал заменить массивы на списи, как пока не додумалась. Есть предложения?
 Комментарий модератора 
Теги кода добавлены модератором. По правилам форума, код должен быть оформлен соответствующими тегами. Для оформления кода Delphi следует выделить этот код и на панели редактирования сообщения нажать кнопку: "DELPHI".
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2012, 17:52
Помогаю со студенческими работами здесь

Удалить из текста слова имеющие максимальную длину
Дан символьный массив, образованный из слов, разделенных пробелами. С использованием процедур и...

Распечатать слова, имеющие максимальную и минимальную длину
Строка содержит простое предложение, в котором слова отделяются символом «пробел». Распечатать...

Найти в текстовом файле слова, имеющие максимальную длину
Добрый день. В ходе реализации задачи на листы(задача звучит так: дан текстовый файл, найти слова,...

Cчитать список и выбрать из него слова, имеющие максимальную длину
Возникла трудность: мне нужно считать список и выбрать из него слова, имеющие максимальную длину. ...


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

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

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