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

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

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

Функция, получает строку слов и рзделителей, а на выходе имеет массив слов из строки и количество этих слов - C++

02.01.2013, 19:33. Просмотров 829. Ответов 2
Метки нет (Все метки)

мне нужна функция, которая во входе получает строку слов и рзделителей (" ", ",", ".", "_", """), а на выходе имеет массив слов из строки (в таком же порядке) и количество этих слов. а сам я не могу понять, как она действует.
помогите, плиз

вот сам код (без функции):
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
#include <string.h>
#include <iostream>
int i,ii,n;
char str[30];
using namespace std;
/*
 zdes' dolzhna but' funkciya
vhod: str[30]
vuhod: n (col-vo slov), massiv slov
*/
int main()
{cout<<"vvedite stroku\n";
cin.getline(str,30);
            for (ii=0; ii==n; ii++) {
                 for (i=1; i==n; i++)
        { o=strncmp(words[ii], words[i]);
    if (o<=0) t++;
      }
      if (t==0)
      cout<<"slova stoyat po poryadky"; 
      else
      cout<<"!!!";
      cin>>t; 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2013, 19:33     Функция, получает строку слов и рзделителей, а на выходе имеет массив слов из строки и количество этих слов
Посмотрите здесь:

Ввод слов в массив и подсчёт введённых слов C++
C++ Дан массив слов. Определить количество слов массива, которые не являются «перевертышем».
C++ Запись всех повторяющихся слов в новый массив слов
C++ Дана строка, состоящая из русских слов. Найти количество слов, которые содержат ровно три буквы «А»
Дан текст, найти количество слов и количество слов, у которых первый и последний символ совпадают C++
C++ Дано строку. Найти количество слов строки и напечатать их в виде списка
C++ Создать список слов из файла и подсчитать количество повторения этих слов
Строка, введенная пользователем, состоит из слов, разделенных запятой. Подсчитать и вывести на экран количество введенных слов C++
C++ Использование библиотеки STL , контейнер string. Дан массив слов.Надо удалить все цифры из слов
C++ Обработка слов строки без массива слов
C++ Создать список из слов. Подсчитать количество слов, совпадающих с последним словом
Стек: создать список из слов, подсчитать количество слов, совпадающих с последним словом C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
02.01.2013, 20:43     Функция, получает строку слов и рзделителей, а на выходе имеет массив слов из строки и количество этих слов #2
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include<iostream>
 
using namespace std;
 
int numb_words(char*);// функция вычисления кол-ва слов в строке
bool isrusalpha(char*);// isalpha() для кирилицы
 
int main()
 
{
    setlocale(LC_CTYPE, "rus");
    char* text = {"Эта программа считает слова и записывает их в массив"};
    char** arrwords=new char*[numb_words(text)];
    int w=0; //счётчик слов
    int l=0; //счётчик букв в слове
    bool newword = false;
    
    //выделяем память для слов 
    for(int n=0;n<=strlen(text);n++)
    {
        if(isrusalpha(text+n)) {l++;newword=true;}
        
        if((!isrusalpha(text+n)||n==(strlen(text))-1)&&newword)
        {
        //cout<<"new word "<<w<<" "<<"letters " <<l<<endl;
        arrwords[w]=new char[l];
        l=0;w++;newword=false;}
    }
 
    //записываем слова в строки массива указателей на строки
    l=0;
    w=0;
    
    for(int n=0;n<=strlen(text);n++)
    {
        if(isrusalpha(text+n)) 
        {
        *(*(arrwords+w)+(l++))=*(text+n);
        newword=true;
        }
        if((!isrusalpha(text+n)||n==(strlen(text))-1)&&newword)
        {
        *(*(arrwords+w)+l)='\0';
        l=0;w++;newword=false;
        }
    }
            
    
    for(int n=0;n<numb_words(text);n++)// выводим массив
    cout<<arrwords[n]<<endl;
    
    delete []arrwords;
    
    cout<<endl<<"Всего слов: "<<numb_words(text)<<endl;
        
    system("pause");
 
    return 0;
}
 
int numb_words(char*str)
    {
        bool newword = false;
        if (strlen(str)==0)
            return 0;
        int count_words;
        count_words=0;
        for(int n=0;n<strlen(str);n++)
        {
        if(isrusalpha(str+n)) {newword=true;}
        
        if((!isrusalpha(str+n)||n==(strlen(str))-1)&&newword)
        {
        count_words++;newword=false;}
        }
        return count_words;
    }
 
bool isrusalpha(char* symb)
{
    if (((*symb)>(-65)&&*symb<0)||(*symb==(-88)||*symb==(-72))) return true;
    else
        if ((*symb>64&&*symb<91)||(*symb>96&&*symb<122)) return true;
    else return false;
}
White_volf
4 / 4 / 0
Регистрация: 13.12.2012
Сообщений: 20
03.01.2013, 09:43  [ТС]     Функция, получает строку слов и рзделителей, а на выходе имеет массив слов из строки и количество этих слов #3
а как вставить в код?)
я не могу понять, как свести с вводом
Yandex
Объявления
03.01.2013, 09:43     Функция, получает строку слов и рзделителей, а на выходе имеет массив слов из строки и количество этих слов
Ответ Создать тему
Опции темы

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