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

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

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

Массив слов - C++

11.12.2011, 17:32. Просмотров 798. Ответов 4
Метки нет (Все метки)

Доброго времени суток, уважаемые форумчане. Будьте любезны, подскажите как решить задачку.


Задача. Для каждого слова заданного предложения указать, сколько раз оно встречается в предложении.
Нужно выполнить через string.

моя исходная строка "hello i world i am imba prog hello world world am am am."

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

Еще хотел бы спросить, как под дебагом в visual studio 2010 посмотреть значения строк массива string. т.е. как сделать, чтобы показывало значение каждой строчки из массива(так как показывает значение каждой переменной типа int в массиве int под дебагом).

вот мой недописанный неправильный код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
{   
    string s1="hello i world i am imba prog hello world world am am am.";
    string s2[15];
    int a[15],f,b,c=0,d=0,e=0;
    
    for(b=0;b<s1.length();b++)
        if (s1.at(b)==' ')
        {   if (c>0) c=e;
            
            for(;c<b;c++) s2[d].at(c)=s1.at(c); // комиплятор ругается на эту строчку
            d++;
            e=b;//номер предыдущего сивола пробела
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2011, 17:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массив слов (C++):

Функция, получает строку слов и рзделителей, а на выходе имеет массив слов из строки и количество этих слов - C++
мне нужна функция, которая во входе получает строку слов и рзделителей (&quot; &quot;, &quot;,&quot;, &quot;.&quot;, &quot;_&quot;, &quot;&quot;&quot;), а на выходе имеет массив слов из строки...

Дан массив слов. Определить количество слов массива, которые не являются «перевертышем». - C++
Дан массив слов. Определить количество слов массива, которые не являются «перевертышем». Разработать программу на языке Си....

Запись всех повторяющихся слов в новый массив слов - C++
компилируется без ошибок, запускаю консоль после 13 строчки, а именно ввода количества слов, программа где-то вылетает, думал на 15 что-то...

Использование библиотеки STL , контейнер string. Дан массив слов.Надо удалить все цифры из слов - C++
#include &quot;StdAfx.h&quot; #include &lt;string&gt; #include &lt;iostream&gt; #include &lt;algorithm&gt; using namespace std; int main() { string str...

Ввод слов в массив и подсчёт введённых слов - C++
как можно решить эту задачу:Напишите программу,использующую массив char и цикл для чтения по одному слову за раз до тех пор,пока не будет...

Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов) - C++
Написать программу, в которой с клавиатуры вводится строка символов. Подсчитать количество слов в строке, при условии, что в качестве...

4
Tay69
0 / 0 / 0
Регистрация: 17.05.2010
Сообщений: 8
11.12.2011, 17:55 #2
Цитата Сообщение от rmb Посмотреть сообщение
for(;c<b;c++) s2[d].at(c)=s1.at(c); // комиплятор ругается на эту строчку
ну дык же начального значения нет
0
rmb
1 / 1 / 0
Регистрация: 16.11.2011
Сообщений: 18
12.12.2011, 22:37  [ТС] #3
поменял на string s2={" "}; не помогло
0
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
13.12.2011, 00:41 #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
#include <iostream>
#include <vector>
#include <algorithm>
#include <sstream>
#include <iterator>
#include <string>
 
int main()
{
    std::string source( "qwe tr qrd asd tr" );
    std::vector < std::string > vec;
 
    std::istringstream ist( source );
    
    std::copy ( std::istream_iterator < std::string >( ist ),
                std::istream_iterator < std::string >(),
                std::inserter( vec, std::begin( vec ) ) );
 
    for ( auto it = std::begin( vec ); it != std::end( vec ); ++it )
        std::cout << *it << " - " << std::count( std::begin( vec ), std::end( vec ), *it ) << std::endl;
 
    return 0;
}
Добавлено через 2 минуты
Или так еще можно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <map>
#include <sstream>
#include <string>
 
int main()
{
    std::string source( "qwe tr qrd asd tr" ), temp;
    std::map < std::string, unsigned int > m;
 
    std::istringstream ist( source );
    while ( ist >> temp ) 
        m[ temp ]++;
 
    for ( std::map< std::string, unsigned int >::iterator it = m.begin(); it != m.end(); ++it )
        std::cout << it -> first << " - " << it -> second << std::endl;
 
    return 0;
}
1
rmb
1 / 1 / 0
Регистрация: 16.11.2011
Сообщений: 18
14.12.2011, 20:56  [ТС] #5
Цитата Сообщение от Mиxaил Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <vector>
#include <algorithm>
#include <sstream>
#include <iterator>
#include <string>
 
int main()
{
    std::string source( "qwe tr qrd asd tr" );
    std::vector < std::string > vec;
 
    std::istringstream ist( source );
    
    std::copy ( std::istream_iterator < std::string >( ist ),
                std::istream_iterator < std::string >(),
                std::inserter( vec, std::begin( vec ) ) );
 
    for ( auto it = std::begin( vec ); it != std::end( vec ); ++it )
        std::cout << *it << " - " << std::count( std::begin( vec ), std::end( vec ), *it ) << std::endl;
 
    return 0;
}
Добавлено через 2 минуты
Или так еще можно:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <map>
#include <sstream>
#include <string>
 
int main()
{
    std::string source( "qwe tr qrd asd tr" ), temp;
    std::map < std::string, unsigned int > m;
 
    std::istringstream ist( source );
    while ( ist >> temp ) 
        m[ temp ]++;
 
    for ( std::map< std::string, unsigned int >::iterator it = m.begin(); it != m.end(); ++it )
        std::cout << it -> first << " - " << it -> second << std::endl;
 
    return 0;
}
Михаил, не могли бы вы подробно описать что и как тут работает? я совсем не понимаю ничего
0
14.12.2011, 20:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2011, 20:56
Привет! Вот еще темы с ответами:

Массив слов - C++
Мне нужно сделать массив слов. char words = { &quot;lalala&quot;,&quot;loplpo&quot;}; как то так но вылазит оибка, так как массив получается двумерный. ...

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

Получить массив из слов - C++
Необходимо разработать функцию, которая будет возвращать массив слов, содержащихся в сообщении char** Words(char *s) Допустим...

Массив двойных слов C++ - C++
Есть массив двойных слов, подскажите пожалуйста что у него является младшим словом, а что старшим и как массив WORD перезаписать в массив...


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

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

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