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

Класс Sentence и сортировка строки по алфавиту

11.06.2013, 12:07. Показов 590. Ответов 0
Метки нет (Все метки)

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
86
87
88
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream.h>
 
class Sentence {
    public:
        char *str;
        Sentence(char *p);
        char* sort();
        char* getWord(int i, char *w);
        int getWordsCount();
        ~Sentence() {
             delete []str;
        }
};
 
void main() {
    clrscr();
    char a[1024];
    cout << "Введите предложение" << endl;
    gets(a);
    Sentence *s;
    s = new Sentence(a);
    int len = s->getWordsCount();
    cout << "Количество слов в строке: " << len << endl;
    cout << s->sort();
    getch();
}
 
Sentence::Sentence(char *p) {  
    str = strdup(p);    
}
 
int Sentence::getWordsCount() {   
    int sum = 0;
    char tmp[256];
    char *buf = this->str;
    while(sscanf(buf,"%s",tmp) ==1) {
        buf = strstr(buf,tmp) + strlen(tmp);
        sum++;
    }
    return sum;
}
 
char* Sentence::getWord(int i, char *w) {    //char*
    char tmp[256];
    char *r;
    char *x = this->str;
    while(sscanf(x,"%s",tmp)==1 && i) {
        x = strstr(x,tmp) + strlen(tmp);
        i--;
        r = x;
//      while(*r==' ') {r+1;}
    }
    if (i==0) {
        strcpy(w,tmp);
        return r;
    } else
         return NULL;
}
 
char* Sentence::sort() {
    int count = this->getWordsCount();
    char result[256];
    for (int i=0; i<count; i++) {
        for (int j=i; j<count-1; j++) {
            char A[256];
            char B[256];
            char *a = getWord(j,A);
            char *b = getWord(j+1,B);
            if ( strcmp( A,B ) > 0  ) {
                char s1[256];
                char s2[256];
                strncpy(s1,this->str,b-str);
                s1[b-str] = 0;
                strcpy(s2,b+strlen(B)); //+B. . .b+
                sprintf(this->str,"%s%s%s",s1,A,s2);
 
                strncpy(s1,this->str,a-str);
                s1[a-str] = 0;
                strcpy(s2,a+strlen(A));     //a+ // /+A
                sprintf(this->str,"%s%s%s",s1,B,s2);
            }
        }
    }
    return this->str;
}
Вообщем имеется класс Sentence, который может выводить количество слов введенного предложения + сортировка по алфавиту строки.
Проблема в том что, сортировка производится неправильно и программа работает некорректно (во время ввода предложения - чёрный экран и приходится нажимать CTR+BREAK)
Помогите, если кто сможет!!

Добавлено через 15 часов 55 минут
Всё еще нужна помощь((
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2013, 12:07
Ответы с готовыми решениями:

Сортировка строки по алфавиту
Здравствуйте, нужно отсортировать строку по алфавиту. Подскажите, как это реализовать? Есть массив...

Сортировка строки по алфавиту
Написала программу только по устранению лишних пробелов, но не могу сообразить как вывести слова в...

Сортировка слов из строки по алфавиту
Пользователь вводит строку в программу, и ему выводит на экран все слова с новой строчки, в...

Сортировка символов строки по алфавиту
Здравствуйте Форумчане! Вопрос детский, но никак не могу его решить. Есть 3 чекбокса, событие...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.06.2013, 12:07
Помогаю со студенческими работами здесь

Строки: сортировка символов по алфавиту
Прошу, не оставьте без внимания! Дана строка текста. Известно, что в ней есть один элемент...

Сортировка строки по алфавиту в классе String
Здравствуйте! Создал класс Stroka: #include &lt;iostream&gt; #include &lt;string&gt; using namespace std;...

Сортировка массивов (Сортировка слов по алфавиту)
Объясните мне сортировку слов по алфавиту .Сравнивать целиком слова нельзя ?Есть ли какой нибудь...

Сортировка в struct по алфавиту. Сортировка в файле
Допустим вот такая вот структура struct Art_space { ...

Sentence. Записать число прописью
Once upon a time in a land far far away, inhabited only by math students, Iva and Vedran were...

Сортировка по алфавиту
Нужно ввести в программу данные о футболисте, отсортировать их по фамилии футболиста(т.е. первой...


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

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

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