проблема & Пример: http://prntscr.com/atfkmo
Следующее решение получает неправильный вывод: http://prntscr.com/atfm5w
int main()
{
int n;
int f = 1;
cout << "Enter an integer: ";
cin >> n;
for (int i = 1; i <= n; i++) // 1st loop to get list of numbers from 1-n.
{
cout << "| " << i << ": ";
while (f <= i) { // 2nd loop to get list of factors for each number from 1-n
if (i%f == 0) // divisibility check
{
cout << f;
}
f++;
}
cout << endl;
}
Я взломал это почти час до того момента, когда я больше не понимаю логику этого кода. Было бы очень признательно, если бы кто-то мог решить это или объяснить мне логику некорректного кода, чтобы я мог это исправить.
Вам нужно переинициализировать значение f=1
за каждый номер:
int main()
{
int n;
int f = 1;
cout << "Enter an integer: ";
cin >> n;
for (int i = 1; i <= n; i++)
{
f=1; // reinitialize
cout << "| " << i << ": ";
while (f <= i) {
if (i%f == 0)
{
cout << f;
}
f++;
}
cout<<"\n";
}
cout << endl;
}
Других решений пока нет …