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

В данном натуральном числе переставить цифры таким образом, чтобы образовалось наименьшее число - C++

Восстановить пароль Регистрация
 
Искринний
 Аватар для Искринний
2 / 2 / 0
Регистрация: 02.02.2012
Сообщений: 36
13.01.2013, 14:00     В данном натуральном числе переставить цифры таким образом, чтобы образовалось наименьшее число #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
#include <iostream> 
#include <cstdlib>
 
using namespace std; 
 
int main() 
{ 
    int n; 
    cout << "n? "; 
    cin >> n; 
    int d[10]={0}; 
    do 
    { 
        d[n%10]++; 
        n/=10; 
    } 
    while (n!=0); 
    if (d[0]!=0) { 
        for (int c = 1; c < 10 && n == 0; ++c) 
        { 
            if (d[c]!=0) 
            { 
                d[c]--; 
                n=c; 
            } 
        } 
    } 
    for (int c = 0; c < 10; ++c) { 
        while (d[c] != 0) { 
            n*= 10; 
            n+= c; 
            d[c]--; 
        } 
    } 
    cout << "result: " << n << endl; 
    system("pause");
    return 0; 
}
Или помогите упростить этот код до вида написаного первокурсником.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2013, 14:00     В данном натуральном числе переставить цифры таким образом, чтобы образовалось наименьшее число
Посмотрите здесь:

C++ Дано натуральное трехзначное число n. Переставить его цифры так, чтобы образовалось максимальное число, записанное теми же цифрами.
В матрице M x N переставить строки таким образом, чтобы... C++
Перестановка цифр в числе таким образом, чтобы получить наименьшее число записанное этими же цифрами C++
C++ Определить количество и сумму цифр в введенном натуральном числе. Введенное натуральное число представляется как единственное число, расположив цифры
В данном натуральном числе переставить цифры таким образом, чтобы образовалось наименьшее число, записанное этими цифрами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ArtVgd
 Аватар для ArtVgd
1 / 1 / 0
Регистрация: 13.11.2012
Сообщений: 23
13.01.2013, 14:02     В данном натуральном числе переставить цифры таким образом, чтобы образовалось наименьшее число #2
Цитата Сообщение от Искринний Посмотреть сообщение
Или помогите упростить этот код до вида написаного первокурсником.
А что, этот код не похож на написанный первокурсником? В принципе, здесь ничего такого нет.. супер-крутого)
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
379 / 225 / 2
Регистрация: 17.12.2011
Сообщений: 816
Записей в блоге: 1
13.01.2013, 14:02     В данном натуральном числе переставить цифры таким образом, чтобы образовалось наименьшее число #3
Что вам непонятно в коде?
Искринний
 Аватар для Искринний
2 / 2 / 0
Регистрация: 02.02.2012
Сообщений: 36
13.01.2013, 14:17  [ТС]     В данном натуральном числе переставить цифры таким образом, чтобы образовалось наименьшее число #4
не понимаю d[10%10]++; и d[c]--;
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
379 / 225 / 2
Регистрация: 17.12.2011
Сообщений: 816
Записей в блоге: 1
13.01.2013, 14:18     В данном натуральном числе переставить цифры таким образом, чтобы образовалось наименьшее число #5
% - деление с остатком. d[c]-- - Уменьшение значение с-го элемента массива.
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
13.01.2013, 17:53     В данном натуральном числе переставить цифры таким образом, чтобы образовалось наименьшее число #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
#include <iostream> 
 
int main() 
{ 
    int n, count = 0, i, j, temp; 
    int array[10];  
 
    std::cout << "Inter a number " << std::endl;
    std::cin >> n; 
 
    while(n) 
    { 
        array[count++] = n % 10; 
        n /= 10; 
    } 
 
    for ( i = 0; i < count - 1; ++i) 
        for ( j = 0; j < count - 1; ++j) 
            if(array[j] > array[j+1]) 
            {  
                temp = array[j]; 
                array[j] = array[j+1]; 
                array[j+1] = temp; 
            } 
 
 for ( i = 0; i < count; ++i) 
     std::cout << array[i]; 
 std::cout << std::endl; 
}
Yandex
Объявления
13.01.2013, 17:53     В данном натуральном числе переставить цифры таким образом, чтобы образовалось наименьшее число
Ответ Создать тему
Опции темы

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