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

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы