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

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

Войти
Регистрация
Восстановить пароль
 
Ingvarr
0 / 0 / 0
Регистрация: 20.12.2010
Сообщений: 4
#1

Распечатать строку, которая содержит заданное слово заданное колличество раз - C++

19.01.2011, 04:37. Просмотров 658. Ответов 4
Метки нет (Все метки)

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

Собственно задание: Даны две строки, содержащие не более 100 символов. Строки состоят из слов, разделенных пробелами. Распечатать строку, которая содержит заданное слово заданное колличество раз.

И мой код:

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 <iostream>
#include <cstring>
 
using namespace std;
 
int wrldfined(char *str,char *wrld, int d)
{   
        int i = 0;
        char *tmp=str;
        char *pch;
        pch = strtok (tmp," ,.-");
        while (pch != NULL)
            {
                if (strcmp(pch,wrld)==0) i++;
                pch = strtok(NULL, " ,.-");
            }
        if (i>=d)
            cout<< endl<<"Слово "<<"\""<<wrld<<"\""<<" встречается "<<i<<" раз в строке: "<< str <<endl;
return 0;
}
 
int main()
{
    char string_1[101];
    char string_2[101];
    char world[26];
    int n=0;
    cout <<"Введите первую строку: ";
    cin.getline(string_1, 101);
    cout << endl<<"Введите вторую строку: ";
    cin.getline(string_2, 101);
    cout << endl<< "Введите слово для поиска: ";
    cin.getline(world, 26);
    cout << endl<<"Сколько раз встречается слово: ";
    cin>>n;
    wrldfined(string_1,world,n);
    wrldfined(string_2,world,n);
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2011, 04:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Распечатать строку, которая содержит заданное слово заданное колличество раз (C++):

Функция, которая копирует строку в другую строку заданное количество раз - C++
Помогите!!!! срочно нужна задача. Не знаю как сделать. Разработать функцию, которая копирует строку в другую строку заданное количество...

Распечатать количество вхождений заданного слова в каждую строку и заменить его на другое заданное слово - C++
Даны две строки, содержащие не более 100 символов. Строки состоят из слов, разделенных пробелами. Распечатать количество вхождений...

Работа со строками. Определить, содержит ли заданное слово букву «д» - C++
Определить, содержит ли заданное слово букву «д». Если можно, то код как можно проще, типа cout &lt;&lt; &quot;Введите слово&quot;; cin&gt;&gt;s; ...

Сколько раз заданное слово встречается в заданной строке - C++
Не знаю решения в консоли

Определить, сколько раз встречается заданное слово в предложении - C++
надо найти сколько раз встречается данное слово в предложении))) спасибо!!

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

4
solar_wind
756 / 747 / 42
Регистрация: 06.07.2009
Сообщений: 2,969
Завершенные тесты: 1
19.01.2011, 05:09 #2
tmp можно модифицировать вызовами strtok,
так как после вызова strtok в tmp вставляется нулевое значение.

cout выводит строку до первого нулевого значения.

Так что либо не используй strtok, либо выводи строку по кускам...
0
Ingvarr
0 / 0 / 0
Регистрация: 20.12.2010
Сообщений: 4
19.01.2011, 14:25  [ТС] #3
Цитата Сообщение от vitaly1981 Посмотреть сообщение
tmp можно модифицировать вызовами strtok,
так как после вызова strtok в tmp вставляется нулевое значение.

cout выводит строку до первого нулевого значения.

Так что либо не используй strtok, либо выводи строку по кускам...
Мне к сожалению нужно использовать strtok... Нельзя ли как-нибудь создать переменную, в которую сохранить начальное значение tmp и обезопасить её от изменения. Я так пытался сделать, но всё равно выводит только первое слово.
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
19.01.2011, 15:00 #4
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
#include <iostream>
#include <cstring>
 
using namespace std;
 
int wrldfined(char *str,char *wrld, int d)
{   
                int i = 0;
                char *tmp=new char[strlen(str)+1];
                strcpy(tmp, str);
                char *pch;
                pch = strtok (tmp," ,.-");
                while (pch != NULL)
                        {
                                if (strcmp(pch,wrld)==0) i++;
                                pch = strtok(NULL, " ,.-");
                        }
                if (i>=d)
                        cout<< endl<<"Слово "<<"\""<<wrld<<"\""<<" встречается "<<i<<" раз в строке: "<< str <<endl;
delete[] tmp;
return 0;
}
 
int main()
{
    std::locale().global(std::locale(""));
    char string_1[101];
        char string_2[101];
    char world[26];
        int n=0;
    cout <<"Введите первую строку: ";
    cin.getline(string_1, 101);
    cout << endl<<"Введите вторую строку: ";
    cin.getline(string_2, 101);
    cout << endl<< "Введите слово для поиска: ";
    cin.getline(world, 26);
        cout << endl<<"Сколько раз встречается слово: ";
        cin>>n;
        wrldfined(string_1,world,n);
        wrldfined(string_2,world,n);
    return 0;
}
1
Ingvarr
0 / 0 / 0
Регистрация: 20.12.2010
Сообщений: 4
19.01.2011, 15:12  [ТС] #5
ForEveR, Огромнейшее спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2011, 15:12
Привет! Вот еще темы с ответами:

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

Определить сколько раз в строке встречается заданное слово - C++
Помогите пожалуйста в строках вообще ничего непонимаю! Задача:1 Определить сколько раз в строке встречается заданное слово. Задача:2 ...

Задан текст. Определить, входит ли в него заданное слово и сколько раз. - C++
Задан текст. Определить, входит ли в него заданное слово и сколько раз.

Составить программу, которая печатает заданное слово в обратном порядке - C++
Составить программу, которая печатает заданное слово в обратном порядке.


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
19.01.2011, 15:12
Ответ Создать тему
Опции темы

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