+Graham777 Posted October 8, 2014 Report Posted October 8, 2014 Se dă următorul enunț. Se citește un vector de nr. a nu n elemente naturale. Să se afișeze pentru fiecare element din vector suma divizorilor săi. Eu m-am gândit să-l fac așa, dar nu-mi merge: #include<iostream> using namespace std; int suma(int a[50]); int main() { int a[50], n, i,suma=0, g, aux=0; cout<<"n"; cin>>n; for (i=1; i<=n; i++){ aux=suma (a[50],n); cout<<aux; return 0; cout<<"a["<<i<<"]="; cin>>a[i]; } } int suma (int a[50]) { int i, g, n,suma=0; for (i=1; i<=n; i++){ for (g=1; g<=a[i]; g++) if (a[i]%g==0) suma=suma+g;} return 0; } Dar am reușit să fac programul corect, neutilizând funcții. Cum să fac să implementez funcții? #include<iostream> using namespace std; int main() { int a[50], n, i,suma=0,g; cout<<"n"; cin>>n; for (i=1; i<=n; i++){ cout<<"a["<<i<<"]="; cin>>a[i]; } for (i=1; i<=n; i++){ for (g=1; g<=a[i]; g++) if (a[i]%g==0) suma=suma+g; cout<<suma<<endl; suma=0;} return 0; }
Moderators Courage Posted October 8, 2014 Moderators Report Posted October 8, 2014 int suma(int a[50]); ar trebui să fie int suma(int a[]); La fel şi mai jos. În rest, ai mai multe variante: - transmiţi fiecare element din vector şi calculezi pe el suma divizorilor: #include <iostream> using namespace std; int suma_divizori(int numar) { int d, suma = 0; for (d=1 ; d <= numar / 2; d++) if (numar % d == 0) suma += d; suma += numar; // numarul este divizibil cu el insusi ; mai sus am pus n / 2 return suma; } int main(void) { int a[500], n, i; cout << "n="; cin >> n; for (i=0 ; i < n ; i++) { cout << "a[" << i << "]="; cin >> a[i]; } cout << "nn"; for (i=0 ; i < n ; i++) cout << suma_divizori(a[i]) << "n"; return 0; } Ori transmiţi întreg vectorul: #include <iostream> using namespace std; void suma_divizori(int v[], int numar_elemente) { int i, d, suma; for (i=0 ; i < numar_elemente ; i++) { suma = 0; for (d=1 ; d <= v[i] / 2 ; d++) if (v[i] % d == 0) suma += d; suma += v[i]; cout << suma << endl; } } int main(void) { int a[500], n, i; cout << "n="; cin >> n; for (i=0 ; i < n ; i++) { cout << "a[" << i << "]="; cin >> a[i]; } cout << "nn"; suma_divizori(a, n); return 0; } 1
+GodsOtherHand Posted October 8, 2014 Report Posted October 8, 2014 cum vrei sa mearga, daca functia ta primeste 1 parametru (vectorul) si tu ii dai 2 parametrii?(un vector, si un int) love is a verb Love is a doing word
+Graham777 Posted October 8, 2014 Author Report Posted October 8, 2014 #include<iostream> using namespace std; int suma (int a[]); int main() { int a[50], n, i; cout<<"Introdu valoare pentru n "; cin>>n; for (i=1; i<=n; i++){ //Citire vector cout<<"a["<<i<<"]="; cin>>a[i]; for (i=1; i<=n; i++) suma(a[], n); } return 0; } int suma( int a[50], int n) { int g, i; for (i=1; i<=n; i++){ for (g=1; g<=a[i]; g++){int a[]int a[] if (a[i]%g==0) suma=suma+g;} cout<<"Suma divizorilor numarului"<<a[i]<<"este egala cu: "<<suma; suma=0; } } Dacă încerc așa, ar funcționa? Și în plus, care-ar fi greșelile?
Moderators Solution Courage Posted October 8, 2014 Moderators Solution Report Posted October 8, 2014 (edited) Ce e aia? #include<iostream> using namespace std; void suma (int a[], int n); int main() { int a[50], n, i; cout<<"Introdu valoare pentru n "; cin>>n; for (i=1; i<=n; i++) { cout<<"a["<<i<<"]="; cin>>a[i]; } suma(a, n); return 0; } void suma(int a[], int n) { int g, i, suma; for (i=1; i<=n; i++) { suma=0; for (g=1; g<=a[i]; g++) { if (a[i]%g==0) suma=suma+g; } cout<<"Suma divizorilor numarului "<<a[i]<<" este egala cu: "<<suma<<endl; } } Edited October 8, 2014 by Courage 1
+Graham777 Posted October 8, 2014 Author Report Posted October 8, 2014 De ce ai pus în antet int suma și în subprogram void ?
Moderators Courage Posted October 8, 2014 Moderators Report Posted October 8, 2014 My bad. am uitat să modific.
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now