Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
2 / 2 / 1
Регистрация: 18.11.2015
Сообщений: 41
1

Дана строка, вывести различные слова и число их вхождений

09.05.2016, 09:50. Показов 596. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите,пожалуйста.
Нашел код рабочей программы,но тут очень много непонятного для меня,нужно написать использую string,iostream,cctype
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
 
int main()
{
    char string[200];
    char *words[101];
    int i = 0, k = 0, n = 0;
 
    memset(words, 0, 100 * sizeof(void *)); //Обнуляем массив слов.
 
    printf("Enter string\n");
    gets(string);
 
    words[i++] = strtok(string, " ");        // Разделяем строку на слова
    while(words[i++] = strtok(NULL, " "));
 
    for(i = 0; i < 100; i++)
    {
        if(!words[i])                        // Ужасно написано, но оно работает!
            continue;
 
        for(k = i + 1, n = 1; k < 100; k++)
        {
            if(!words[k])
                continue;
 
            if(strcmp(words[i], words[k]) == 0)//Если такое слово уже есть
            {
                n++;                           //То запоминаем этот факт
                words[k] = 0;                  //И вычеркиваем это слово навсегда.
            }
        }
        
        printf("%s - %i\n", words[i], n);      //Печатаем красивый результат
    }
 
    system("pause");                           //можно удалить
 
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2016, 09:50
Ответы с готовыми решениями:

Вывести различные слова, указав для каждого из них число вхождений в последовательность
Дана последовательность до 30 слов в каждом из которых от 1 до 5 символов, между словами - пробел...

Вывести все различные слова, указав для каждого из них число его вхождений в последовательность
Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных...

Дана строка предложение и слово. Определить число вхождений заданного слова в предложение
С++ Дана строка предложение и слово. Определить число вхождений заданного слова в предложение. При...

Дана строка предложение и слово. Определить число вхождений заданного слова в предложение
Дана строка предложение и слово. Определить число вхождений заданного слова в предложение.

3
161 / 122 / 85
Регистрация: 16.10.2013
Сообщений: 1,738
09.05.2016, 11:18 2
Tokiwartoot,
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
#include <iostream>
#include <string>
#include <map>
using namespace std;
 
 
int main(void)
{   
    string s;
    map<string,int> words;  
    map<string,int>::iterator it;
    int pos;
    getline(cin,s);
 
    
    
    while((pos = s.find(" ")) != string::npos)
    {
        string tmp = s.substr(0,pos);
        s.erase(0,pos + 1);
        if(tmp.size() > 0)
            if(words.find(tmp) == words.end())
                words[tmp] = 1;
            else 
                words[tmp] ++;
    }
    for(it = words.begin(); it!=words.end(); it++)
        cout<<it->first<<" -> "<<it->second<<endl;
 
    
 
    system("pause");
    return 0;
}
1
2 / 2 / 1
Регистрация: 18.11.2015
Сообщений: 41
09.05.2016, 12:58  [ТС] 3
dimabubyakin, спасибо,но map использовать нельзя
0
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
09.05.2016, 15:35 4
Tokiwartoot, вот программа. Слова разделяются одиночными пробелами и знаками препинания.

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
61
62
63
64
65
#include <iostream>
#include <cmath>
#include <fstream>
 
using namespace std;
 
int main()
{
int k, t, p = 0;
struct words
{
string x;
} res[100];
string a, b;
cout << "Введите строку из слов:" << endl;
getline(cin, a);
a = a + ' ';
k = 0;
for (int i = 0; i < a.length(); i++)
{
k++;
if (isalpha(a[i])) b += a[i]; 
if (a[i] == ' ') 
{
k--;
res[p].x = b; //Помещаем слова в массив
p++;
k = 0;
b = "";
}
}
//Начало сортировки
for (int i = 0; i < p; i++) 
{                          
for (int j = p - 1; j > i; j--) 
{                               
if (res[j].x <= res[j-1].x)    
{
swap(res[j-1].x, res[j].x); 
}
}
}
//Конец сортировки
cout << "Обработанные слова:" << endl;
k = 0;
t = 0;
for (int i = t; i < p; i++)
{
if (res[i].x == res[i+1].x) 
{
k++;
}
else 
{
t = k;
k = 0;
if (t >= 0) 
{
cout << res[i].x << ": " << t + 1 << endl; //Выводим слова и их вхождения
}
}
}
system("pause"); 
return 0;   
}
0
09.05.2016, 15:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2016, 15:35
Помогаю со студенческими работами здесь

Найти в тексте все различные слова и число их вхождений
Нужна помощь. Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5...

Дана строка из слов и пробелов, и дана вторая строка это число. нужно вставить это число после 4 слова
дана строка из слов и пробелов, и дана вторая строка это число. нужно вставить это число после 4...

Напечатать различные слова предложения, указав для каждого из них число его вхождений
ПРИВЕТСТВУЮ ВСЕХ!!!! РЕБЯТА, ПОМОГИТЕ ПОЖАЛУЙСТА, самой времени не хватает:cry:, Напечатать...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru