Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 3
Регистрация: 04.01.2014
Сообщений: 136
1

Найти в массиве строк предложение с максимально длинным словом

05.01.2014, 21:04. Показов 774. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот код, задача в том, чтобы найти в массиве строк предложение с максимально длинным словом...
Одним словом я запутался и уже совсем не могу разобраться. Заранее спасибо. Алсо, код находит максимально длинное предложение

Pascal
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
program kkk;
uses crt;
var a:array [1..10] of string;
i, n, k :integer;
max :array [1..10] of string;
BEGIN
clrscr;
write ('Insert Sent sum :');
        readln(n);
writeln ('Insert Text : ' );
for i:=1 to n do
     begin
write('A[',i,']=');
     readln(a[i]);
    end;
for i:=1 to n do
        begin
        writeln(a[i]);
        write;
        end;
for i:=1 to n do
Begin
k:=pos ('', a[i]);
    if k > 0 then max[i]:='' else max[i]:= a[i];
    while k > 0 do
        begin
        if length(copy(a[i],1,k-1)) > length(max[i]) then max[i]:=copy(a[i],1,k-1);
        delete(a[i],1,k);
        k:=pos(' ',a[i]);
        end;
end;
if length(a[i]) > length(max[i]) then max[i]:=a[i];
Writeln('max word : ', max[i]:5);
 
READLN;
End.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.01.2014, 21:04
Ответы с готовыми решениями:

Как найти предложение с нужным словом или символом?
Нужно найти все предложения с определенным словом. Пытался сделать, но выделяет целый абзац. ...

Найти в предложениях самое длинное слово, и вывести предложение с этим словом большими буквами
Как программу для следующей задачи: Ввести несколько предложений, найти в этих предложениях самое...

По некоторому количеству строк (не более N) найти пары строк с общим словом
По некоторому количеству строк (не более N) найти пары строк с общим словом. помогите, пожалуйста....

Ввести последовательность предложений. Найти самое длинное слово среди них и вывести предложение с этим словом
Ввести последовательность предложений. Найти самое длинное слово среди них и вывести предложение с...

6
Модератор
9868 / 5236 / 3306
Регистрация: 17.08.2012
Сообщений: 16,006
05.01.2014, 23:14 2
Цитата Сообщение от kloppy69 Посмотреть сообщение
массиве строк предложение
Что считать предложением?
0
0 / 0 / 3
Регистрация: 04.01.2014
Сообщений: 136
06.01.2014, 00:36  [ТС] 3
любой текст

Добавлено через 17 минут
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Что считать предложением?
Вплоть до текста- рыбы
0
Модератор
9868 / 5236 / 3306
Регистрация: 17.08.2012
Сообщений: 16,006
06.01.2014, 02:57 4
Цитата Сообщение от kloppy69 Посмотреть сообщение
любой текст
да ну? Зачем тогда массив строк?
Ладно, поясню. Допустим, a[1] = 'aaa bbb. ccc ddd? e!'. Это одно предложение или три?
0
0 / 0 / 3
Регистрация: 04.01.2014
Сообщений: 136
06.01.2014, 10:34  [ТС] 5
Хм, скорее всего я действительно не прав..
Вот полное задание -> Дан текст. Создать новый текст, в котором слова предложений исходного текста, содер-
жащего слово максимальной длины, упорядочены по возрастанию длин слов.
0
Модератор
9868 / 5236 / 3306
Регистрация: 17.08.2012
Сообщений: 16,006
07.01.2014, 19:58 6
Вот. Текст вводится из файла посимвольно (возвраты каретки и переводы строк игнорируются) до конца файла, но максимум 256 предложений, текст разбивается на предложения, помещается в массив строк. Затем ищется предложение с самым длинным словом и распечатывается.
Попутно, где необходимо, предложения приводятся к некоторому, определённому мной, стандартному виду. Печать за // - тестовая, эти строки можно удалить.
Кликните здесь для просмотра всего текста
Pascal
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
program kkk;
 
