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

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

Метки: 

Удалить каждое 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 или кнопку "Обновить" в браузере.
Рекламное место пустует