поменять цикл while на цикл for. на c++

while(absoluteN>0)

c++ помогите срочно

#include <bits/stdc++.h>

using namespace std;

int main()
 {
    int N;
    cin >>N;

    if (N%1==0)
    {
        int sum=0;
        int absN=abs(N);

        while (absN>0)
        {
            sum+=absN%10;
            absN/=10;
        }

        cout <<sum;
    }
    else
        {
            cout <<sqrt(abs(N));
        }

    return 0;
}

Ответы (2 шт):

Автор решения: Mark
for (; absN > 0; absN /= 10) {
    sum += absN % 10;
}
→ Ссылка
Автор решения: Swift - Friday Pie

Любая проверка на целое число может столкнуться ситуацией, когда результат ввода целого числа не "помещается" в заложенном типе. Есть значения int, которые не помещаются в double и если целые значения double которые не помещаются в int.

В исходном коде вообще запланировано только целое число - int N. Самым надежным является проверка на момент ввода.

У потоков есть метод good() для проверки состояния. Чтобы прочитать ввод повторно,можно воспользоваться строковым буфером-потоком std::stringstream.

#include <iostream>
#include <sstream>
#include <cmath>

int main()
{
    int N;
    double R;  

    // сохраним ввод пользователя
    std::stringstream input;
    input << std::cin.rdbuf();

    // считаем как целое. 
    // Дробные числа МОЖНО считать как целое, если они не начинаются с точки.
    input.seekg(0);  
    input >> N;
    bool isInt = input.good();

    // считаем как double
    input.seekg(0);
    input >> R;
    bool isReal = input.good();

    //bool isRound = (isInt && !isReal) ||    // записано как целое
    //           (isReal && (round(R) == R)); // является большим целым в экпс. форме.
    if (isInt && !isReal) {  // если число и не дробное
        int sum = 0;
        for (int absN=abs(N); absN > 0; absN /= 10) {
           sum += absN % 10;
        }
        std::cout <<sum;
    }
    else {
        if(isReal) {
            std::cout << sqrt(abs(round(R)));
        }
        else {
            std::cout << "Ошибка ввода";
        }
     }
    return 0;
}

Конечно же, запись вроде 3.14e+12 описывает ЦЕЛОЕ число 3140000000000, которое не поместится в int, но, похоже, условия задачи такой вариант не рассматривают. Можно также исключить возможность ввода экспоненты.

→ Ссылка