((http://server.179.ru/olymp/2008/statements/g.html Условия задачи седьмого тура))
Возможное решение задачи: 1. Составить массив, в который занести все цифры числа. 2. Отсортировать этот массив по возрастанию. 3. Найти в этом массиве наименьшую ненулевую цифру, вывести ее. 4. Вывести все цифры, находящиеся левее нее в отсортированном массиве (это будут только нули). 5. Вывести все цифры, находящиеся правее нее в отсортированном массиве в порядке возрастания.
%%(email) #include<iostream>
using namespace std;
// Функция сортировки массива по возрастанию void sort(int A[], int size) { int t; for(int i=size-1;i>0;--i) { for(int j=1;j<=i;++j) { if(A[j-1]>A[j]) { t=A[j-1]; A[j-1]=A[j]; A[j]=t; } } } }
int main() { int n, i, j, size=0; int Digits[10]; // Массив для хранения цифр числа cin>>n; // Считали число
// Заполняем массив Digits цифрами числа n // Одновременно в size записываем количество цифр в n while(n>0) { Digits[size++]=n%10; n/=10; }
// Сортируем массив Digits sort(Digits,size);
// Ищем индекс первого ненулевого элемента в Digits i=0; while(Digits[i]==0) ++i;
// Выводим первый ненулевой элемент cout<<Digits[i];
// Выводим все цифры до i-й for(j=0;j<i;++j) cout<<Digits[j];
// Выводим все цифры после i-й for(j=i+1;j<size;++j) cout<<Digits[j];
cout<<endl; return 0; } %%
---- адрес оригинала: ((/Информатика/Олимпиады/2008/Школьная/Разбор/G))