С++ инкремент элементов массива с имитацией порядка

программирование C++

В общем к примеру есть массив
int arr[5]
мне надо увеличивать на 1 последний элемент, и как только он станет больше 10-ти к примеру--сбрасываем его на ноль, а к следующему элементу +1, как только предпоследний стал больше 10-ти так его обнуляем и +1 к предыдущему. Так вот, не могу сообразить норм алгоритм--наговнокодил что-то, но оно выглядит крайне убого, жду ваших предложений

Примечание:
int arrinc(uint * arr, uint len) {
if (arr[0] != 255 && len != 1)
for (int i = len - 1; i >= 0; --i) {
if (arr[i] != 255) {
arr[i]++;
return 1;
} else {
arr[i] = 0;
return arrinc(arr, i);
}
} else
return 0;
}
.............................................
int testarr[20]={0,};
do {res=arrinc(testarr,20);} while (res)

Что-то типо того. Но мне надо коробочное решение, если такое есть. Или более красивый алгоритм%)

Примечание:
конструктор, зацем костыли в виде перевода в десятичную СС?%). Плюс ко всему я пишу под opencl, а там нет таких фишек =).

Примечание:
Чуток поправил, и работает быстрее вроде как

bool arrinc(uint * arr, uint len) {
if (arr[0] != 255 && len != 1) {
--len;
if (arr[len] != 255) {
arr[len]++;
return 1;
} else {
arr[len] = 0;
return arrinc(arr, len);
}
}
return 0;
}
Ответы:
этж длинная арифметика, хуле
#include <iostream>


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.