Напишите программу которая определяет сколько раз встречается подстрока в символьной строке
Перейти к содержимому

Напишите программу которая определяет сколько раз встречается подстрока в символьной строке

Определение того, сколько раз встречается подстрока в строке в Python

Я пытаюсь выяснить, сколько раз строка встречается в строке. Например:

Скажем, строка, которую я хочу найти, это 123. Очевидно, что в nStr это происходит дважды, но у меня возникают проблемы с реализацией этой логики в Python. Что я получил на данный момент:

Ответ, который он должен вернуть, — 2. Я сейчас застрял в бесконечном цикле.

Я только что узнал, что считать это гораздо лучший способ сделать это, но из любопытства, кто-нибудь видит способ сделать это похоже на то, что я уже получил?

Напишите программу которая определяет сколько раз встречается подстрока в символьной строке

Профиль
Группа: Участник
Сообщений: 17
Регистрация: 31.1.2007

Репутация: нет
Всего: нет

Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 32
Всего: 61

Код
//—————————————————————————
#include <string.h>
#include <stdio.h>
//—————————————————————————
#define MAX 100
//—————————————————————————
int main(int argc, char* argv[])
<
char s[MAX];
char substr[MAX];
int n = 0; // кол-во вхождений
char* temp;

Профиль
Группа: Участник
Сообщений: 17
Регистрация: 31.1.2007

Репутация: нет
Всего: нет

Это сообщение отредактировал(а) mutante — 10.4.2007, 20:59

Профиль
Группа: Участник
Сообщений: 17
Регистрация: 31.1.2007

Репутация: нет
Всего: нет

Профиль
Группа: Завсегдатай
Сообщений: 1718
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 50
Всего: 88

Можно я попробую? Спасибо.

Код
#include <string.h>
#include <stdio.h>

#define MAX 100 // размер массива

int main(int argc, char* argv[])
<
char s[MAX]; // строка для поиска
char substr[MAX]; // искомая подстрока
int n = 0; // счётчик вхождений подстроки
char* temp = s; // устанавливаем указатель на начало строки

puts("Input str"); // приглашение для ввода строки
gets(s); // вводим строку
puts("Input substr"); // приглашение для ввода подстроки
gets(substr); // вводим подстроку

// в цикле ищем вхождения подстроки до тех пор, пока
// ф-ция strstr не вернёт NULL — значит искать больше нечего
while((temp = strstr(temp, substr)) != NULL)
<
// а если нашли то.
n++; // . увеличиваем счётчик вхождений подстроки.
temp++; // . сдвигаем указатель на следующий символ для того,
// что бы ф-ция strstr начала новый поиск
>

printf("N = %d", n); // печатаем количество вхождений
getchar(); // ждём нажатия любой клавиши

Профиль
Группа: Участник
Сообщений: 2
Регистрация: 12.4.2007

Репутация: нет
Всего: нет

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!

  • Название темы должно отражать её суть! (Не следует добавлять туда слова «помогите», «срочно» и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например «школьная задача», «задача из учебника» и т.п.), не нужно указывать ее сложность («простая задача», «легкий вопрос» и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку «Код»). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик — один вопрос!
  • В данном разделе запрещено поднимать темы , т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой «Пометить как решённый», которая находится под кнопками создания темы или специальным флажком при ответе.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »

[ Время генерации скрипта: 0.1146 ] [ Использовано запросов: 21 ] [ GZIP включён ]

Сколько раз буква встречается в строке

Программа принимает на вход строку и букву. Надо определить (с использованием рекурсии), сколько раз данная буква встречается в строке.

Решение задачи

  1. Принимаем на вход строку и букву, записываем их в разные переменные.
  2. Передаем эти переменные в качестве аргументов в рекурсивную функцию.
  3. В качестве базы рекурсии примем условие, что строка является непустой.
  4. Если строка является непустой, то работа функции продолжается и мы смотрим, совпадает ли первый символ строки с проверяемой буквой, или нет. Если совпадает, то мы увеличиваем счетчик на единицу.
  5. Далее мы передаем строку без первой буквы снова в функцию, и все повторяется заново.
  6. Когда строка станет пустой, функция вернет нам количество вхождений буквы в строке. Выведем этот результат на экран.
  7. Конец.

Исходный код

Ниже дан исходный код программы для рекурсивного определения количества вхождений буквы в строку. Результаты работы программы также даны ниже.

Объяснение работы программы

  1. Пользователь вводит строку и букву, которые записываются в отдельные переменные string и ch .
  2. Далее эти переменные передаются в качестве аргументов в рекурсивную функцию check() .
  3. Для того чтобы функция продолжала свою работу, необходимо, чтобы строка была непустой. Если строка является пустой, функция завершает свою работу и возвращает 0 .
  4. На следующем шаге рекурсивная функция проверяет, совпадает ли буква в переменной ch с первой буквой в строке. Если совпадает, то в выходное значение добавляется 1 , к которой прибавляется функция check() , в которой в качестве аргумента передается наша строка, но уже без первой буквы. Если нет, то просто вызывается функция check() , где в качестве аргумента также строка без первой буквы.
  5. Так повторяется до тех пор, пока строка не станет пустой.
  6. После этого результат выводится на экран.

Результаты работы программы

python logo

Английский для программистов

Наш телеграм канал с тестами по английскому языку для программистов. Английский это часть карьеры программиста. Поэтому полезно заняться им уже сейчас

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *