1

Тема: Першу цифру числа видалити та додати її до того що залишилося

Для будь-якого натурального числа алгоритм робить такі операції: відокремлює від числа першу цифру і додає її в число із цифр, що залишилися. Процес закінчується тоді, коли в числі залишиться одна цифра. Чи правильно я зрозуміла суть завдання? допоможіть записати це в С++ є такий код, але він не працює

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

int main() {
    char s[32];
    int i;
    cin >> i;
    while(i>9){
        sprintf(s,"%d",i);
        i=atoi(s+1)+s[0]-'0';
    }
    cout << i << '\n';
    return 0;
}

2

Re: Першу цифру числа видалити та додати її до того що залишилося

Алгоритм якщо і правильний, то дуже неочевидний. Подумайте про математичну операцію, яка може допомогти виділити першу цифру.

Подякували: koala1

3

Re: Першу цифру числа видалити та додати її до того що залишилося

Katerina525 написав:

   є такий код, але він не працює

А ви його запускали?

І погоджуся з quez - код кривий, надмірний і неочевидний. Але як для новачка - може і зійде.

4 Востаннє редагувалося P.Y. (28.02.2015 22:21:03)

Re: Першу цифру числа видалити та додати її до того що залишилося

А що саме там не працює? В мене ніби запустилось, результат схожий на правду.

Звичайно, більш труъ — зробити алгоритм, що не спирається на готове рішення (маю на увазі, обійтися без sprintf і atoi, а використати цілочисельне ділення з остачею на степені 10, щоб виокремити потрібну цифру).

Подякували: Katerina5251

5

Re: Першу цифру числа видалити та додати її до того що залишилося

А якщо трохи скористатися математикою...
#include <iostream>

using namespace std;

int main() {
    int i;
    cin >> i;
    i %= 9;
    if ( i == 0 ) i = 9;
    cout << i << '\n';  
    return 0;
}
Подякували: Katerina5251