Informatică, întrebare adresată de madalinamaduta1, 9 ani în urmă

Cerinţa
Să se ordoneze crescător elementele unui vector crescător după suma cifrelor.

Date de intrare
Fişierul de intrare sortcif.in conţine pe prima linie numărul n si pe a doua linie n numere întregi separate prin spaţii.

Date de ieşire
Fişierul de ieşire sortcif.out va conţine pe prima linie cele n elemente ale vectorului, ordonate conform cerinței, separate printr-un spațiu.

Restricţii şi precizări
0 < n ≤ 100
valoarea absolută a numerelor de pe a doua linie a fişierului de intrare va fi mai mică decât 2 30



Exemplu
sortcif.in

6
89 22 91 4005 51 721
sortcif.out

22 51 4005 91 721 89

Răspunsuri la întrebare

Răspuns de express
13
#include <bits/stdc++.h>
using namespace std;
int n, i, j, s, aux, v[102], w[102], x;
bool ok;
int main()
{
    ifstream f("sortcif.in");
    ofstream g("sortcif.out");
    f >> n;
    for(i = 1; i <= n; i ++)
    {
        f >> v[i];
        x = v[i];
        s = 0;
        while(x)
        {
            s = s + x % 10;
            x = x / 10;
        }
        w[i] = s;
    }
    do
    {
        ok = true;
        for(i = 1; i < n; i ++)
        if(w[i] > w[i+1])
        {
            aux = w[i];
            w[i] = w[i + 1];
            w[i + 1] = aux;
            aux = v[i];
            v[i] = v[i + 1];
            v[i + 1] = aux;
            ok = false;
        }
    }while(!ok);
    for(i = 1; i <= n; i ++)
    g << v[i] << " ";
    return 0;
}

Alte întrebări interesante