Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 15.09.2019
Сообщений: 6

Найти количество вхождений одной строки в другую в качестве подстроки

06.11.2019, 19:35. Показов 1146. Ответов 2

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

Буду очень благодарен за помощь
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.11.2019, 19:35
Ответы с готовыми решениями:

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

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

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

2
 Аватар для abit
870 / 529 / 149
Регистрация: 03.02.2013
Сообщений: 1,851
16.11.2019, 17:42
как насчёт динамического программирования?
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
const
  str='abcasadafafafafaf';
  template='afa';
 
type
TFinder = class
 private
   var
    inpStr:String;
    inpTmeplate:String;
  function Test(const pos_s,pos_t:word):boolean;
  function movSdec(const p:String; pos:word):String;
 public
  constructor Create(const p:String);
  procedure Template(const p:String);
  function GetCount(const pos:word):word;
end;
 
function TFinder.Test(const pos_s,pos_t:word):boolean;
begin
   Result:=inpStr[pos_s]=inpTmeplate[pos_t];
end;
 
constructor TFinder.Create(const p:String);
begin
   inpStr:=p;
end;
 
procedure TFinder.Template(const p:String);
begin
   inpTmeplate:=p;
end;
 
function TFinder.movSdec(const p:String; pos:word):String;
var
  i:word;
 _tmp:String='';
begin
  for i:=pos to High(p) do _tmp+=p[i];
  Result:=_tmp;
end;
 
function TFinder.GetCount(const pos:word):word;
var
  i,j,k,s:word;
  st,tm:String;
  _Test:TFinder;
begin
   s:=0;
   for i:=pos to High(inpStr) do
   begin
      if Test(i,1) then
      begin
        k:=0;
        st:=movSdec(inpStr,i);
        tm:=movSdec(inpTmeplate,1);
        _Test:=TFinder.Create(st);
        with _Test do
        begin
          Template(tm);
          for j:=Low(tm) to High(tm) do if Test(j,j) then inc(k) else break;
          Free;
        end;
        if k=length(inpTmeplate) then inc(s);
      end;
   end;
   Result:=s;
end;
 
var
  myTest:TFinder;
 
begin
   myTest:=TFinder.Create(str);
   myTest.Template(template);
   Writeln(myTest.GetCount(0));
   Readln;
end.
уверен, что задать str и tamplate с клавиатуры у вас не возникнет сложности
0
 Аватар для abit
870 / 529 / 149
Регистрация: 03.02.2013
Сообщений: 1,851
16.11.2019, 23:47
небольшие изменения:
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
const
  str='abcasadafafafafaf';
  template='afa';
 
type
TFinder = class
 private
   var
    inpStr:String;
    inpTmeplate:String;
  function Test(const pos_s,pos_t:word):boolean;
  function movSdec(const p:String; pos:word):String;
 public
  constructor Create(const p:String);
  procedure Template(const p:String);
  function GetCount:word;
end;
 
function TFinder.Test(const pos_s,pos_t:word):boolean;
begin
   Result:=inpStr[pos_s]=inpTmeplate[pos_t];
end;
 
constructor TFinder.Create(const p:String);
begin
   inpStr:=p;
end;
 
procedure TFinder.Template(const p:String);
begin
   inpTmeplate:=p;
end;
 
function TFinder.movSdec(const p:String; pos:word):String;
var
  i:word;
 _tmp:String='';
begin
  for i:=pos to High(p) do _tmp+=p[i];
  Result:=_tmp;
end;
 
function TFinder.GetCount:word;
var
   i,j,k,s:word;
   tm:String;
  _Test:TFinder;
begin
   s:=0;
   for i:=Low(inpStr) to High(inpStr) do
   begin
      if Test(i,1) then
      begin
        k:=0;
        tm:=movSdec(inpTmeplate,1);
        _Test:=TFinder.Create(movSdec(inpStr,i));
        with _Test do
        begin
          Template(tm);
          for j:=Low(tm) to High(tm) do if Test(j,j) then inc(k) else break;
          Free;
        end;
        if k=length(inpTmeplate) then inc(s);
      end;
   end;
   Result:=s;
end;
 
var
  myTest:TFinder;
 
begin
   myTest:=TFinder.Create(str);
   myTest.Template(template);
   Writeln(myTest.GetCount);
   Readln;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.11.2019, 23:47
Помогаю со студенческими работами здесь

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

Заменить во введенном выражении все подстроки А на подстроки В и подстроки В на А
Программа со строками. Составить программу, заменяющую во введенном выражении все подстроки А на...

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

Каждое вхождение s1 в строку s в качестве подстроки заменить на обращенную подстроку s1. Найдите ошибку
дана строка s и s1. каждое вхождение s1 в строку s в качестве подстроки заменить на обращенную...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru