Ззаменить цикл while на for - C (СИ)
Формулировка задачи:
Задача заключается в расчете делителей.
Вроде все правильно, но преподаватель требует заменить while на for, а когда я пытаюсб это сделать вылезает куча ошибок
int main() { int a;//Исходное число scanf("%i", &a); printf("%i\n", a); if (a > 0)//Натуральное ли? { int step, summ, del = 3;//step - шаг,summ - сумма делителей,del - делитель double s = sqrt(a); //Корень числа для того,чтобы избежать повторных делителей в сумме switch (a) { case 1: printf("1"); break; case 2: printf("3"); break; case 4: printf("7"); break; default: if (a % 2 == 0) //Определение шага для уменьшения количества действий { step = 1; summ = 2 + a / 2; } else step = 2; summ += a + 1; } for (del<s, del+=step) //вместо while (del < s) { if (a % del == 0) summ += del + a / del; del += step;} { if (a % del == 0) summ += del + a / del; } if (del * del ==a)//При квадрате числа в цикле while идет недосчет предпоследнего делителя,чтобы этого избежать,мы вводим это условие summ += del; printf("%i %s", summ, a % 2 == 0 ? "-Сумма четная" : "-Сумма нечетная"); } } else printf("Ошибка"); return 0; }
Решение задачи: «Ззаменить цикл while на for»
textual
Листинг программы
for (;del<s; del+=step)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д