W linijce n=n*i
, gdy pierwszy raz wykonujesz to przypisanie, przypisujesz zmiennej n zero, ponieważ i jest równe zero, potem już zawsze mnożysz zero (n, które jest równe zero) przez kolejne liczby naturalne, więc n jest zawsze równe zero.
Dodatkowo zwróć uwagę na to, że jeśli n, będziesz przypisywał zawsze n*i
to nie uzyskasz wszystkich wielokrotności liczby n.
Przykład ze wszystkimi wielokrotnościami liczby n, może wyglądać tak:
#include <iostream>
using namespace std;
int main(void)
{
int n, m;
cout<<"Podaj liczbe n: ";
cin>>n;
cout<<"Podaj liczbe m: ";
cin>>m;
for(int i=1; n*i<=m; ++i)
cout<<(n*i)<<'\n';
return 0;
}
Jeśli interesują Ciebie tylko te wielokrotności, które uwzględni n=n*i
to zamień początkową wartość i na jeden. Poza tym, n=n*i
można ładniej zapisać, jako n*=i
, ale wydaje mi się, że nie to było Twoją intencją.
Edit:
Jeśli i jest inicjalizowane wartością równą zero, w takiej pętli to będzie przebieg programu wygląda tak (dla n=5):
'' 1. n=5 i=0, więc ni=0
2. n=0 i=1, więc ni=0
3. n=0 i=2, więc ni=0
...''
Jeśli natomiast zaczniesz od i=1:
'' 1. n=5 i=1 więc ni=5
2. n=5 i=2, więc ni=10
3. n=10 i=3, więc ni=30
4. n=30 i=4, więc n*i=120
5. n=120...''
Więc nie uzyskasz wszystkich wielokrotności.