4 / 4 / 0
Регистрация: 13.12.2012
Сообщений: 20
1

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

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

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

вот сам код (без функции):
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.01.2013, 19:33
Ответы с готовыми решениями:

Функция: принять массив слов, вернуть массив из групп этих слов
Напишите функцию на языке PHP, которая принимает массив слов, а возвращает массив из групп этих...

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

Дана строка, состоящая из слов, разделенных пробелом. Вывести строку, состоящую из этих же слов, расположенных в алфавитном порядке
Дана строка, состоящая из слов, разделенных пробелом. Вывести строку, состоящую из этих же слов,...

Текстовый файл. Вывести номер строки в которой больше всего слов и кол-во этих слов
в текстовом файле в нескольких строках записаны слова через запятую, вывести номер строки в которой...

2
24 / 24 / 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
4 / 4 / 0
Регистрация: 13.12.2012
Сообщений: 20
03.01.2013, 09:43  [ТС] 3
а как вставить в код?)
я не могу понять, как свести с вводом
0
03.01.2013, 09:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.01.2013, 09:43
Помогаю со студенческими работами здесь

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

Имеем строку, состоящую из слов, разделенных пробелами. Определить количество слов, содержащих ровно три буквы
Имеем строку, состоящую из слов, разделенных пробелами. Определить количество слов, содержащих...

По заданной строке получить массив слов, входящих в эту строку. Разделителями слов считаются пробелы
По заданной строке получить массив слов, входящих в эту строку. Разделителями слов считаются...

По заданной строке получить массив слов, входящих в эту строку. Разделителями слов считаются пробелы
По заданной строке получить массив слов, входящих в эту строку. Разделителями слов считаются...


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

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

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