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
In C++ va rog!! Problema 130 pe pbinfo!! Multumesc
Răspunsuri la întrebare
Răspuns de
9
#include <iostream>
#include<fstream>
using namespace std;
int suma(int n)
{
int s=0;
while(n)
{
s=s+n%10;
n=n/10;
}
return s;
}
ifstream f("sortcif.in");
ofstream g("sortcif.out");
int main()
{
int n,x[100],i,j,aux;
f>>n;
for(i=1;i<=n;i++)
f>>x[i];
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(suma(x[i])>suma(x[j]))
{
aux=x[i];
x[i]=x[j];
x[j]=aux;
}
for(i=1;i<=n;i++)
g<<x[i]<<" ";
f.close();
g.close();
return 0;
}
#include<fstream>
using namespace std;
int suma(int n)
{
int s=0;
while(n)
{
s=s+n%10;
n=n/10;
}
return s;
}
ifstream f("sortcif.in");
ofstream g("sortcif.out");
int main()
{
int n,x[100],i,j,aux;
f>>n;
for(i=1;i<=n;i++)
f>>x[i];
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(suma(x[i])>suma(x[j]))
{
aux=x[i];
x[i]=x[j];
x[j]=aux;
}
for(i=1;i<=n;i++)
g<<x[i]<<" ";
f.close();
g.close();
return 0;
}
tud0r2:
cum dau coroana?
Răspuns de
3
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sortcif.in");
ofstream fout("sortcif.out");
int n,a[100];
int sumcif(int a);
bool SumCif(int i, int j) {return sumcif(i)<sumcif(j);}
int main()
{
fin >> n;
for(int i=0;i<n;i++)
fin >> a[i];
sort(a,a+n,SumCif);
for(int i=0;i<n;i++)
fout << a[i] << " ";
return 0;
}
int sumcif(int a)
{
int S=0;
while(a!=0)
{
S+=a%10;
a/=10;
}
return S;
}
using namespace std;
ifstream fin("sortcif.in");
ofstream fout("sortcif.out");
int n,a[100];
int sumcif(int a);
bool SumCif(int i, int j) {return sumcif(i)<sumcif(j);}
int main()
{
fin >> n;
for(int i=0;i<n;i++)
fin >> a[i];
sort(a,a+n,SumCif);
for(int i=0;i<n;i++)
fout << a[i] << " ";
return 0;
}
int sumcif(int a)
{
int S=0;
while(a!=0)
{
S+=a%10;
a/=10;
}
return S;
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Geografie,
8 ani în urmă
Engleza,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă