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

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

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

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

07.05.2009, 11:59. Просмотров 611. Ответов 7
Метки нет (Все метки)

В данном натуральном числе переставить цифры таким образом, чтобы образовалось наименьшее число, записанное этими же цифрами (Задача без Использования массивов)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2009, 11:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Cортировка цифр (C++):

Cортировка матриц - C++
Здраствуйте! Задание такое: отсортировать по возрастанию 1 рядок и 2 столбец матрицы. Так понимаю сначала программа выполняет 1 действие...

Cортировка Шелла - C++
надо перевести на метод шелла #include <iostream> #include <cstdlib> using namespace std; int main() { ...

Cортировка в файле - C++
Подскажите как можно сделать сортировку в файле по алфавиту.Если я записываю данные файл например у меня наименование товара я ввожу...

Cортировка массива. - C++
помогите с кодом, а то завтра надо уже сдать 1)При записи отсортированный массив у меня в файле записывается не через пробелы а...

Cортировка массива - C++
Здравствуйте! Существует задание: Дан массив n действительных чисел. Если исходный массив имеет равное количество положительных и...

Cортировка массива. - C++
Доброго вечера. представлен массив ,не четные элементы данного массива нужно поместить в другой массив( на самом деле нужно рассортировать...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
kirill29
2053 / 1216 / 55
Регистрация: 01.02.2009
Сообщений: 2,842
07.05.2009, 12:58 #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;
            
        }
0
B13
0 / 0 / 0
Регистрация: 07.05.2009
Сообщений: 23
07.05.2009, 13:05  [ТС] #3
это ты на Visual С++ написал

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

B13,Одна тема - одна задача.Создайте еще одну тему для обсуждения второй задачи. И назовите ее так,чтобы она отражала суть задачи.Спасибо.
0
kirill29
2053 / 1216 / 55
Регистрация: 01.02.2009
Сообщений: 2,842
07.05.2009, 13:44 #7
Точно. Сразу не посмотрел. С++ не изучал, поэтому засорять тему не буду.
0
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
07.05.2009, 14:02 #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;
};
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.05.2009, 14:02
Привет! Вот еще темы с ответами:

Cортировка двусвязного списка - C++
Ну, в общем задание в названии. Нужно отсортировать двусвязный список, методом пузырька. Сортировку-то я эту знаю. Но вот проблема, я не...

Cортировка методом Шелла - C++
Нужно выполнить сортировку 5-видов, 4 нормально работают, а 5 (методом Шелла) не работает. Которые работают, они закоменчены) помогите...

Cортировка динамической матрицы - C++
Отсортировать каждую строку динамической матрицы по возрастанию и вывести новую матрицу с упорядоченными строками Помогите...не...

Cортировка записей в массиве - C++
(Я знаю что на форуме уйма таких заданий, но они не дали мне ответ) Доброго времени суток, что не так с моей сортировкой? Я вроде...


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

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

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