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

Определить сколько раз в заданом тексте встречаються слова IF, THEN, ELSE и вывести на экран строку, в которой их больше

22.09.2019, 12:23. Показов 1610. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Определить сколько раз в заданом тексте встречаються слова IF, THEN, ELSE и вывести на экран строку, в которой их больше всего.
Прошу помощи. Спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2019, 12:23
Ответы с готовыми решениями:

Определить сколько раз в заданом тексте встречаються слова IF, THEN, ELSE и вывести на экран строку, в которой их больше
Определить сколько раз в заданом тексте встречаються слова IF, THEN, ELSE и вывести на экран...

Определить сколько раз слова встречаются в тексте и сколько непосредственно друг за другом.
Дан файл, содержащий текст на русском языке, в котором встречаются некоторые 2 слова. определить...

Определить, сколько раз заданные слова встречаются в тексте и сколько из них - непосредственно друг за другом
Не знаю как его делать( П.5.18.Правил Запрещено размещать задания и решения в виде картинок и...

Определить, сколько раз заданные 2 слова встречаются в тексте, и сколько из них непосредственно друг за другом
Привет, подскажите как решить. С ВБА не дружу, на других языках решается легко, спасибо Дан...

14
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
22.09.2019, 15:15 2
Лучший ответ Сообщение было отмечено Андркус как решение

Решение

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
const
  DefaultDelims = [#0..'/',':'..'@','['..'`','{'..#127];
  Delims: set of Char = DefaultDelims;
  Words: array [1..3] of String[7] = ('IF', 'THEN', 'ELSE');
  
function NextWord(const s: String; var w: String; var p: Integer): Boolean;
var i, j: Integer;
begin
  i:=p; while (i<=Length(s)) and     (s[i] in Delims) do Inc(i);
  j:=i; while (i<=Length(s)) and not (s[i] in Delims) do Inc(i);
  NextWord:=i>j; w:=Copy(s,j,i-j); p:=i;
end;
 
var
  s, t, w, r: String;
  k, m, n, p, i: Integer;
begin
  {k:=0; m:=0; r:='';}
  while not EoF do begin
    ReadLn(s); t:='';
    for i:=1 to Length(s) do t:=t+UpCase(s[i]);
    n:=0; p:=1;
    while NextWord(t,w,p) do begin
      for i:=Low(Words) to High(Words) do
        if Words[i]=w then begin
          Inc(k); Inc(n); Break;
        end;
    end;
    if m<n then begin
      m:=n; r:=s;
    end;
  end;
  WriteLn(k); WriteLn(r);
end.
Добавлено через 14 минут
Вероятно, разделители понятнее задать так:
Pascal
2
  DefaultDelims = [#0..#127]-['0'..'9','A'..'Z','a'..'z'];
1
0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 33
22.09.2019, 17:14  [ТС] 3
после ввода текста, ничего больше с ним не происходит. Как пофиксить?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
22.09.2019, 21:26 4
Конец файла вводится по Ctrl+Z.

Добавлено через 8 минут
Скомпилированному EXE можно перенаправить текст из файла:
Код
a < a.pas
7
  Words: array [1..3] of String[7] = ('IF', 'THEN', 'ELSE');
0
0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 33
22.09.2019, 22:45  [ТС] 5
я уже даже привязал файл, а в окне вывода только цифра 0 и всё
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
22.09.2019, 22:53 6
Андркус,
поправьте строку 23, там по ошибке было s вместо t, в сообщении №2 уже исправлено.

Добавлено через 3 минуты
Мы строку в верхнем регистре собираем в t, ее и разбиваем на слова для сравнения.
0
0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 33
22.09.2019, 22:57  [ТС] 7
А почему в верхнем регистре?

Добавлено через 2 минуты
Хотя, это уже неважно) Большое спасибо за помощь) Спокойной ночи)
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
22.09.2019, 23:05 8
Цитата Сообщение от Андркус Посмотреть сообщение
А почему в верхнем регистре?
Потому как "IF", "If", "if" -- одно и то же слово.
0
0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 33
23.09.2019, 15:25  [ТС] 9
Возможно ли как-нибудь переделать даный код без функции?

Добавлено через 22 минуты
bormant, Возможно ли как-нибудь переделать даный код без функции?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
23.09.2019, 17:17 10
Конечно возможно, переделывайте.
0
0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 33
23.09.2019, 17:23  [ТС] 11
bormant, А можно какую нибудь помощь, тк я уже всё перепробовал. Буду очень благодарен
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
23.09.2019, 17:24 12
Цитата Сообщение от Андркус Посмотреть сообщение
можно какую нибудь помощь, тк я уже всё перепробовал
Показывайте, что перепробовали, будем помогать.
0
0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 33
23.09.2019, 17:29  [ТС] 13
bormant,
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 test(input,output);
const
  DefaultDelims = [#0..'/',':'..'@','['..'`','{'..#127];
  Delims: set of Char = DefaultDelims;
  Words: array [1..3] of String[7] = ('IF', 'THEN', 'ELSE');
  
 
 
var
  s, t, w, r: String;
  k, m, n, p, i, j: Integer;
  f1:text;
begin
  assign(f1,'C:\doc\doc.txt');
  reset (f1);
  k:=0; m:=0; r:='';
  while not EoF(f1) do begin
    ReadLn(f1,s); t:='';
    for i:=1 to Length(s) do t:=t+UpCase(s[i]);
    n:=0; p:=1; j:=0;
    while i>j do begin
       i:=p; while (i<=Length(s)) and     (s[i] in Delims) do Inc(i);
       j:=i; while (i<=Length(s)) and not (s[i] in Delims) do Inc(i);
       w:=Copy(s,j,i-j); p:=i;
      for i:=Low(Words) to High(Words) do
        if Words[i]=w then begin
          Inc(k); Inc(n); Break;
        end;
    end;
    if m<n then begin
      m:=n; r:=s;
    end;
  end;
  WriteLn(k); WriteLn(r);
  close(f1);
end.
В последней попытке, я решил просто засунуть то, что в функции отдельно в цикл, но оно все равно не работает
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
23.09.2019, 17:40 14
Цитата Сообщение от Андркус Посмотреть сообщение
просто засунуть то, что в функции отдельно в цикл, но оно все равно не работает
Нужно было привести в соответствие имена переменных, использованных внутри функции:
s -> t, i -> p, j -> i
а также предусмотреть то, что выделение очередного слова происходит внутри цикла обработки строки, решение о нналии очередного слова на входе в этот цикл принять не получится, т.к. слова еще нет.

В сухом остатке:
Попробуйте справиться самостоятельно
Может попробовать еще разок?
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
const
  Delims: set of Char = [#0..#127]-['0'..'9','A'..'Z','a'..'z'];
  Words: array [1..3] of String[7] = ('IF', 'THEN', 'ELSE');
var
  s, t, w, r: String;
  k, m, n, p, i: Integer;
begin
  while not EoF do begin
    ReadLn(s); t:='';
    for i:=1 to Length(s) do t:=t+UpCase(s[i]);
    n:=0; p:=1;
    repeat
      while (p<=Length(t)) and     (t[p] in Delims) do Inc(p);
      i:=p;
      while (p<=Length(t)) and not (t[p] in Delims) do Inc(p);
      if p=i then Break;
      w:=Copy(t,i,p-i);
      for i:=Low(Words) to High(Words) do
        if Words[i]=w then begin
          Inc(k); Inc(n); Break;
        end;
    until False;
    if m<n then begin
      m:=n; r:=s;
    end;
  end;
  WriteLn(k); WriteLn(r);
end.
0
0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 33
23.09.2019, 17:46  [ТС] 15
bormant, бульшучщее спасибо, я врубился))))
0
23.09.2019, 17:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.09.2019, 17:46
Помогаю со студенческими работами здесь

Определить, сколько раз заданные слова встречаются в тексте и сколько из них - непосредственно друг за другом
Есть файл. Ввести два разных слова. Определить, сколько раз они встречаются в тексте и сколько из...

Определить, сколько раз заданные два слова встречаются в тексте и сколько из них - непосредственно друг за другом
Приветствую, форумчане. Всех с праздником и заслуженными выходными) Требуется помощь в нескольких...

Определить, сколько раз заданные два слова встречаются в тексте и сколько из них непосредственно друг за другом
Дан файл, содержащий текст на русском языке и некоторые два слова. Определить, сколько раз они...

Определить сколько раз встречаются слова в тексте
Дано файл содержащий текст и некоторые два слова. Определить сколько раз встречаются эти слова в...

Определить, сколько раз слова встречаются в тексте
Как реализовать поиск

Определить, сколько раз в тексте встречаются заданные слова
Help, я вообще не успеваю Определить, сколько раз в тексте встречаются заданные слова: Дан файл с...


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

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

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