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

Упорядочить в каждой строке текста слова в алфавитном порядке - 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
17.01.2008, 07:47  [ТС]
Я извиняюсь за вышенаписанное хамство. Простите пожалуйста, просто времени нет, программа не работает, а сдавать уже сегодня надо((. Пожалуйста помогите найти ошибку в функции:
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
89
90
91
92
93
94
95
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