Jump to content

Problema Informatica Suma Divizori Vector


Go to solution Solved by Courage,

Recommended Posts

Posted

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
Posted
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;
}

  • Upvote 1
Posted
#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
Posted (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 by Courage
  • Upvote 1

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.