Ззаменить цикл 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)