const marks: set of char = ['.', '!', '?', '''', '"'];
      inter: set of char = [',', '-'];
      crlf: set of char = [char(13), char(10)];
      mi = 255;
 
var t: array [0..mi] of string;
    w, s: string;
    c: char;
    i, j, n, m: integer;
    f: file of char;
 
begin
  assign(f, 'c:\mm.txt');
  reset(f);
  n := 0;
  j := 0;
  s := '';
  while not(eof(f)) or (n > mi) do
    begin
      read(f, c);
      if (j = 0) and ((c = ' ') or (c in marks)) then continue;
      if c in crlf
        then s := s + ' '
        else s := s + c;
      inc(j);
      if c in marks then
        begin
          j := 0;
          while pos('  ', s) > 0 do delete(s, pos('  ', s), 1);
          while s[1] = ' ' do delete(s, 1, 1);
          //writeln(n, ' ', s);
          t[n] := s;
          s := '';
          inc(n)
        end;
    end;
  close(f);
  m := 0;
  for i := 0 to n - 1 do
    begin
      s  := t[i];
      for j := length(s) downto 1 do
        begin
          if (j < length(s)) and (s[j] = '-') and (s[j + 1] <> ' ') then continue;
          if (s[j] in marks) or (s[j] in inter) then delete(s, j, 1)
        end;
      while pos('  ', s) > 0 do delete(s, pos('  ', s), 1);
      while s[1] = ' ' do delete(s, 1, 1);
      if s[length(s)] <> ' ' then s := s + ' ';
      //writeln(i, ' ', s);
      while length(s) > 0 do
        begin
          w := copy(s, 1, pos(' ', s));
          delete(s, 1, pos(' ', s));
          if length(w) > m then m := i
        end;
    end;
  writeln('Sentence with longest word:');
  writeln(t[m]);
  readln;
end.


Добавлено через 38 минут
Ещё упрощённый вариант, без массива. Ввод строк с клавиатуры (конец ввода - пустая строка), предложением считается вся введённая строка, независимо от знаков препинания.
Кликните здесь для просмотра всего текста
Pascal
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
program kkk;
 
const marks: set of char = ['.', '!', '?', '''', '"'];
      inter: set of char = [',', '-'];
 
var s, s1, s2: string;
    i, k, m: integer;
 
begin
  m := 0;
  writeln('Enter strings, blank string to interrupt.');
  repeat
    readln(s);
    s := s + ' ';
    s2 := s;
    if length(s) > 0 then for i := length(s) downto 1 do
      begin
        if (i < length(s)) and (s[i] = '-') and (s[i + 1] <> ' ') then continue;
        if (s[i] in marks) or (s[i] in inter) then delete(s, i, 1)
      end;
    while pos('  ', s) > 0 do delete(s, pos('  ', s), 1);
    if (length(s) > 0) and (s[length(s)] <> ' ') then s := s + ' ';
    while length(s) > 0 do
      begin
        k := pos(' ', s);
        delete(s, 1, pos(' ', s));
        if k > m then
          begin
            s1 := s2;
            m := k
          end
      end
  until s2 = ' ';
  writeln('Sentence with longest word:');
  writeln(s1);
  readln;
end.
1
0 / 0 / 3
Регистрация: 04.01.2014
Сообщений: 136
07.01.2014, 21:42  [ТС] 7
Спасибо огромное)))
0
07.01.2014, 21:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.01.2014, 21:42
Помогаю со студенческими работами здесь

Найти максимально повторяющееся число в массиве
Вводится массив из десяти чисел. Найти максимально повторяющееся число. Что делаю: объявляю...

Ввести два предложения и найти такую (максимально большую) часть первого предложения, которая входит во второе предложение.
Здравствуйте. Я только первый год учусь на программиста и не совсем ещё разбираюсь. Помогите...

Найти максимально похожую строку из массива строк
Добрый день. В гугле ничего не нашел(( прошу помощи у вас. Есть список урл ...

В массиве найти номер числа, максимально приближенное к заданному
Во входном файле записать число N- кол-во чисел в массиве (1&lt;N&lt;100). Далее сами числа (от -10000 до...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru