Форум программистов, компьютерный форум, киберфорум
Наши страницы

Упорядочить в каждой строке текста слова в алфавитном порядке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задачка на C++ http://www.cyberforum.ru/cpp-beginners/thread5367.html
День Добрый. Такая ситуация, сижу на зачете, не могу решить простенькую задачку, помогите плз...вопрос моего допуска на экзамен :( **** По паре натуральных чисел n,m найти цифры которые имеются в...
C++ прооостенькая прожка) не изучал ни када С++,надо, но как то руки не доходят. помогите пожалуйста) :cray: Написать программу, которая проверяет, содержит ли массив два одинаковых элемента. Число элементов в массиве и... http://www.cyberforum.ru/cpp-beginners/thread5365.html
C++, Одномерный массив - разминка для мозгов C++
Есть следующая задачка: "Используйте одномерный массив для решения. Считать 100 чисел, каждый из которых между 1 и 10 включительно(подразумевается использование только int). После считывания каждого...
C++ Помогите,пожалуйста, с задачей! С++
Вводиться предложение ввиде строки. Слов в предложении разделяются между собой пробелом или запятой. Для решения задачи применять функции из библиотеки string.h. Напечатать все слова, которые...
C++ Вывести список простых чисел до введенного с клавиатуры значения http://www.cyberforum.ru/cpp-beginners/thread5310.html
Ребят помогите плз!В с++ ваще невтыкаю, еще в паскале шарю кое как а тут нифига(Вообщем оч простая прога: 1)Вводится с клавиатуры чилсо,и должно вывести все простые числа(ну которые делятся на 1 и...
C++ Помогите решить задачу, пожалуйста! Здравствуйте!!! Помогите решить задачу на с++ Вот такое условие: Армия расположена на островах, соединенных так, что имеется сообщение между любыми двумя островами. Найти все такие мосты,... подробнее

Показать сообщение отдельно
sasha45
0 / 0 / 0
Регистрация: 16.01.2008
Сообщений: 3

Упорядочить в каждой строке текста слова в алфавитном порядке - C++

16.01.2008, 23:55. Просмотров 1660. Ответов 6
Метки (Все метки)

Помогите пожалуйста. Очень срочно нужна помощь людей, знающих С. Нужно написать программу в которой:
Задан текст, содержащий произвольное количество строк, в котрых отдельные слова могу разделяться одним или несколькими пробелами и знаками пунктуации (перенос слов не используется). Сформировать новый текст, который является результатом следующего преобразования:упорядочить в каждой строке слова в алфавитном порядке.

В общем у меня написано все, но функция обработки не хочет работать. Посмотрите пожалуйста:
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
char **obrabotka(char **text, int n)
// n - кол-во строк в тексте. **text - введенный текст
{
    char **res;
    // переменная под результатchar **tmp;
    // для работы с исходным текстом
    int j;
    int k,l,z;
    struct words
    {
        char *p;      // указатель на первую букву слова
        int len;      // количество букв в слове
    }    words[80];
    memset(&words, '\0', sizeof(words));   // обнуляем p==NULL - элемент
    // не использовался
    tmp=text;
    for(j=0; j<n; j++);   // Идем по строкам текста
    {
        // и производим обработку отдельно каждой строки
        while((**tmp!='\0' && (k<80)))   // пока не конец строки
            // и в строке меньше 80 слов
        {
            if(words[k].p==NULL)
                *words[k].p=**tmp;
            switch (**tmp) // проверка на разделители
            {
            case ' ':
            case '.':
            case ',':
            case ';':
            case '\n':
            case '!':
            case '#':
            case '@':
            case '?':
            case '/':
            case '>':
            case '<':
            case ':':
            case '$':
            case '(':
            case ')':
            case '*':
            case '&':
            case '-':
            case '=':
            case '+':
                words[k].len=*tmp-words[k].p;  // разница между указателями - длина
// слова. tmp указывает на начало след. слова
// или на конец строки
                k++;          // переходим к след. слову
                break;
            }
            tmp++;
        }
        words[k].len=*tmp-words[k].p;
        printf(" %u слов найдено в строке \n", k+1);
        // Сортировка
        for(; k>0; k--)     // k - максимальное значение элементов массива
        {
            for(l=0; l<l; l++)
            {
                if(strncmp(words[l].p,words[l+1].p,MIN(words[l].len,words[l+1].len))>0)
                {
                    *tmp=words[j].p;
                    z=words[l].len;
                    //перестановка элемента
                    words[l].p=words[l+1].p;
                    words[l].len=words[l+1].len;
                    words[l+1].p=*tmp;
                    words[l+1].len=z;
                }
            }
        }
        res=(char**)calloc(strlen(*text)+1,1);    // выделение памяти под результат
        for(k=0,tmp=res; words[k].p!=NULL; k++);
        {
            while((words[k].len--)>0)
                **(tmp++)=*(words[k].p++);
            **(tmp++)=*(words[k].p)?*(words[k].p): ' ';
            //копируем оригинальный разделитель слов
        }
        **tmp='\0';
        // записываем конец строки
        return res;   // возвращаем результат}
    }
Программу нужно сдать завтра, а из-за этой функции она не хочет работать.
Помогите плиз разобраться где ошибка.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru