Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
invok
2 / 2 / 0
Регистрация: 18.11.2014
Сообщений: 17
#1

Поиск подстроки в строке - C++

15.11.2015, 11:53. Просмотров 394. Ответов 2
Метки нет (Все метки)

C++
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
#include "stdafx.h" 
#include <stdio.h> 
#include <iostream>
using namespace std;
int GetLength(char* string)
{
    int i;
    int length = 1;
    for (i = 1; string[i]; i++)
    {
        length++;
    }
    return length;
 
}
int FindSubstring(char* string, char* substring)
{
 
    int i, j, a;
    bool presenceSub = false;
    for (i = 0; string[i]; i++)
    {
        if (presenceSub=true)
        {
            return i;
            break;
        }
        j = 0;
        a = i;
        while (string[a] = substring[j])
        {
            a++;
            j++;
            if (j = GetLength(substring))
            {
                presenceSub = true;
                
 
            }
        }
 
    }
    if (presenceSub = false)
    {
        return -1;
    }
}
int main()
{
    char str[] = "Lorem ipsum aset amet";
    char substr[] = "ipsum a";
    cout << FindSubstring(str,substr) << "-is start index " << endl;
    char substr1[] = "Arom";
    cout << FindSubstring(str, substr1) << "-is start index " << endl;
    char str1[] = "Lorem ipsum aset ametsum";
    char substr2[] = "sum";
    cout << FindSubstring(str1, substr2) << "-is start index " << endl;
    return 0;
}
Функция возвращает индекс начала подстроки в строке. В случае отсутствия подстроки в исходной, функция возвращает -1. В случае нахождения более одного вхож-дения подстроки в исходную строку, вернуть индекс начала первого вхождения.
Не могу разобраться во всех трех тестовых случаях возвращается 0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2015, 11:53     Поиск подстроки в строке
Посмотрите здесь:

Поиск подстроки в строке - C++
Доброго времени суток! Столкнулся с такой задачей. Вводим 10 слов, далее вводим приставку (начало слова). В итоге программа должна показать...

Поиск подстроки в строке - C++
Добрый день. Ошибка в программе. Первый раз ищет отлично, потом постоянно ошибка //-функция осуществляет поиск подстроки str2 в...

Поиск подстроки в строке - C++
Вообщем,не знаю почему в программе не работает считывание с файла,если в консоли всё ищет корректно,то при чтении из файла,как я понимаю не...

Поиск подстроки в строке - C++
Уважаемые форумчане, помогите написать программу для поиска подстроки &quot;vvo&quot; в строке &quot;Petrovvortep&quot; Нужна очень срочно. можно...

поиск подстроки в строке - C++
Всем доброго времени суток! Дано: две строки типа string, к примеру str1 = &quot;HeLLo&quot; и str2 = &quot;hell&quot; Вопрос: как найти из str1 подстроку...

Поиск подстроки в строке - C++
Здравствуйте. Очень нужна программа поиска подстроки в строке. Действительно оч нужна. точная формулировка задачи: Написать...

Поиск подстроки в строке - C++
Добрый вечер. Помогите пожалуйста с заданием, нужно срочно его сделать. Сам текст: даны 2 массива (один большой, другой маленький), нужно...

Поиск подстроки в строке - C++
Добрый день всем! Ребята помогите решить такую задачу. Мне нужно в строке char *text = &quot;Help me jax111mackey&quot; получить строку 111 в...

Поиск подстроки в строке - C++
Добрый вечер. У меня есть string нужно найти определенную под строку примером &quot;world&quot; Ищу с помощью функции find, получаю номер первого...

Поиск подстроки в строке - C++
Здравствуйте. Задача такова: есть список (вообще, список большой, и не имеет в принципе ограничения, но сейчас у меня подстрок 5) подстрок,...

Поиск подстроки в строке - C++
Найти множество всех слов, которые встречаются в каждом из 2 заданных предложений.

Поиск подстроки в строке - C++
Как в С++ осуществляется поиск подстроки в строке???


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,181
Завершенные тесты: 1
15.11.2015, 12:00     Поиск подстроки в строке #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от invok Посмотреть сообщение
if (presenceSub=true)
C++
1
if (presenceSub==true)
А правильнее
C++
1
if (presenceSub)
Цитата Сообщение от invok Посмотреть сообщение
while (string[a] = substring[j])
C++
1
while (string[a] == substring[j])

Цитата Сообщение от invok Посмотреть сообщение
if (presenceSub = false)
Пишется
C++
1
if (!presenceSub)
Но это условие здесь лишнее, т.к. сюда управление попадет только, если подстрока не найдена.
Байт
Эксперт C
15833 / 10160 / 1522
Регистрация: 24.12.2010
Сообщений: 19,148
15.11.2015, 12:12     Поиск подстроки в строке #3
invok, попробуй после строки 36 поставить break;

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
int GetLength(char* string)
{
    int i;
    for (i = 0; string[i]; i++)
    ;
    return i;
}
Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
int FindSubstring(char* string, char* substring)
{
  int Ls = GetLegth(string);
  int Lsub = GetLegth(substring);
 
  for(int i=0; i<Ls - Lsub; i++) {
     for(j=0; j<Lsub; j++)
        if (string[i+j] != substring[j]) bfeak;
     if (j==Lsub) return i;
  }
  return -1;
}
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru