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

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

Восстановить пароль Регистрация
 
White_volf
4 / 4 / 0
Регистрация: 13.12.2012
Сообщений: 20
02.01.2013, 19:33     Функция, получает строку слов и рзделителей, а на выходе имеет массив слов из строки и количество этих слов #1
мне нужна функция, которая во входе получает строку слов и рзделителей (" ", ",", ".", "_", """), а на выходе имеет массив слов из строки (в таком же порядке) и количество этих слов. а сам я не могу понять, как она действует.
помогите, плиз

вот сам код (без функции):
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++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
booker
 Аватар для 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     Функция, получает строку слов и рзделителей, а на выходе имеет массив слов из строки и количество этих слов
Ответ Создать тему
Опции темы

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