Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
20 Май 2018, 18:59
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Чётные и нечётные символы в строке  (Прочитано 3059 раз)

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

Оффлайн Golickoff

  • ****
  • Сообщений: 383
  • РЕПУТАЦИЯ: 41
  • КПД: 11%
  • НЕ Есть Null после шести
  • Регистрация: 2015-02-05
  • Сайт: 
  • Профессия: Ученик 1С
Всем привет.

Есть строка с произвольным двенадцатиразрядным числом, например "123456789012". Необходимо сложить отдельно все чётные разряды и все нечётные. То есть, получить сумму 1+3+5+7+9+1 и 2+4+6+8+0+2. Возможно ли это реализовать средствами встроенного языка 1С без применения ВК? Если да, то подскажите, пожалуйста, каким образом.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.


Оффлайн Golickoff

  • ****
  • Сообщений: 383
  • РЕПУТАЦИЯ: 41
  • КПД: 11%
  • НЕ Есть Null после шести
  • Регистрация: 2015-02-05
  • Сайт: 
  • Профессия: Ученик 1С
А всё оказалось очень просто:
ЧётныеСимволы = Сред(Объект.Строка,2,1)
    +Сред(Объект.Строка,4,1)
    +Сред(Объект.Строка,6,1)
    +Сред(Объект.Строка,8,1)
    +Сред(Объект.Строка,10,1)
    +Сред(Объект.Строка,12,1);
Затем таким же образом выбираем нечётные.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1310
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
А если строка будет "353746789012"? Посимвольное чтение будет более универсальным

Оффлайн Golickoff

  • ****
  • Сообщений: 383
  • РЕПУТАЦИЯ: 41
  • КПД: 11%
  • НЕ Есть Null после шести
  • Регистрация: 2015-02-05
  • Сайт: 
  • Профессия: Ученик 1С
А если строка будет "353746789012"? Посимвольное чтение будет более универсальным
Не могу понять, чем отличаются эти строки. А как реализовать посимвольное чтение?
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1310
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
А если строка будет "353746789012"? Посимвольное чтение будет более универсальным
Не могу понять, чем отличаются эти строки. А как реализовать посимвольное чтение?
В данном случае вот эта конструкция вернет нечетное число.
Сред(Объект.Строка,2,1).
Также через Сред, только в цикле от 1 до длины строки, например
СтрокаЧтения = Объект.Строка;
Для к = 1 По СтрДлина(СтрокаЧтения) Цикл
    ТекущийСимвол = Сред(СтрокаЧтения, к, 1);
    //если в строке могут быть только цифры, то проверяете остаток от деления на 2. Если без остатка, то четное, если есть остаток, то нечетное. Ну и про 0 не забываем
    к = к + 1;
КонецЦикла;

Оффлайн Golickoff

  • ****
  • Сообщений: 383
  • РЕПУТАЦИЯ: 41
  • КПД: 11%
  • НЕ Есть Null после шести
  • Регистрация: 2015-02-05
  • Сайт: 
  • Профессия: Ученик 1С
А если строка будет "353746789012"? Посимвольное чтение будет более универсальным
Не могу понять, чем отличаются эти строки. А как реализовать посимвольное чтение?
В данном случае вот эта конструкция вернет нечетное число.
Сред(Объект.Строка,2,1).
Также через Сред, только в цикле от 1 до длины строки, например
СтрокаЧтения = Объект.Строка;
Для к = 1 По СтрДлина(СтрокаЧтения) Цикл
    ТекущийСимвол = Сред(СтрокаЧтения, к, 1);
    //если в строке могут быть только цифры, то проверяете остаток от деления на 2. Если без остатка, то четное, если есть остаток, то нечетное. Ну и про 0 не забываем
    к = к + 1;
КонецЦикла;
Небольшое добавление: строка всегда состоит из цифр и длина строки всегда равна 12ти символам, оба этих условия проверяются в начале работы со строкой. Поэтому код меняем до
СтрокаЧтения = Объект.Строка;
Для к = 1 По 12 Цикл
    ТекущийСимвол = Сред(СтрокаЧтения, к, 1);
    к = к + 1;
КонецЦикла;
Теперь идём этим кодом по строке "353746789012" и получаем при к=1 значение 3, затем "к" становится равным "2" и мы получаем 5 и так далее. В итоге из этой строки получается эта же строка :dfbbdrfb: Наверное, "к" должно быть равно к + 2?
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1310
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
Видимо Вы не поняли меня. Полностью код будет примерно такой
ЧетныеСимволы = ""; НечетныеСимволы = "";
СтрокаЧтения = Объект.Строка;
Для к = 1 По 12 Цикл
    ТекущийСимвол = Сред(СтрокаЧтения, к, 1);
    ТекущийСимволЧисло = Число(ТекущийСимвол);
    Если Не ТекущийСимволЧисло = 0 Тогда //насчет 0 не знаю куда его записывать
        Если ТекущийСимволЧисло % 2 = 0 Тогда //четное
            ЧетныеСимволы = ЧетныеСимволы + ТекущийСимвол;
        Иначе
            НечетныеСимволы = НечетныеСимволы + ТекущийСимвол;
        КонецЕсли;
    КонецЕсли;
    к = к + 1;
КонецЦикла;

Оффлайн Golickoff

  • ****
  • Сообщений: 383
  • РЕПУТАЦИЯ: 41
  • КПД: 11%
  • НЕ Есть Null после шести
  • Регистрация: 2015-02-05
  • Сайт: 
  • Профессия: Ученик 1С
Видимо Вы не поняли меня.
Теперь понял. Безусловно, такой код выглядит красивее. Спасибо :)
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Оффлайн andante

  • *
  • Сообщений: 7
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Ученик 1С
ЧетныеСимволы = ""; НечетныеСимволы = "";   //  В условии нужны суммы нечетных и четных цифр поэтому ЧетныеСимволы = 0;  НечетныеСимволы = 0;
СтрокаЧтения = Объект.Строка;
Для к = 1 По 12 Цикл
    ТекущийСимвол = Сред(СтрокаЧтения, к, 1);
    ТекущийСимволЧисло = Число(ТекущийСимвол);
    Если Не ТекущийСимволЧисло = 0 Тогда //насчет 0 не знаю куда его записывать  На 0 проверка не нужна, пусть суммируется
        Если ТекущийСимволЧисло % 2 = 0 Тогда //четное     Четность определяет переменная цикла, поэтому  Если к % 2 = 0
            ЧетныеСимволы = ЧетныеСимволы + ТекущийСимвол;  //  ЧетныеСимволы = ЧетныеСимволы + ТекущийСимволЧисло;
        Иначе
            НечетныеСимволы = НечетныеСимволы + ТекущийСимвол;  // НечетныеСимволы = НечетныеСимволы + ТекущийСимволЧисло;
        КонецЕсли;
    КонецЕсли;
    к = к + 1;
КонецЦикла;


    Вот как-то так

Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1310
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
andante, да, упустил, что там нужна сумма. Именно так.


 

В строке номер "1" табличной части "Состав набора": Не заполнено значение реквиз

Автор ХеляРаздел Пользователям "1С - Предприятие 8"

Ответов: 0
Просмотров: 7128
Последний ответ 18 Сен 2011, 16:07
от Хеля
В строке "1" табличной части "Состав набора": Не заполнено значение реквизитов Цена

Автор rusalkaРаздел Пользователям "1С - Предприятие 8"

Ответов: 0
Просмотров: 2734
Последний ответ 11 Апр 2014, 16:52
от rusalka
Адрес в строке "Грузополучатель" в счете-фактуре

Автор МаксиРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 2272
Последний ответ 04 Дек 2015, 11:05
от Макси
в строке номер документа основания (108)не сохраняется "0"

Автор NadinAstraРаздел Пользователям "1С - Предприятие 8"

Ответов: 5
Просмотров: 1888
Последний ответ 04 Май 2016, 14:23
от Игорь Иванов
Как ватащить вытащить дополнительные свойства номенклатуре в одной строке запросом ?

Автор supiyanРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 3108
Последний ответ 30 Июн 2014, 17:48
от Klyacksa

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
154 Сообщений
oleg-x
65 Сообщений
alex0402
62 Сообщений
AIFrame AIFrame
52 Сообщений
wise wise
38 Сообщений
KOI8-R
33 Сообщений
buketov.av buketov.av
28 Сообщений
Alter
21 Сообщений
alexandr_ll
19 Сообщений
Анюта17
19 Сообщений

* Кто онлайн

  • Точка Гостей: 256
  • Точка Скрытых: 0
  • Точка Пользователей: 5
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal