Se dă un şir cu n elemente, numere naturale. Să se afişeze, în ordine crescătoare, toate valorile distincte care se pot obţine ca sumă de două valori distincte din şir.
Răspunsuri la întrebare
Răspuns de
0
#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;
}
Răspuns de
2
#include <iostream>
#include <fstream>
#include <cassert>
using namespace std;
ifstream fin("ordsume.in");
ofstream fout("ordsume.out");
int n,m, a[101], s[10001];
int main(){
fin >> n;
for(int i=1;i<=n;++i)
fin >> a[i];
m = 0;
for(int i=1;i<n;++i)
for(int j=i+1 ; j<=n ; j++)
if(a[i]!=a[j])
{
int gasit = 0;
for(int k=1 ; k<=m && !gasit ; ++k)
if(s[k] == a[i]+a[j])
gasit = 1;
if(!gasit)
s[++m] = a[i]+a[j];
}
for(int i=1;i<m;++i)
for(int j=i+1 ; j<=m ; ++j)
if(s[i]>s[j]){
int aux = s[i];
s[i] = s[j];
s[j] = aux;
}
for(int i=1;i<=m;++i)
fout << s[i] << " ";
return 0;
}
culbeciiulius:
ms mult yeey trec testul
Alte întrebări interesante
Informatică,
8 ani în urmă
Chimie,
8 ani în urmă
Engleza,
8 ani în urmă
Ed. tehnologică,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Istorie,
9 ani în urmă