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

Cортировка цифр - C++

Восстановить пароль Регистрация
 
B13
0 / 0 / 0
Регистрация: 07.05.2009
Сообщений: 23
07.05.2009, 11:59     Cортировка цифр #1
В данном натуральном числе переставить цифры таким образом, чтобы образовалось наименьшее число, записанное этими же цифрами (Задача без Использования массивов)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kirill29
 Аватар для kirill29
2038 / 1201 / 53
Регистрация: 01.02.2009
Сообщений: 2,842
07.05.2009, 12:58     Cортировка цифр #2
Для начала тебе нужно определить цифры в твоем числе. Допустим, что мы работаем с пятизначным числом. Код выглядит примерно так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
static void Main(string[] args)
        {
            Console.WriteLine("Ввести число");
            int x = int.Parse(Console.ReadLine());
            int a, b, c, d, e;
            a = x / 10000;
            b = x / 1000 % 10;
            c = x / 100 % 10;
            d = x / 10 % 10;
            e = x % 10;
            
        }
B13
0 / 0 / 0
Регистрация: 07.05.2009
Сообщений: 23
07.05.2009, 13:05  [ТС]     Cортировка цифр #3
это ты на Visual С++ написал

Добавлено через 3 минуты 35 секунд
это задача по структурному программированию мне её надо на Visual С++ (Windows Application)
kirill29
 Аватар для kirill29
2038 / 1201 / 53
Регистрация: 01.02.2009
Сообщений: 2,842
07.05.2009, 13:15     Cортировка цифр #4
Эта часть кода на C#.
B13
0 / 0 / 0
Регистрация: 07.05.2009
Сообщений: 23
07.05.2009, 13:36  [ТС]     Cортировка цифр #5
а мне надо Visual C++
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
07.05.2009, 13:40     Cортировка цифр #6
kirill29, это раздел C/C++.

B13,Одна тема - одна задача.Создайте еще одну тему для обсуждения второй задачи. И назовите ее так,чтобы она отражала суть задачи.Спасибо.
kirill29
 Аватар для kirill29
2038 / 1201 / 53
Регистрация: 01.02.2009
Сообщений: 2,842
07.05.2009, 13:44     Cортировка цифр #7
Точно. Сразу не посмотрел. С++ не изучал, поэтому засорять тему не буду.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2009, 14:02     Cортировка цифр
Еще ссылки по теме:

Cортировка массива C++
Cортировка строк в алфавитном порядке C++
Cортировка каталога книг по автору C++
C++ Cортировка записей в массиве
C++ Cортировка файла по заданному полю

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

Или воспользуйтесь поиском по форуму:
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
07.05.2009, 14:02     Cортировка цифр #8
Код работает,оптимизацию оставляю тебе.
Код
#include <stdio.h>
// возвращает p-ю степень 10
int dpow(int p ) {
    int a = 1;
    for(int i=0;i<p;i++)
        a*=10;
    return a;
};
//возвращает количество цифр в числе a
int NumberOfDigits(int a) { 
    int i=1;//одна то точно есть
    while( (a/=10) > 0 ) //делим на 10 пока цифры не кончатся
        i++;
    return i;
};
//получает i-ю цифру справа в числе a
int GetDigit(int a,int i) {
    while(i>0) { 
        a/=10;
        i--;
    };
    return a % 10;
};
//меняет местами i-ю и j-ю
void SwapDigits(int *a,int i,int j ) {
    int d1 = GetDigit(*a,i);
    int d2 = GetDigit(*a,j);
    *a-= d1*dpow(i);
    *a-=d2 * dpow(j);
    *a+= d1*dpow(j);
    *a+= d2*dpow(i);
};
//сортирует ( пузырьком:)  )
void Sort(int *a) {
    int n = NumberOfDigits(*a);
    for(int i=0;i<n;i++) {
        for(int j=i+1;j<n;j++) {
            if( GetDigit(*a,i) < GetDigit(*a,j) )
                SwapDigits(a,i,j);
        };
    };
};
//просто тест.
int main() {
    int a =958321345;
    Sort(&a);
    printf("%d",a);
    return 0;
};
Yandex
Объявления
07.05.2009, 14:02     Cортировка цифр
Ответ Создать тему
Опции темы

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