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
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;
}
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
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Ed. tehnologică,
9 ani în urmă
Limba română,
9 ani în urmă