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

Se consideră subprogramul divizori, cu patru parametri:
• n, prin care primeşte un număr natural (n∈[2,106]);
• x, y și z, prin care furnizează câte un divizor al lui n (0 Scrieţi definiţia completă a subprogramului.
Exemplu: pentru numărul n=24, în urma apelului, x=4, y=8 şi z=12, iar pentru numărul n=9, în urma apelului, x=0, y=0 şi z=0.


Utilizator anonim: daca nu are trei divizori distincti, x,y,z primesc 0 ?
anna015: da.
JolieJulie: Si daca nr are mai multi divizori ?
anna015: Se gasesc 3 din ei a caror suma sa fie numarul n... Daca suma a oricaror 3 divizori nu dau numarul n atunci x=0, y=0, z=0.
JolieJulie: Aha :))

Răspunsuri la întrebare

Răspuns de S0unds
5
Ceva e gresit in problema sau nu a fost scris cerinta corect. 3 divizori ai lui 24 sunt 12 8 6.

O solutie ar fii:
#include <iostream>
using namespace std;

void divizori(int n, int &x, int&y,int &z)
{
int ok1=0,ok2=0,ok3=0;
x=0;y=0;z=0;
for(int i=n/2;i>=2;i--)
{
if(n%i==0)
{
if(ok1==1&&ok2==1&&ok3==0)
{
ok3=1; z=i;
}
if(ok1==1&&ok2==0&&ok3==0)
{
ok2=1; y=i;
}

if(ok1==0&&ok2==0&&ok3==0)
{
ok1=1; x=i;
}
}
}
}
int main()
{
int n,x,y,z;
cin>>n;
divizori(n,x,y,z);
cout<<" "<<x<<" "<<y<<" "<<z;
}
Alte întrebări interesante