Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 21:08

Найти сумму всех цифр целочисленного массива

Автор OnePunch-Man, 15 мар 2023, 16:59

0 Пользователей и 1 гость просматривают эту тему.

LexaK

Цитата: OnePunch-Man от 15 мар 2023, 17:49в Реквизит притом любой какой захочет пользователь.
а это будет вторым шагом!

сделайте Реквизит1 - Строкой, вытащите его форму - поле ввода
в нее пользователь введет числа через запятую, пример
"3,5,7,8"  и нажмет кнопку Посчитать
а в программе вы разложите строку на массив чисел и в цикле посчитаете!

если помогло нажмите: Спасибо!

OnePunch-Man

LexaK,
Цитироватьсделайте Реквизит1 - Строкой, вытащите его форму - поле ввода
в нее пользователь введет числа через запятую, пример
"3,5,7,8"  и нажмет кнопку Посчитать
а в программе вы разложите строку на массив чисел и в цикле посчитаете!

Я изначально создал форму в форме создал реквизит - Реквизит1 тип строка перенес его на форму чтобы пользователь видел строку ввода и создал Команду тоже ее перенес на форму.

прописал для команды код


    Реквизит1 = Новый Массив();
    СуммаЧисел = 0;

Для Каждого ЛкЗнач Из Реквизит1 Цикл
        СуммаЧисел = СуммаЧисел + ЛкЗнач;
    КонецЦикла;
    Сообщить("Сумма: " + СуммаЧисел);

и ничего не работает вдает ошибку

Итератор для значения не определен
Форма(9)}:Для Каждого ЛкЗнач Из Реквизит1 Цикл

LexaK

OnePunch-Man, попробуйте так,

//    Реквизит1 = Новый Массив();
лкМассив = СтрРазделить(Реквизит1,",");
    СуммаЧисел = 0;
   
 СуммаЧисел = 0;
Для каждого лкЗнач Из лкМассив Цикл
    СуммаЧисел  = СуммаЧисел  + Число(лкЗнач);
КонецЦикла;
Сообщить("Сумма: " + СуммаЧисел);

если помогло нажмите: Спасибо!

OnePunch-Man

LexaK,
Цитата: LexaK от 15 мар 2023, 19:07OnePunch-Man, попробуйте так,

//    Реквизит1 = Новый Массив();
лкМассив = СтрРазделить(Реквизит1,",");
    СуммаЧисел = 0;
   
 СуммаЧисел = 0;
Для каждого лкЗнач Из лкМассив Цикл
    СуммаЧисел  = СуммаЧисел  + Число(лкЗнач);
КонецЦикла;
Сообщить("Сумма: " + СуммаЧисел);


Так все работает, НО складываются не цифры всех элементов массива а именно элементы массива, то есть если к примеру массив 235, 18, 5, 47, получится 235+18+5+47=305, а должно получаться 2+3+5+1+1+8+5+4+7=36

LexaK

Цитата: OnePunch-Man от 16 мар 2023, 02:32235, 18, 5, 47,
так надо другую строку вводить
"2,3,5,1,1,8,5,4,7"

какие данные пользователь ввел, то программа и посчитала! (такая задача была)
если помогло нажмите: Спасибо!

Kvark5d

задача как я понял:
Реквизит1 - строка, причем требований к ее форматированию нет. Пользователь вводит любые символы (цифры, числа, знаки, пробелы ...).
Необходимо найти все цифры в этой строке и сложить их
тогда:

 // возьмем последовательно каждый символ строки с первого по последний и попробуем преобразовать в число
 // если получится то прибавим к общей сумме
Сумма=0;
Для Кол=1 по СтрДлина(Ревизит1) Цикл
    ВозможнаяЦифра = Сред(Ревизит1,кол,1);
   Попытка
      Сумма=Сумма+Число(ВозможнаяЦифра);
   исключение
   КонецПопытки
КонецЦикла;

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск