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

С++ Строки - C++

Восстановить пароль Регистрация
 
Perfaratar
2 / 2 / 0
Регистрация: 07.12.2010
Сообщений: 43
16.12.2010, 19:31     С++ Строки #1
Помогите разобраться как в С++ можно в заданной строке найди заданное слово. То есть мне нужно знать есть ли конкретное слово в предложении, но и то и другое должно быть введено с клавиатуры.

Добавлено через 31 минуту
Помогите пожалуйста на завтра надо!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2010, 19:31     С++ Строки
Посмотрите здесь:

C++ Как считать строки из файла, если там больше одной строки?
C++ как первые два символа строки переставить в конец этой строки?
Выявить строки, в которых макс. эл-т больше суммы остальных эл-ов строки C++
C++ Переставить строки матрицы по возрастанию максимальных элементов каждой строки
C++ Функция перезаписывает символы строки заданным количеством символов другой строки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aye Aye
 Аватар для Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
16.12.2010, 19:48     С++ Строки #2
C++
1
2
3
4
5
6
std::string str, word;
std::cin >> word;
std::cin >> str;
if (str.find(word) !=std::string::npos) {
    std::cout << "there is such word " << word << " in string " << str << '\n';
}
трудно было?
Perfaratar
2 / 2 / 0
Регистрация: 07.12.2010
Сообщений: 43
16.12.2010, 20:06  [ТС]     С++ Строки #3
У меня ругается на '<<'. Скопировал: error C2678: binary '>>' : no operator found which takes a left-hand operand of type 'std::istream' (or there is no acceptable conversion)

Добавлено через 3 минуты
уже сам исправил

Добавлено через 3 минуты
слово находит только в сплошной строке символов, а если это предложение с пробелами не работает
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
16.12.2010, 20:10     С++ Строки #4
Perfaratar, Это
C++
1
std::cin >> str;
замени на это
C++
1
getline(std::cin, str);
Perfaratar
2 / 2 / 0
Регистрация: 07.12.2010
Сообщений: 43
16.12.2010, 20:15  [ТС]     С++ Строки #5
Цитата Сообщение от asics Посмотреть сообщение
Perfaratar, Это
C++
1
std::cin >> str;
замени на это
C++
1
getline(std::cin, str);
не работает, ввод строки пропускает...

Добавлено через 1 минуту
такс исправил... сейчас ещё буду спрашивать
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
16.12.2010, 20:15     С++ Строки #6
Perfaratar, Покажы весь код которий компилиш.
Perfaratar
2 / 2 / 0
Регистрация: 07.12.2010
Сообщений: 43
16.12.2010, 20:20  [ТС]     С++ Строки #7
Я уже откомпилил. У меня такое хитрое задание, не хотел всё вылаживать думал, поспрашиваю и всё в кучу слеплю, но наверно не смогу Можно задание написать?)) поможешь?)
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
16.12.2010, 20:23     С++ Строки #8
Perfaratar, Ну давай, не я помогу - то кто-то другой поможэт.
Perfaratar
2 / 2 / 0
Регистрация: 07.12.2010
Сообщений: 43
16.12.2010, 20:30  [ТС]     С++ Строки #9
В общем пользователь вводит слово, потом предложение. Если в предложении есть слово, введённое раньше, то в ответе удвоить его.

Пример. Ввод слова: мама Ввод предложения: мама мыла раму, раму мыла мама
Ответ: мамамама мыла раму, раму мыла мамамама

Тут мне по-моему строка ещё одна нужна для ответа, но вот как в неё копировать содержимое первой и ещё слово вставлять не знаю. Или наверно можно работать с одной строкой только используя смещение, но я его тоже не знаю

Добавлено через 2 минуты
если всё не можешь хоть часть, а то я вообще далёк от этого, а сдавать завтра
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
16.12.2010, 20:33     С++ Строки #10
Perfaratar, Как-то так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <sstream>
 
int main()
{
    std::string str, wrd;
    std::cout << "Input sentence: ";
    std::getline(std::cin, str);
    std::cout << "\nInput word: ";
    std::cin >> wrd;
 
    std::istringstream ist(str);
 
    std::cout << "\n-> ";
    while(ist >> str)
        std::cout << (str == wrd? str+str : str) << ' ';
 
    return 0;
}
Perfaratar
2 / 2 / 0
Регистрация: 07.12.2010
Сообщений: 43
16.12.2010, 20:41  [ТС]     С++ Строки #11
Пресвятая мать заступница)))))) работает)) если бы можно было нажать 100500 раз кнопку спасибо))) я очень благодарен)) а можно маленькую экскурсию по коду? препод всё таки спрашивать будит)
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
16.12.2010, 20:51     С++ Строки #12
Perfaratar,
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
#include <iostream>
#include <string>
#include <sstream>
 
int main()
{
    std::string str, wrd;
    std::cout << "Input sentence: ";
    std::getline(std::cin, str);
    std::cout << "\nInput word: ";
    std::cin >> wrd;
 
    std::istringstream ist(str);//Преврощяем строку в поток из которого можно читаь данные как из любого потока
 
    std::cout << "\n-> ";
    while(ist >> str)//разделяем строку на слова, разделителем служыт пробел 
        std::cout << (str == wrd? str+str : str) << ' ';//Если некое слово из строки равняеться нашему, 
                                                     //соеденяем ето слово само з собой и выводим на экран, иначе выводим просто слово.
                                                     //тернарный оператор используем для удобства, эту часть кода можно перепесать и через if(), вот так
    /*while(ist >> str)
    {
        if(str == wrd)
           std::cout << (str+str) << ' ';
        else
           std::cout << str << ' ';
    }*/
 
    return 0;
}
Perfaratar
2 / 2 / 0
Регистрация: 07.12.2010
Сообщений: 43
16.12.2010, 21:09  [ТС]     С++ Строки #13
я наверно ифом напишу он роднее))

Добавлено через 2 минуты
а поток вот этот так называемый, зачем мы его используем? мы из него по другому читаем данные? не как из строки?
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
16.12.2010, 21:12     С++ Строки #14
Цитата Сообщение от Perfaratar Посмотреть сообщение
а потом вот этот так называемый, зачем мы его используем? мы из него по другому читаем данные? не как из строки?
Про "это" читаем тут
Perfaratar
2 / 2 / 0
Регистрация: 07.12.2010
Сообщений: 43
17.12.2010, 17:17  [ТС]     С++ Строки #15
аааааа))) препод сказал ещё написать через массив символов))) пошел писать)))
Fisher1992
0 / 0 / 0
Регистрация: 17.12.2010
Сообщений: 5
17.12.2010, 19:43     С++ Строки #16
Дана строка символов!!! заменить в ней все многоточия символами "+"!

Помогите пожалуйста решить!!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2010, 00:37     С++ Строки
Еще ссылки по теме:

C++ Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки.
C++ Упорядочить строки матрицы D (m. n) Лексикографически по неубыванию первых k элементов строки
Прибавить ко всем элементам каждой строки максимальное значение этой строки C++

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

Или воспользуйтесь поиском по форуму:
Perfaratar
2 / 2 / 0
Регистрация: 07.12.2010
Сообщений: 43
18.12.2010, 00:37  [ТС]     С++ Строки #17
кому интересно вот я написал
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
60
#include "stdafx.h"
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"rus");
    char str[300], word[25], newstr[500];
    int i, j, k=0, a=0, b=0, c=0, d=0;
    cout<<"Введите слово (не более 20 символов):";
    cin>>word;
    cout<<"Введите предложение (не более 200 символов):";
    cin>>str;
    for(i=0;i<strlen(str);i++)
    {
        b=i;
        j=0;
        for(j=0;j<strlen(word);j++)
        {
            if(str[b]==word[j]) a++;
            else a=0;
            b++;
        }
        if(a==strlen(word) && str[b]=='_' || a==strlen(word) && str[b]==NULL)
        {
            while(k<strlen(word))
            {
                newstr[d]=word[k];
                k++;
                d++;
            }
            k=0;
            while(k<strlen(word))
            {
                newstr[d]=word[k];
                k++;
                d++;
            }
            k=0;
            i=i+strlen(word)-1;
        }
        else
        {
            newstr[d]=str[i];
            if(str[i]=='_') newstr[d]=' ';
            d++;
        }
    }
    cout<<"Oтвет:";
    for(i=0;i<d;i++)
    {
        cout<<newstr[i];
    }
    cout<<endl;
    system("pause");
    getch();
    return 0;
}
Yandex
Объявления
18.12.2010, 00:37     С++ Строки
Ответ Создать тему
Опции темы

Текущее время: 00:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru