Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Dream_O
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 38
#1

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

07.05.2013, 20:23. Просмотров 1611. Ответов 9
Метки нет (Все метки)

Доброго времени суток! Столкнулся с такой задачей. Вводим 10 слов, далее вводим приставку (начало слова). В итоге программа должна показать слова, которые начинаются с введенной строки. Сделал простые вещи:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main(void)
{
    setlocale(LC_ALL, "Rus");// Для корректного отображения русских символов в консоле
    
    char gwords [10][40], temp[40] ; // определяем необходимые массивы строк
    int cnt;
    
    printf("Введите 10 слов по порядку\n"); 
    for (cnt = 0; cnt < 10; cnt++) gets(gwords[cnt]);  //заполяняем массив словами
    
    printf("Введите приставку: ");  scanf_s("%d",&temp);; // заполняем приставку
//пока всё
    getchar();
    return 0;
}}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2013, 20:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск подстроки в строке (C++):

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

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

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

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

Поиск подстроки в строке - C++
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;iostream&gt; using namespace std; int GetLength(char* string) { int i; int...

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

9
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
07.05.2013, 20:29 #2
вот тут есть код для поиска и замены символов. Вам надо сделать почти то же самое, только не удалять символы, а протий по строке дальше и найти, где заканчивается слово. Если есть вопросы, спрашивайте
0
Dream_O
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 38
07.05.2013, 21:47  [ТС] #3
Огромное спасибо! Получился код:
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
#include <stdio.h> // Стандартный заголовочный файл ввода/вывода
#include <locale.h> // Используется для задач, связанных с локализацией
#include <string.h> // Используется для задач обработки строк
#include <string>
#include <iostream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus"); // Для корректного отображения русских символов в консоли
 
    char gwords [3][40];
    int cnt,a,sum=0,;
    string mystr,find;
 
    printf("Введите 10 слов по порядку\n"); 
    for (cnt = 0; cnt < 3; cnt++) gets(gwords[cnt]); //заполяняем массив словами
    
    printf("Введите приставку: ");   
    cin>>find; // заполняем приставку
    
    for (int i=0;i<=3;i++)
    {
        mystr = gwords[i];
        a = mystr.find(find,0);
        if (a = 0)
        {
            printf("Найдено слово: %7d\n",mystr);
            sum++;
        }
    
    }
    if (sum>0)
    {printf("Всего найдено слов: %7d\n",sum);}  
    getchar();
    getchar();
    return 0;
}
Но вот if (a = 0) не работает =(
0
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
07.05.2013, 22:15 #4
А почему а должно быть 0? Если такого вхождения нету, то функция возвращает -1,а не 0
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
07.05.2013, 22:19 #5
Цитата Сообщение от Dream_O Посмотреть сообщение
C++
1
if (a = 0)
Это присваивание, а не сравнение.
Вот сравнение:
C++
1
if (a == std::string::npos )

Не по теме:

Цитата Сообщение от metaluga145 Посмотреть сообщение
то функция возвращает -1,а не 0
возвращается std::string::npos

0
metaluga145
07.05.2013, 22:25
  #6

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
возвращается std::string::npos
npos=-1, не так ли?

0
Croessmah
07.05.2013, 22:35
  #7

Не по теме:

Цитата Сообщение от metaluga145 Посмотреть сообщение
npos=-1, не так ли?
так. Только упираемся в несколько вещей:
size_type
магическое число
ну и конечно же если вдруг npos!=-1 (захотят переделать стандарт, ну или производители компилятора не захотели делать его -1)
То бишь с npos будет работать всегда, вне зависимости от значения, которому оно равно.
Собственно для этого такие константы и придумывают - чтобы в случае их изменения, клиентский код не нуждался в переделке

0
metaluga145
07.05.2013, 22:38
  #8

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
магическое число
что это значит?

0
Croessmah
07.05.2013, 22:41
  #9

Не по теме:

Цитата Сообщение от metaluga145 Посмотреть сообщение
что это значит?
Википедия: Магическое число
Магическое число, или сигнатура — целочисленная константа, используемая для однозначной идентификации ресурса или данных.
Такое число само по себе не несёт никакого смысла, и может вызвать недоумение, встретившись в коде программы без соответствующего контекста или комментария, при этом попытка изменить его на другое, даже близкое по значению, может привести к абсолютно непредсказуемым последствиям.

1
Dream_O
0 / 0 / 0
Регистрация: 07.05.2013
Сообщений: 38
08.05.2013, 03:34  [ТС] #10
Сравниваю с 0 т.к. меня устаивают только те случаи, когда вхождение начинается в начале слова. Если его нет или подстрока в середине строки, то ничего не делаем
0
08.05.2013, 03:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2013, 03:34
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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