Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
White_volf
4 / 4 / 0
Регистрация: 13.12.2012
Сообщений: 20
1

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

02.01.2013, 19:33. Просмотров 1071. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2013, 19:33
Ответы с готовыми решениями:

Создать список слов из файла и подсчитать количество повторения этих слов
Здравствуйте. Помогите написать такую программу: в файле храниться текст. Нужно...

Дана строка из 20 слов. Сформировать строку, составленную из последних букв всех слов исходной строки
Задача: дана строка из 20 слов (или любого другого числа). Сформировать строку,...

Дан массив слов. Определить количество слов массива, которые не являются «перевертышем».
Дан массив слов. Определить количество слов массива, которые не являются...

Определение слов заканчивающихся на слог 'va' и длину этих слов
Здрасьте! Подскажите, пожалуйста. Нужно написать программу где вводится строка...

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

2
booker
23 / 23 / 5
Регистрация: 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;
}
1
White_volf
4 / 4 / 0
Регистрация: 13.12.2012
Сообщений: 20
03.01.2013, 09:43  [ТС] 3
а как вставить в код?)
я не могу понять, как свести с вводом
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2013, 09:43

Найти количество слов в словаре, если известно количество страниц, количество слов на странице и средняя длина слова
помогите с программой, которая выполняет эти расчеты: В русско-английском...

Функция формирующая из строки массив слов
C++ .Описать процедуру SplitStr(S,W,N), которая формирует по данной строке S...

Дан текст, найти количество слов и количество слов, у которых первый и последний символ совпадают
Помогите пожалуйста, выполнить задание. Дан текст из N символов. Группы...


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

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

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