Jako ćwiczenie zrobiłem program liczący "Liczby doskonałe" (Liczba doskonała to liczba, która jest sumą wszystkich swoich dzielników).
Program miał sprawdzać zbiór liczb i wyświetlać na ekranie tylko te liczby, które są "doskonałe".
ii.. natrafiłem na bug.
Zamiast pokazywać się na ekranie:
6
28
...
To jest wyświetlane:
6
14
...
I nie wiem dlaczego tak, no :<
Byłbym wdzięczny za wytłumaczenie co zrobiłem źle, poprawienie mojego kodu itd...
Kod źródłowy:
#include <iostream>
using namespace std;
int x=0 n, z, i, dziel[100], sum=0, y, kk;
int main()
{
for(kk=0;kk<50;kk++){
n=0; // numer tablicy
sum=0;
y=0; //numer tablicy
x++;
for(i=1;i<x;i++){
z = x%i;
if(z==0)
{
dziel[n] = i;
n++;
}
}
for(y=0;y<=n;y++){ //Sprawdzanie czy liczba jest doskonala
sum = sum + dziel[y];
}
if(sum==x)
{
cout<<x<<endl;
}
}
return 0;
}