Найти сумму всех цифр целочисленного массива 1C
Люди добрые помогите новичку в программном коде 1С!
Задача.
Найти сумму всех цифр любого целочисленного массива.
Тоесть, создаем в выделенной обработке Форму, в форме создаем любой реквизит, условно Реквизит1, в который будет вводиться наш массив, создаем команду при обработке которой будет считаться сумма всех цифр заданного в реквизите массива и выводить сообщение с суммой. Например вводим массив 23 457 12 8 должно получиться 2+3+4+5+7+1+2+8=32.
Написал код:
Но получается не сумма всех цифр, а сумма чисел, если массив 23 457 12 8 то получается 23+457+12+8=500, а надо чтобы было 2+3+4+5+7+1+2+8=32.
Подскажите как доработать код?
Задача.
Найти сумму всех цифр любого целочисленного массива.
Тоесть, создаем в выделенной обработке Форму, в форме создаем любой реквизит, условно Реквизит1, в который будет вводиться наш массив, создаем команду при обработке которой будет считаться сумма всех цифр заданного в реквизите массива и выводить сообщение с суммой. Например вводим массив 23 457 12 8 должно получиться 2+3+4+5+7+1+2+8=32.
Написал код:
&НаКлиенте
Процедура Команда1(Команда)
//Реквизит1 = Новый Массив();
МассивЧисел = СтрРазделить(Реквизит1," ", Ложь);
СуммаЧисел = 0;
Для каждого ЦифраМассва Из МассивЧисел Цикл
СуммаЧисел = СуммаЧисел + Число(ЦифраМассва);
КонецЦикла;
Сообщить("Сумма: " + СуммаЧисел);
КонецПроцедуры
ПоказатьНо получается не сумма всех цифр, а сумма чисел, если массив 23 457 12 8 то получается 23+457+12+8=500, а надо чтобы было 2+3+4+5+7+1+2+8=32.
Подскажите как доработать код?
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Как-то так
ДлинаСтр = СтрДлина(Реквизит1);
СуммаЧисел = 0;
Для N = 1 По ДлинаСтр Цикл
Стр = Сред(Реквизит1,N,1);
Если Найти("123456789",Стр) >0 Тогда
СуммаЧисел = СуммаЧисел + Число(Стр);
КонецЕсли;
КонецЦикла;
(14) Прошу прощения, не обратил внимания на адресата вашего сообщения (9) - показалось, что ваше замечание относится к коду в (3).
Полностью с вами согласен, работать со строкой (которую автор почему-то называет "массивом") как с числами - некорректно.
Вообще самый простой и легкий для понимания код - в (3), все остальное - от лукавого.
P.S. Он еще и кроссплатформенный - будет работать даже на 7.7! :-)
Полностью с вами согласен, работать со строкой (которую автор почему-то называет "массивом") как с числами - некорректно.
Вообще самый простой и легкий для понимания код - в (3), все остальное - от лукавого.
P.S. Он еще и кроссплатформенный - будет работать даже на 7.7! :-)
Чтобы перестать быть новичком, самым первым делом надо научиться не просить решения задачи. Когда человек, не умеющий водить автомобиль, спрашивает на форуме водителей автомобиля, как доехать из Москвы в Питер, то наверное он не очень умный и не очень обучаемый и скорее всего не доедет, но рассказать как доехать сможет.
Для получения N-ного символа строки используется функция Сред(Строка, N, 1).
Для получения N-ного символа строки используется функция Сред(Строка, N, 1).
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот