Informatică, întrebare adresată de Utilizator anonim, 9 ani în urmă

cerinta: 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.

date de intrare: Fişierul de intrare ordsume.in conţine pe prima linie numărul n, iar pe a doua cele n elemente ale şirului dat, separate prin spaţii.

date de iesire: Fişierul de ieşire ordsume.out va conţine pe prima linie, în ordine crescătoare, toate valorile distincte care se pot obţine ca sumă de două valori distincte din şir, separate printr-un spaţiu.


please azi

Răspunsuri la întrebare

Răspuns de ionutg38
6
#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; }
Alte întrebări interesante