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

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

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

Сортировка - C++

29.12.2010, 17:55. Просмотров 582. Ответов 16
Метки нет (Все метки)

Нужна помощь с этой задачей:
Дано произвольное целое положительное число K (K<10^9). Вывести цифры этого числа в порядке неубывания (например, 546085 =>045568). Процедуры и функции работы со строками не использовать.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2010, 17:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка (C++):

Сортировка Шелла. Написал программу, не могу понять, почему сортировка не выполняется - C++
Программа создает динамический массив с рандомным заполнением. Дальше выбор сортировок, пузырьком или сортировка Шелла. Вот она то и не...

Сортировка слиянием. В каком куске кода происходит сортировка и каким именно образом? - C++
Помогите, пожалуйста, разобраться. Подскажите в каком куске кода происходит сортировка и каким именно образом? #include &lt;iostream&gt; ...

Быстрая сортировка(сортировка Хоара). Отсортировать фрагмент массива - C++
Мне нужно отсортировать фрагмент массива, расположенный между первым и последним отрицательным элементом. Немогу понять как устоновить...

Быстрая сортировка (сортировка Хоара) для связных списков - C++
есть у кого готовый алгоритм? или подскажите как реализовать

Сортировка Шелла и пирамидальная сортировка для символов - C++
Здраствуйте, можете пожалуйста привести пример сортировок шелла и пиромидальной сортировки для символов, а то ничего не могу ...

Сортировка вектора по полю(Сортировка вставками) - C++
Здравствуйте! Нужно написать сортировку вектора по полю weight класса tomato. Вот класс: #pragma once #include &lt;iostream&gt; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Алексaндр
131 / 108 / 5
Регистрация: 04.12.2010
Сообщений: 313
29.12.2010, 18:23 #2
Не понял... Строки не использовать???
0
Sharkerator
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 16
29.12.2010, 18:29  [ТС] #3
Алексaндр, ну не использовать функции типа: strcpy(), strcat(), strcmp().
0
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
29.12.2010, 18:30 #4
http://codepad.org/2dVPMTud
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <vector>
#include <algorithm>
 
int main() {
    int n = 148450216;
    std::vector<int> v;
    while ( n ) v.push_back( n % 10 ), n /= 10;
    sort( v.begin(), v.end() );
    for( size_t i = 0; i < v.size(); ++i ) std::cout << v[ i ];
    std::cout << std::endl;
}
0
Sharkerator
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 16
29.12.2010, 18:34  [ТС] #5
outoftime, а в более простом для начинающего виде можно? Ну там с printf и без std, vector и прочим.
0
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
29.12.2010, 18:39 #6
(: все-ровно преподов надули, не смотря на то что строки запретили юзать (:

Добавлено через 36 секунд
Sharkerator, можно, но тогда будет больше кода (:

Добавлено через 1 минуту
Sharkerator, попроси кого-то другого, мне не охота писать некрасивый код
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
29.12.2010, 18:41 #7
Вот, функции и процедуры для работы со строками не использовал, все ручками-с Проверки на корректность вводимого числа нет:
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
#include <stdio.h>
#include <stdlib.h>
 
int cmp(const void* a, const void* b)
{
    char A = *(char*) a;
    char B = *(char*) b;
    if(A < B)
        return 1;
    if(B < A)
        return -1;
    return 0;
}
 
int main()
{
    char buf[9];
    size_t k = 0;
    unsigned long long num;
    printf("Input num: ");
    scanf("%Lu", &num);
    
    if(num >= 1000000000)
    {
        fprintf(stderr, "Illegal number: %Lu\n", num);
        exit(1);
    }
    
    while(num)
    {
        buf[k++] = num % 10 + '0';
        num /= 10;
    }
    
    qsort(buf, k, sizeof(char), cmp);
    
    while(k)
        putchar(buf[--k]);
        
    putchar('\n');
        
    
    exit(0);
}
UPD, добавил проверку числа
0
Sharkerator
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 16
29.12.2010, 18:44  [ТС] #8
outoftime, мне главное понять что написано, а красота и размер сейчас не так важны.


Nameless One, вот тут уже больше понятного, но можно как-нибудь сделать, не используя подпрограмму?
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
29.12.2010, 18:50 #9
Sharkerator, можно, нужно просто самому написать сортировку. Как это сделать - смотрим в этой теме.

Цитата Сообщение от Sharkerator Посмотреть сообщение
можно как-нибудь сделать, не используя подпрограмму?
Кстати, а чем, собственно, подпрограммы не угодили?...
0
Sharkerator
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 16
29.12.2010, 18:55  [ТС] #10
Nameless One, препод заподозрит неладное, что я решил задачу, да еще и с помощью подпрограммы.
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
29.12.2010, 18:58 #11
Sharkerator, так в условии задачи ничего не сказано про то, что нельзя их использовать. А то, что не запрещено - разрешено
0
Sharkerator
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 16
29.12.2010, 19:02  [ТС] #12
Nameless One, да не в этом дело. Просто я в подпрограммах не разбираюсь и не смогу объяснить преподу как я решил задачу. И он скажет, что я нагло списал.
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
29.12.2010, 19:07 #13
А ты разберись
0
Sharkerator
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 16
29.12.2010, 19:10  [ТС] #14
Nameless One, к сожалению, пока моего мозга на это не хватает.
0
asics
Freelance
Эксперт С++
2847 / 1784 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
29.12.2010, 19:19 #15
Вот без функций
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 <stdio.h>
#include <malloc.h>
 
int main()
{
    int N, _N, *a, cnt = 0, k = 0;
    scanf("%d", &N);
 
    _N = N;
    while(_N)
    {
        int tmp = _N % 10;
        ++cnt;
        _N /= 10;
    }
 
    a = (int *)malloc(sizeof(int) * cnt);
    _N = N;
    while(_N)
    {
        a[k++] = _N % 10;
        _N /= 10;
    }
 
    for(int i = 0; i < cnt; ++i)
    {
        for(int j = i; j < cnt - 1; ++j)
        {
            if(a[j] > a[j + 1])
            {
                int tmp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = tmp;
            }
        }
    }
 
    for(int i = 0; i < cnt; ++i)
        printf("%d", a[i]);
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2010, 19:19
Привет! Вот еще темы с ответами:

2 сортировки: пирамидальная сортировка и сортировка слиянием - C++
Реализовать два улучшенных алгоритма сортировки. Для каждого алгоритма вычислить показатель качества сортировки (количество операций, т.е....

Быстрая сортировка (сортировка методом Хоара) - C++
Ввести массив x1,x2,...,x20 в диапазоне . Требуется расположить отрицательные элементы в порядке убывания. Вывести массивы до и после...

C/C++ FAQ :: Быстрая сортировка (сортировка Хоара) - C++
Вопрос, скорее академический, по мотивам реализации. Вот в faq приведена реализация этого метода сортировки на C++. В коде есть следующий...

Сортировка Шелла и сортировка вставками - C++
Напишите программу для: 1)Сортировка вставкой 2)сортировка Шелла


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.12.2010, 19:19
Ответ Создать тему
Опции темы

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