Informatică, întrebare adresată de rollinn20, 8 ani în urmă

Cine ma poate ajuta cu o problema va rog:
un numar A se poate "imprieteni" cu un numar B doar daca B este divizibil cu A.
programul trebuie să citească numere naturale de la tastatură până în momentul în care valoarea citită e 0

Date de intrare: Se citește șirul de numere până la întâlnirea lui 0. Numerele vor fi despărțite prin spații.

Restrictii:
Un număr se poate împrieteni cu el însuși
Se citesc maxim 100.000 de numere până la întâlnirea lui 0
0 nu face parte din șir
Elementele șirului sunt numere naturale cuprinse între 0 și 1000

Exemplu:
Input: 2 8 5 5 4 0
Output: 3(fiindca prima cifra se divide cu ea insasi cu 8 si cu 4)

Nu inteleg cum pot face sa imi afiseze rezultatul atunci cat introduc 0 de la tastatura...
adica:
2 8 0
si cand apas tasta 0 sa imi afiseze rezultatul: 2(fiindca 2 se divide cu el insusi si cu 8)

Ii dau coroana cui ma ajuta sa rezolv problema!:)

Răspunsuri la întrebare

Răspuns de ovdumi
1

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   int x,a,C=1;

   cin>>x;

   if (x==0)

       cout<<"nu exista";

   else

   {

       cin>>a;

       while (a!=0)

       {

           if (a%x==0)

               C=C+1;

           cin>>a;

       }

       cout<<C;

   }

   return 0;

}

Explicație:

Daca prima valoare citita e 0, nu facem nimic. In caz contrar, incepem sa citim valori pana la intalnirea lui 0. Contorul porneste de la 1, intrucat prima valoare citita este divizibila cu ea insasi, bineinteles. Daca gasim un element divizibil cu primul numar citit, contorul creste cu 1. Dupa ce citim valoarea 0, afisam numarul de valori care se "imprietenesc" cu prima valoare citita.


rollinn20: Mersi mult pt ajutor si explicatie,in codeblocks functioneaza problema,dar pe site compilatorul imi da 75pct/100pct si nu inteleg de ce...compilatorul de pe site o testeaza in 4 exemple si la unu din ele pica programu
rollinn20: de exemplu la numarul scris de mine mai sus: 2 8 8 5 4 0 rezultatul este 3 ceea ce este normal,dar daca scriu 2 8 8 5 0 4 rezultatul este 2 ceea ce nu e corect fiindca am inversat doar ultimele 2 cifre...adica cred ca de aia imi pica problema pe site
Alte întrebări interesante