Se dă un vector cu n elemente numere întregi.
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
3
#include <iostream>
#include <fstream>using namespace std;int scif(int x)
{
int s=0;
while(x!=0)
{
s+=x%10;
x/=10;
}
return s;
}int main()
{
ifstream f1("sortcif.in");
ofstream f2("sortcif.out");
int v[100],n,i,x,ok;
f1>>n;
for(i=0; i<n; i++)
f1>>v[i];
do
{
ok=0;
for(i=0; i<n-1; i++)
if(scif(v[i])>scif(v[i+1]))
{
x=v[i];
v[i]=v[i+1];
v[i+1]=x;
ok=1;
}
}
while(ok==1);
for(i=0; i<n; i++)
f2<<v[i]<<" ";
return 0;
}
//Sper ca te ajuta, daca e vreo parte unde nu ai inteles, sa imi spui.
#include <fstream>using namespace std;int scif(int x)
{
int s=0;
while(x!=0)
{
s+=x%10;
x/=10;
}
return s;
}int main()
{
ifstream f1("sortcif.in");
ofstream f2("sortcif.out");
int v[100],n,i,x,ok;
f1>>n;
for(i=0; i<n; i++)
f1>>v[i];
do
{
ok=0;
for(i=0; i<n-1; i++)
if(scif(v[i])>scif(v[i+1]))
{
x=v[i];
v[i]=v[i+1];
v[i+1]=x;
ok=1;
}
}
while(ok==1);
for(i=0; i<n; i++)
f2<<v[i]<<" ";
return 0;
}
//Sper ca te ajuta, daca e vreo parte unde nu ai inteles, sa imi spui.
Răspuns de
1
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("sortcif.in");
ofstream fout("sortcif.out");
bool comp(int a, int b)
{
int s1 = 0, s2 = 0;
while(a || b) {
s1 += a % 10; s2 += b % 10;
a /= 10; b /= 10;
}
return s1 < s2;
}
int main()
{
int v[105], n;
fin >> n;
for(int i = 1; i <= n; i++)
fin >> v[i];
sort(v + 1, v + n + 1, comp);
for(int i = 1; i <= n; i++)
fout << v[i] << ' ';
}
#include <algorithm>
using namespace std;
ifstream fin("sortcif.in");
ofstream fout("sortcif.out");
bool comp(int a, int b)
{
int s1 = 0, s2 = 0;
while(a || b) {
s1 += a % 10; s2 += b % 10;
a /= 10; b /= 10;
}
return s1 < s2;
}
int main()
{
int v[105], n;
fin >> n;
for(int i = 1; i <= n; i++)
fin >> v[i];
sort(v + 1, v + n + 1, comp);
for(int i = 1; i <= n; i++)
fout << v[i] << ' ';
}
AntiEaglesDavids:
sortare in O(nlogn)
Alte întrebări interesante
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Engleza,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă