Форум программистов, компьютерный форум CyberForum.ru

Сортировка строки по длине слова - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.96
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
24.03.2011, 17:02     Сортировка строки по длине слова #1
Сабж. Здравствуйте. Есть код, который вроде логически построен правильно, но он не работает. Уже не знаю как быть. Подскажите пожалуйста в чем проблема.

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
#include <cstdlib>
#include <iostream>
#include <cstring>
#include <cctype>
 
using namespace std;
 
int main(int argc, char *argv[])
{ 
    char str[] = "Etu stroku nado otsortirovati po dlinne slov";
    char * pch;
    char *list[100];
    int s=0;   
      pch = strtok (str," ,.-");
    while (pch != NULL)
    {      
      list[s] = pch;
      pch = strtok (NULL, " ,.-");      
      s++;
    }  
 
    int i,j;
   
    char S1[20];
    int min_i;
 
    for (i=0; i<s-1; i++)
    {
       min_i=i;       
       for (j=i+1; j<s; j++)
       {
          if (strlen(list[j]) < strlen(list[min_i]))          
             min_i=j;           
       }
       cout << list[min_i] << "\n";         
    }   
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
24.03.2011, 17:45     Сортировка строки по длине слова #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
#include <iostream>
#include <cstring>
#include <cstdio>
 
struct word_t{
  char *_word;
  size_t length;
};
 
#define DELIM " \t\n,.:;?!"
 
void _swap(word_t &w1, word_t &w2){
  word_t tmp = w1;
  w1 = w2;
  w2 = tmp;
}
 
int main()
{
  char str[BUFSIZ] = "Etu stroku nado otsortirovati po dlinne slov", *p;
  word_t words[BUFSIZ];
  int i = 0, j;
  for(p = strtok(str, DELIM); p; p = strtok(NULL, DELIM)){
    words[i]._word = new char[strlen(p) + 1];
    strcpy(words[i]._word, p);
    words[i++].length = strlen(p);
  }
  for(int i_ = 0; i_ < i; ++i_)
    for(j = i_; j < i; ++j)
      if(words[i_].length > words[j].length)
        _swap(words[i_], words[j]);
  for(j = 0; j < i; ++j)
    std::cout << words[j]._word << '-' << words[j].length << '\n';
  for(j = 0; j < i; ++j)
    delete[] words[j]._word;
  return 0;
}
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
24.03.2011, 17:47     Сортировка строки по длине слова #3
А удалять за собой кто будет?
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
24.03.2011, 17:49     Сортировка строки по длине слова #4
Цитата Сообщение от Deviaphan Посмотреть сообщение
А удалять за собой кто будет?
О, пардон, все время забываю.
Sylar
 Аватар для Sylar
2 / 2 / 0
Регистрация: 06.06.2012
Сообщений: 119
23.04.2014, 16:59     Сортировка строки по длине слова #5
http://awmdgroup.wikidot.com/phppractice:sortarray
Yandex
Объявления
23.04.2014, 16:59     Сортировка строки по длине слова
Ответ Создать тему
Опции темы

Текущее время: 05:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru