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

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 valoare1000
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 ionutg38
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