Вход | Регистрация

  1  2
Информационные технологии :: Математика и алгоритмы

Удалить каждое 3 число

Удалить каждое 3 число
Я
   Kostyaaa
 
17.07.18 - 15:10
Подскажите, пожалуйста. мне нужно что бы пользователь ввел ряд чисел от 1 до 30(допустим), и при каждом нажатии кнопки удалялось каждое 3е число. как сделать, ума не приложу. помогите пожалуйста!
 
 
   Kostyaaa
 
101 - 17.07.18 - 17:13
(98) я изначально хотел выйграть этот спор, и побежать с ним
   bolobol
 
102 - 17.07.18 - 17:23
(101) Это делается не так: программа там - беги, проверяй
   bolobol
 
103 - 17.07.18 - 17:24
Хоть сдвигай, хоть не сдвигай - всё равно получишь х... не подходит, короче - два числа останутся, первых два числа.
   dezss
 
104 - 17.07.18 - 17:25
(103) это если много раз нажать.
а если один раз, то будет больше 2-х чисел..
   Tonik992
 
105 - 17.07.18 - 17:28
(104) на самом деле можно запилить универсальную удалялку каждого третьего числа..
Добавить вторую кнопку которая бы добавляла случайное число в каждое удаленное третье число.
И с этой обработкой потом на собеседование.
   Lama12
 
106 - 17.07.18 - 18:02
(101) Да нету спора. Хватит уже тут всех за идиотов считать. Не дадут тебе готового решения. Точнее его дадут, но не готовое, а с ошибками. Ошибки будут сделаны специально что б понять что ты ничего не умеешь в 1С. Причем ошибки будут примитивные, но ты их исправит не сможешь, т.к. ты вообще в 1С ничего не смыслишь.
   Lama12
 
107 - 17.07.18 - 18:03
(101) Врут только глупые люди (с).
   hawksib
 
108 - 17.07.18 - 18:07
(106) не в 1с, а в программировании ниче не смыслит он, ибо он электрик
   hawksib
 
109 - 17.07.18 - 18:07
1С ТУТ НИ ПРИ ЧЕМ
   Lama12
 
110 - 17.07.18 - 18:08
(108) Согласен.
 
 Рекламное место пустует
   hawksib
 
111 - 17.07.18 - 18:12
(110) у меня отец старший электромеханик а мама программист, оба уже на пенсии, мама думаю голову поломает, но решит, а папа почти сразу ответ даст
   Dotoshin
 
112 - 17.07.18 - 18:13
(108) Программист-электрик? Коллекция пополняется?
Интересно кто следующий?
   Lama12
 
113 - 17.07.18 - 18:31
(112) Ой да ладно. Я тоже программист-электромеханик. :-) Только второе образование как-то связано с информатикой.
   Ching Woo
 
114 - 17.07.18 - 19:20
(12) Жаль тебя огорчать, но твой друг выиграл спор. В 1С такого нельзя сделать.
   Ching Woo
 
115 - 17.07.18 - 19:22
После первого нажатия удалится только одно число - 3-е.
Дальше сколько ни нажимай, ничего не изменится, потому что удалять нечего, 3-го числа больше нет.
   ColonelAp4u
 
116 - 17.07.18 - 20:17
(84) твой код рабочий строго если строка "123456789"
   ColonelAp4u
 
117 - 17.07.18 - 20:18
для двухзначных числе твой алгоритм не подойдет.
   Kostyaaa
 
118 - 17.07.18 - 21:12
Спасибо. Помогли... не знаю как благодарить.
   dezss
 
119 - 18.07.18 - 08:39
(118) просто не надо обманывать друзей, оно того не стоит...
не можешь сам, даже с подсказками, беги 10 км...
   Segate
 
120 - 18.07.18 - 08:59
Функция УдалитьКаждыйNэлемент(Строка, разделитель, n)

МассивЭлементов = стрРазделить(Строка, разделитель);

Для каждого индекс = 0 по массивЭлементов.Количество()-1 цикл
Если Индекс%n = 0 тогда
Продолжить;
Конецесли;

Строка = Строка+Разделитель+МассивЭлементов[индекс];

Конеццикла
Возврат строка;
Конецфункции

Я думаю как то так должно работать.Но с тебя 10км
   dezss
 
121 - 18.07.18 - 09:06
(120) ага...тока ему еще надо реквизит на форме и команду, да еще и вызов твоей функции определить...в общем, готовую обработку...
так что не в коня корм...
   Segate
 
122 - 18.07.18 - 09:08
(120) ууу, ну это же надо целый мануал в интернете найти!
   Kigo_Kigo
 
123 - 18.07.18 - 09:45
(116) С какого перепугу?
он рабочий для лубой строки, хоть для"рсмдшывкрдывгаритдлывагритдыыварпдлыюваортиыд"
но результат всегда будет
"рс"
другое дело если в задании проходить с начало - слева на право строку, потом с право налево
   ColonelAp4u
 
124 - 18.07.18 - 17:50
(123) Я сегодня заморочился исходя из твоего кода и что цифры в строке будут строго вот так расположены "123456789101112131415161718192021222324252627282930" допилил обход циклов, лев 2 и сред 4 не сработает на двухзначных цифрах, можешь проверить просто при первом проходе твоего кода  1 2 4 5 7 8 10 12 а это уже не правильно
   ColonelAp4u
 
125 - 18.07.18 - 17:52
12 должна была исчезнуть так как он взял лев 2  10 и отрезал 4 символа 1011 и начал с 12, дальше думаю ты понимаешь что вся последовательность нарушена будет.
   ColonelAp4u
 
126 - 18.07.18 - 17:54
ТС если в падлу бежать скину код)
   Kigo_Kigo
 
127 - 18.07.18 - 17:58
(125) В таком случае - если число, а не сивол, как таковой, должен быть отделено каким то разделителем, а если его нет, как понять что 12 один и два, а не 12-двенадцать?
   ColonelAp4u
 
128 - 18.07.18 - 18:22
Перем Один;
Перем Два;
Перем Три;
Перем Четыре;
Перем ВсеПоследние;

Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    СчетчикЦикла = 0;
    СтрокаНеНаформе = "";
    Для А = 1 По СтрДлина(СтрокаНаФорме) Цикл
        Если Один Тогда
            Если А = 4 ИЛИ А = 6 ИЛИ А = 8 ИЛИ А = 10 ИЛИ А = 12 ИЛИ А = 14 ИЛИ А = 16 ИЛИ А = 18 ИЛИ А = 20  Тогда
                СтрокаНеНаформе = СтрокаНеНаформе + Лев(СтрокаНаФорме,2);
                СтрокаНаФорме = Сред(СтрокаНаФорме,3);
            ИначеЕсли А = 5 ИЛИ А = 7 ИЛИ А = 9 ИЛИ А = 11 ИЛИ А = 13 ИЛИ А = 15 ИЛИ А = 17 ИЛИ А = 19  Тогда
                СтрокаНеНаформе = СтрокаНеНаформе + Лев(СтрокаНаФорме,2);
                СтрокаНаФорме = Сред(СтрокаНаФорме,5);
            Иначе
                СтрокаНеНаформе = СтрокаНеНаформе + Лев(СтрокаНаФорме,2);
                СтрокаНаФорме = Сред(СтрокаНаФорме,4);
            КонецЕсли;
        ИначеЕсли Два тогда
            Если А = 3 ИЛИ А = 5 ИЛИ А = 7 ИЛИ А = 9 ИЛИ А = 11 ИЛИ А = 13 ИЛИ А = 15 ИЛИ А = 17 ИЛИ А = 19  Тогда
                СтрокаНеНаформе = СтрокаНеНаформе + Лев(СтрокаНаФорме,2);
                СтрокаНаФорме = Сред(СтрокаНаФорме,3);
            ИначеЕсли А = 4 ИЛИ А = 6 ИЛИ А = 8 ИЛИ А = 10 ИЛИ А = 12 ИЛИ А = 14 ИЛИ А = 16 ИЛИ А = 18 ИЛИ А = 20  Тогда
                СтрокаНеНаформе = СтрокаНеНаформе + Лев(СтрокаНаФорме,2);
                СтрокаНаФорме = Сред(СтрокаНаФорме,5);
            Иначе
                СтрокаНеНаформе = СтрокаНеНаформе + Лев(СтрокаНаФорме,2);
                СтрокаНаФорме = Сред(СтрокаНаФорме,4);
            КонецЕсли;
        ИначеЕсли Три Тогда
            Если А = 2 Тогда
                СтрокаНеНаформе = СтрокаНеНаформе + Лев(СтрокаНаФорме,3);
                СтрокаНаФорме = Сред(СтрокаНаФорме,6);
            ИначеЕсли  А >= 3  Тогда
                СтрокаНеНаформе = СтрокаНеНаформе + Лев(СтрокаНаФорме,4);
                СтрокаНаФорме = Сред(СтрокаНаФорме,7);
            Иначе
                СтрокаНеНаформе = СтрокаНеНаформе + Лев(СтрокаНаФорме,2);
                СтрокаНаФорме = Сред(СтрокаНаФорме,4);
            КонецЕсли;
        ИначеЕсли Четыре Тогда
            Если А >= 2 Тогда
                СтрокаНеНаформе = СтрокаНеНаформе + Лев(СтрокаНаФорме,4);
                СтрокаНаФорме = Сред(СтрокаНаФорме,7);
            Иначе
                СтрокаНеНаформе = СтрокаНеНаформе + Лев(СтрокаНаФорме,2);
                СтрокаНаФорме = Сред(СтрокаНаФорме,4);
            КонецЕсли;            
        ИначеЕсли ВсеПоследние Тогда
            Если А >= 2 Тогда
                СтрокаНеНаформе = СтрокаНеНаформе + Лев(СтрокаНаФорме,4);
                СтрокаНаФорме = Сред(СтрокаНаФорме,7);
            Иначе
                СтрокаНеНаформе = СтрокаНеНаформе + Лев(СтрокаНаФорме,2);
                СтрокаНаФорме = Сред(СтрокаНаФорме,5);
            КонецЕсли;            
        КонецЕсли;
    КонецЦикла;
    
    Если Один Тогда
        Один = Ложь;
        Два = Истина;
    ИначеЕсли Два Тогда
        Два = Ложь;
        Три = Истина;
    ИначеЕсли Два Тогда
        Два = Ложь;
        Три = Истина;
    ИначеЕсли Три Тогда
        Три = Ложь;
        Четыре = Истина;
    ИначеЕсли Четыре Тогда
        Четыре = Ложь;
        ВсеПоследние = Истина;
    КонецЕсли;    
    
    СтрокаНаФорме = СтрокаНеНаформе;
    
КонецПроцедуры

Процедура ПриОткрытии()
    
    СтрокаНаФорме = "123456789101112131415161718192021222324252627282930";
    
КонецПроцедуры

Один = Истина;
Два = Ложь;
Три = Ложь;
Четыре = Ложь;
ВсеПоследние = Ложь;;
   ColonelAp4u
 
129 - 18.07.18 - 18:22
(127) Вставь код в обработку на 8 и получишь результат
   ColonelAp4u
 
130 - 18.07.18 - 18:23
По другому сделать вариков нет.
   ColonelAp4u
 
131 - 18.07.18 - 18:25
Один Два Три Четыре ВсеПоследние это нажатие кнопки выполнить
  1  2

Список тем форума
Рекламное место пустует  Рекламное место пустует
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Э. Йодан
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует