С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
 Аватар для Ecio
2 / 2 / 0
Регистрация: 13.05.2012
Сообщений: 85

Найти одинаковые 5-символьные слова и подсчитать число их повторений. Найти первое цифровое слово и уменьшить его значение в 3 раза.

05.01.2014, 19:34. Показов 1733. Ответов 9
Метки нет (Все метки)

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

Найти одинаковые 5-символьные слова и подсчитать число их повторений. Найти первое цифровое слово и уменьшить его значение в 3 раза.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.01.2014, 19:34
Ответы с готовыми решениями:

Найти одинаковые 5-символьные слова и подсчитать число их повторений. Найти первое цифровое слово и уменьшить
Задача заключается в следующем: Найти одинаковые 5-символьные слова и подсчитать число их повторений. Найти первое цифровое слово и...

Найти первое цифровое слово и возвести его значение в квадрат
Задан текст, состоящий из слов, записанных через пробелы или запятые. Длина текста не больше 255 символов. В тексте могут быть использованы...

Найти первое цифровое слово и возвести его значение в квадрат
Здравствуйте! Есть задача: в listBox найти первое цифровое слово и возвести его значение в квадрат. Сам додуматься смог только до...

9
Модератор
10397 / 5685 / 3399
Регистрация: 17.08.2012
Сообщений: 17,328
05.01.2014, 23:09
Цитата Сообщение от Ecio Посмотреть сообщение
Словом считать последовательность символов, не содержащую пробел
Цитата Сообщение от Ecio Посмотреть сообщение
текст, состоящий из слов, записанных через пробелы или запятые
Противоречие. Уточните.
0
 Аватар для Ecio
2 / 2 / 0
Регистрация: 13.05.2012
Сообщений: 85
08.01.2014, 16:56  [ТС]
Словом считать последовательность символов, не содержащую пробел
Символы набранные до пробела считать словом.
текст, состоящий из слов, записанных через пробелы или запятые
В тексте могут присутствовать пробелы и запятые, а в слове нет. Мы же не пишем таким образом "Те ,кст" .
0
Модератор
10397 / 5685 / 3399
Регистрация: 17.08.2012
Сообщений: 17,328
09.01.2014, 19:45
Очень часто печатают "слов,записанных" например. Но, руководствуясь
Цитата Сообщение от Ecio Посмотреть сообщение
В тексте могут присутствовать пробелы и запятые, а в слове нет
буду считать такую гадость двумя словами, а не одним. Вот код:
Кликните здесь для просмотра всего текста
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
program wfive;
 
var s, p, t, w: string;
    i, j, k, e: integer;
 
begin
  writeln('Enter string:');
  readln(s);
  writeln('Source string:');
  writeln(s);
  t := s;
  while (length(s) > 0) and (s[1] = ' ') do delete(s, 1, 1);
  s := s + ' ';
  p := '';
  for i := 1 to length(s) do if s[i] = ',' then s[i] := ' ';
  while pos(' ', s) > 0 do
    begin
      if pos(' ', s) = 6 then p := p + copy(s, 1, 6);
      delete(s, 1, pos(' ', s))
    end;
  while length(p) > 0 do
    begin
      s := p;
      k := 0;
      w := copy(p, 1, 6);
      while length(s) > 0 do
        begin
          if w = copy(s, 1, 6) then inc(k);
          delete(s, 1, 6)
        end;
      if k > 1 then writeln(w, '= ', k, ' repeats.');
      while pos(w, p) > 0 do delete(p, pos(w, p), 6);
    end;
  s := t;
  while (length(s) > 0) and (s[1] = ' ') do delete(s, 1, 1);
  s := s + ' ';
  e := 1;
  i := 0;
  while length(s) > 0 do
    begin
      w := copy(s, 1, pos(' ', s) - 1);
      j := length(w);
      delete(s, 1, pos(' ', s));
      if length(w) = 0 then continue;
      val(w, k, e);
      if e = 0
        then
          begin
            k := k div 3;
            str(k, w);
            delete(t, i, j + 1);
            insert(' ' + w, t, i);
            break
          end;
      i := i + j + 1;
    end;
  writeln('Result:');
  writeln(t);
  readln
end.
1
 Аватар для Ecio
2 / 2 / 0
Регистрация: 13.05.2012
Сообщений: 85
12.01.2014, 09:55  [ТС]
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Очень часто печатают "слов,записанных" например. Но, руководствуясь буду считать такую гадость двумя словами, а не одним.
А если к примеру считать одним словом, то что надо изменить?
0
Модератор
10397 / 5685 / 3399
Регистрация: 17.08.2012
Сообщений: 17,328
13.01.2014, 23:19
Строку 15 убрать.
1
 Аватар для Ecio
2 / 2 / 0
Регистрация: 13.05.2012
Сообщений: 85
17.01.2014, 21:17  [ТС]
Что то не так.Он не выводит количество повторений и первое слово не сокращает в 3 раза.Заранее спасибо.
0
Эксперт Pascal/Delphi
6812 / 4568 / 4820
Регистрация: 05.06.2014
Сообщений: 22,434
14.12.2014, 13:40
Изначально: (С) Mawrat
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
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
program Project1;
 
const
  {Размер массива, который содержит сведения о различающихся словах.}
  M = 200;
  {Разделители слов.}
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
type
  {Сведения о слове.}
  TInfo = record
    S : String[20]; {Слово.}
    Cnt : Integer;  {Количество присутствий слова в тексте.}
  end;
  {Массив сведений о различающихся словах.}
  TArr = array[1..M] of TInfo;
 
{Для кодовой страницы CP866 (DOS) переводит символы строки в верхний регистр.
Правильно обрабатывает русские и английские буквы.}
function UpCaseStr866(const aStr : String) : String;
var
  S : String;
  i : Integer;
begin
  S := aStr;
  for i := 1 to Length(S) do
    case S[i] of
      #$A0..#$AF: S[i] := Char(Ord(S[i]) - $20);
      #$E0..#$EF: S[i] := Char(Ord(S[i]) - $50);
      #$F1: S[i] := #$F0;
      else S[i] := UpCase(S[i]);
    end;
  UpCaseStr866 := S;
end;
 
{Функция извлекает из текста слова и добавляет эти слова и количество их
присутствий в массив aArr.
Предположим, из строки извлечено очередное слово. Если это слово уже есть
в массиве aArr, то счётчик этого слова увеличивается на 1. Если такого
слова в массиве нет, то слово добавляется в массив и его счётчик устанавливается
равным 1.
aArrLen - Количество значимых элементов в массиве.
Если все найденные слова записаны в массив, то функция возвращает значение True.
Если в массиве не хватило места для добавления слов, то функция возвращает
значение False.}
function ProcStr(const aStr : String; var aArr : TArr; var aArrLen : Integer) : Boolean;
var
  Sw : String;
  i, j, Len, LenW : Integer;
  Res : Boolean;
begin
  Res := True;
  Len := Length(aStr);
  LenW := 0; {Длина слова.}
  for i := 1 to Len do
    {Если символ не является разделителем, значит он принадлежит слову.}
    if not (aStr[i] in D) then begin
      Inc(LenW); {Учитываем очередной символ в длине слова.}
      {Отслеживаем конец слова.}
      if (i = Len) or (aStr[i + 1] in D) then begin
        {Выделяем слово и переводим его символы в верхний регистр.}
        Sw := UpCaseStr866( Copy(aStr, i - LenW + 1, LenW) );
        {Ищем индекс этого слова в массиве aArr.}
        j := 1;
        while (j <= aArrLen) and (aArr[j].S <> Sw) do Inc(j);
        {Если индекс оказался в пределах значимой части массива, значит
        слово найдено. В этом случае увеличиваем счётчик слова на 1.}
        if j <= aArrLen then Inc(aArr[j].Cnt)
        {Если индекс вышел за пределы значимой части массива, значит слово
        не найдено. В этом случае, если в массиве есть свободное место
        (j <= High(aArr)), то добавляем слово в массив и устанавливаем его
        счётчик, равным 1.}
        else if j <= High(aArr) then begin
          Inc(aArrLen);
          aArr[j].S := Sw;
          aArr[j].Cnt := 1;
        {Если индекс вышел за пределы массива (j > High(aArr)), значит,
        произошло переполнение. Т. е., в массиве нет свободного места для
        добавления нового слова.}
        end else begin
          Res := False; {Произошло переполнение.}
          Break;        {Прерываем цикл.}
        end;
        LenW := 0;
      end;
    end;
  ProcStr := Res;
end;
 
var
  F : Text;
  Arr : TArr; {Массив различающихся слов.}
  S, Fn : String;
  i, Cnt, ArrLen : Integer;
  Res : Boolean;
begin
  s:='qqqqq qqqqq 111 cc cc ddd vvvvv vvvvv, vvvvv.';
  Res := ProcStr(S, Arr, ArrLen);
  if not Res then
    //Break;
    ;
    {Распечатка сведений о повторяющихся словах.
    Повторяющиеся слова - это те слова из массива Arr, для которых показание
    счётчика больше, чем 1.}
    Writeln('Перечень повторяющися слов.');
    Writeln('В скобках указано количество присутствий слова:');
    Cnt := 0; {Количество повторяющихся слов.}
    for i := 1 to ArrLen do
      if length(arr[i].s)=5 then
      begin
      if Arr[i].Cnt > 1 then begin
        Inc(Cnt);
        if Cnt > 1 then Write(', ');
        Write(Arr[i].S, '(', Arr[i].Cnt, ')');
      end;
      end;
    if Cnt > 0 then Writeln;
    Writeln('Всего повторяющихся слов: ', Cnt);
    Readln();
end.
Что такое цифровое слово?

Не по теме:


Это ж сколько вы тем таких наплодили. ;) Абалдеть. ;)

0
 Аватар для Ecio
2 / 2 / 0
Регистрация: 13.05.2012
Сообщений: 85
14.12.2014, 17:48  [ТС]
Не уверен но на мой взгляд это несколько цифр подряд. Сам в шоке от количества
0
16.12.2014, 13:06

Не по теме:

Ecio, вот, почитайте: https://www.cyberforum.ru/announcement.php?a=3.

Дублирование тем запрещено.

Для того, чтобы поднять актуальность темы, в неё достаточно написать новое сообщение, например: "Актуально!", а не создавать тему-дубль.

Предупреждение.

И в следующий раз я с Вами нехорошо поступлю.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.12.2014, 13:06
Помогаю со студенческими работами здесь

Найти первое цифровое слово в строке и возвести его значение в куб
Здравствуйте! помогите пожалуйста дописать программу. Нужно найти первое цифровое слово и возвести его значение в куб. #include...

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

Сформировать новую строку, в которую включены слова по возрастанию их длин. Найти первое цифровое слово и изменить его
Совсем дуб в строках... Помогите кто чем сможет. Сформировать новую строку, в которую включены слова по возрастанию их длин. Найти первое...

Найти одинаковые 5-тисимвольные слова и подсчитать число их повторений
Помогите пож-ста, к завтрашнему очень надор=( Экзамен, а я эту задачку на C++ не могу решить... Вот задание: Вариант №18 Задан текст,...

Найти в тексте одинаковые слова и подсчитать число их повторений
int z,c,l; z=0; c=1; l=2; // int numWord - это всего. общее количество векторов for (z; z&lt;numWord; z++) { for (c;...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru