Максимально возможное число и минимально возможное число

Рейтинг: -1Ответов: 1Опубликовано: 27.03.2023

Не могу понять как решить задачу, смысл которой, заключается в том, чтобы пользователь вводил одно целое число n, потом n цифр(без пробелов). Далее их этих цифр должно быть составлено максимально возможное число и минимально возможное число. Я написала код, но если в последовательности был 0, то в минимальном числе первая цифра 0, что не должно быть. Подскажите, пожалуйста, как это исправить:

#include <iostream>

using namespace std;
 
int main ()
{
   
    int n;
    cin>>n;
    
    char A[n];
    int buf;
 
    for (int i = 0; i<n; i++) 
    {
        cin>>A[i];
       
     
    }
    
    for (int i=1; i<n; i++)
    {
        for (int j=1; j<n-i+1; j++) 
        {
            if (A[j-1] < A[j]) 
                {
                    buf = A[j-1];
                    A[j-1] = A[j];
                    A[j] = buf;
                }
        }       
    }
    
    for (int i = 0; i<n; i++) 
    {
        cout << A[i];
    }
    cout<<endl;
    for (int i=1; i<n; i++)
    {
        for (int j=1; j<n-i+1; j++) 
        {
            if (A[j-1] > A[j]) 
                {
                    buf = A[j-1];
                    A[j-1] = A[j];
                    A[j] = buf;
                }
        }       
    }
    
    for (int i = 0; i<n; i++) 
    {
        cout << A[i];
    }
 
    
    return 0;
}

Ответы

▲ 1

Да все просто...

    /***    
        Добавьте следующие 8 строк в программу 
        перед выводом наименьшего числа.
     ***/
    if (A[0] == '0')
    {
        int i = 1;
        while(A[i] == '0') i++;
        buf = A[0];
        A[0] = A[i];
        A[i] = buf;
    }

    for (int i = 0; i<n; i++)
    {
        cout << A[i];
    }

    return 0;
}

Проверку и обработку случая, когда все введенные цифры — нули, допишите сами...

Но как-то странно выглядит — написать сортировку, и не написать такой простой код?