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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
almazka
0 / 0 / 0
Регистрация: 20.02.2014
Сообщений: 30
#1

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

20.03.2014, 18:27. Просмотров 674. Ответов 3
Метки нет (Все метки)

Ввести строку. На печать выдать новую строку в которой все слова расположены в порядке возрастания длин слов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2014, 18:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка слов по их длине (C++):

Сортировка слов в строке по длине слова - C++
Помогите пожалуйста с алгоритмом сортировки строки. Необходимо осуществить сортировку строки чтобы в начале строки располагалось слово...

Дан список слов различной длины. Составить программу упорядочения списка слов: По их длине; По алфавиту - C++
Очень срочно!!!!! Дан список слов различной длины. Составить программу упорядочения списка слов: По их длине; По алфавиту.

Сортировка по длине - C++
На вход подается некоторое количество векторов R2, векторов R3 и отрезков R3. Отсортировать и вывести их по возрастанию длин. Помогите,...

Сортировка рёбер по длине - C++
Ориентированный взвешенный граф задан перечнем дуг (ориентированных рёбер). Отсортировать эти дуги по возрастанию длин, сохранив (в...

Сортировка строки по длине слова - C++
Сабж. Здравствуйте. Есть код, который вроде логически построен правильно, но он не работает. Уже не знаю как быть. Подскажите пожалуйста в...

Сортировка строк по длине первого слова - C++
Добрый вечер формучане.Облазил весь нет как и этот форум но толком ничего не нашел.Собственно обращаюсь с просьбой решить эту задачку....

3
DiffEreD
1431 / 768 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
20.03.2014, 18:57 #2
Простой пример на С++11:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <iterator>
#include <string>
#include <set>
 
using std::string;
 
auto comparer = [](const string& x, const string& y)
{
   return x.size() < y.size();
};
 
using my_set = std::multiset<string, decltype(comparer)>;
using input = std::istream_iterator<string>;
 
int main()
{
   std::cout << "Enter words (Ctrl+Z to stop): >\n";
   my_set set {input(std::cin), input(), comparer };
   for (auto& i : set) std::cout << i << "\n";
 
   return 0;
0
jurok_85
241 / 225 / 78
Регистрация: 21.02.2013
Сообщений: 520
Завершенные тесты: 1
20.03.2014, 19:37 #3
еще один пример
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
#include <iostream>
#include <string.h>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(const char* c1, const char* c2)
{
    return strlen(c1) < strlen(c2);
}
int main()
{
    char str[100];
    cin.getline(str, 100);
    vector<char*> vec;
    char * pch;
    pch = strtok (str," ,.");
 
  while (pch != NULL)
  {
    vec.push_back(pch);
    pch = strtok (NULL, " ,.");
  }
  sort(vec.begin(), vec.end(), compare);
 
  for(vector<char*>::size_type i = 0; i!= vec.size(); i++)
  cout << vec[i] << endl;
  return 0;
}
0
MicM
822 / 480 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
20.03.2014, 20:29 #4
И я:
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
#include <iostream>
#include <cctype>
#include <cstring>
 
int NumbersOfWords (const char *str)
{
    int k = 0;
    int length = std::strlen(str);
    bool flag = false;
    for (int i=0; i<=length; i++)
    {
        if ((!std::isalpha(str[i]) || str[i]=='\0') && flag)
        {
            ++k;
            flag = false;
        }
        else if (std::isalpha(str[i]) && !flag)
            flag = true;
    }
    return k;
}
 
const int maxLength = 128;
 
struct Word
{
    int length;
    char str[maxLength];
};
 
int main()
{
    char str[maxLength]="", temp[maxLength];
    std::cin.get(str,maxLength);
    Word *mas = new Word[NumbersOfWords(str)];
    int length = std::strlen(str), tempLength;
    int i = 0, k = 0;
    while (i<length)
    {
        if (std::isalpha(str[i]))
        {
            tempLength = 0;
            std::strcpy (temp,"");
            while (i<length && std::isalpha(str[i]))
            {
                temp[tempLength] = str[i];
                ++tempLength;
                ++i;
            }
            temp[tempLength] = '\0';
            mas[k].length = tempLength;
            std::strcpy (mas[k].str, temp);
            ++k;
        }
        else ++i;
    }
    Word tmp;
    bool flag;
    do
    {
        flag = true;
        for (int i=0; i<k-1; i++)
        {
            if (mas[i].length > mas[i+1].length)
            {
                tmp = mas[i];
                mas[i] = mas[i+1];
                mas[i+1] = tmp;
                flag = false;
            }
        }
    }
    while (!flag);
    for (int i=0; i<k; i++)
        std::cout <<mas[i].str <<' ';
    std::cout <<'\n';
    delete [] mas;
    return 0;
}
0
20.03.2014, 20:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2014, 20:29
Привет! Вот еще темы с ответами:

Посимвольная обработка текстового файла: распределение всех слов по длине - C++
Вывести в файле распределение всех слов по длине (т.е. сколько в файле слов из одной буквы, из двух и т.д.). За слово считать цепочку...

Определить количество слов в тексте, и вывести слова, которые по длине меньше заданного числа - C++
Помогите написать прогу... Не работает..;) /*Дан текст, в котором слова разделяются пробелами, * в конце стоит точка. Определить...

Ввести строку и слово. Вывести количество слов в строке, имеющих длину, равную длине введенного слова. - C++
Как ввести строку и слово, чтобы вывести количество слов в строке, имеющих длину, равную длине введенного слова. Помогите плз.

Ввести строку и слово. Вывести количество слов в строке, имеющих длину, равную длине введенного слова. - C++
Ввести строку и слово. Вывести количество слов в строке, имеющих длину, равную длине введенного слова.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru