Есть задание. Даны два целых числа A и В. Выведите все числа от A до B включительно, в порядке возрастания через запятую, если A < B, но если A > B тогда выводить в порядке убывания через запятую.
Мой Код,
&НаКлиенте
Процедура ВыводЗначения(Команда)
Если Число1 > Число2 Тогда
Результат = Пересчет(Число1,Число2);
ИначеЕсли Число1 < Число2 Тогда
Результат = Пересчет2(Число1,Число2);
КонецЕсли;
Сообщить(Результат);
КонецПроцедуры
&НаКлиенте
Функция Пересчет(Число1,Число2);
Если Число1 = Число2 Тогда
Результат =Строка(Число1);
Иначе
Результат = Строка(Число1) + " " + Строка(Пересчет(Число1 - 1, Число2));
КонецЕсли;
Возврат Результат;
КонецФункции
&НаКлиенте
Функция Пересчет2(Число1, Число2);
Если Число2 = Число1 Тогда
Результат =Строка(Число2);
Иначе
Результат = Строка(Число2) + " " + Строка(Пересчет2(Число1, Число2 + 1));
КонецЕсли;
Возврат Результат;
КонецФункции
Я не понимаю почему клиент вылетает, подскажите что не так
Мой Код,
&НаКлиенте
Процедура ВыводЗначения(Команда)
Если Число1 > Число2 Тогда
Результат = Пересчет(Число1,Число2);
ИначеЕсли Число1 < Число2 Тогда
Результат = Пересчет2(Число1,Число2);
КонецЕсли;
Сообщить(Результат);
КонецПроцедуры
&НаКлиенте
Функция Пересчет(Число1,Число2);
Если Число1 = Число2 Тогда
Результат =Строка(Число1);
Иначе
Результат = Строка(Число1) + " " + Строка(Пересчет(Число1 - 1, Число2));
КонецЕсли;
Возврат Результат;
КонецФункции
&НаКлиенте
Функция Пересчет2(Число1, Число2);
Если Число2 = Число1 Тогда
Результат =Строка(Число2);
Иначе
Результат = Строка(Число2) + " " + Строка(Пересчет2(Число1, Число2 + 1));
КонецЕсли;
Возврат Результат;
КонецФункции
Я не понимаю почему клиент вылетает, подскажите что не так
По теме из базы знаний
- Управление задачами: новая БСП и RLS для задач
- Решение алгоритмических задач на базе 1С:Предприятие | Новый выпуск Algo1C
- Первый день 1С-ника на новом месте: слезы, грусть, печеньки, возможности
- Решение алгоритмических задач на базе 1С:Предприятие | Новый сборник
- Решение алгоритмических задач на базе 1С:Предприятие | Новый сборник задач (02.02.2025)
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
а зачем такой сложный код? на франчайзи учитесь?
попробуйте такой код
попробуйте такой код
Число1 = 10;
Число2 = 17;
лкМ = Новый Массив;
Пока Число1 <> Число2 Цикл
лкМ.Добавить(Число1);
Число1 = Число1 + ?(Число1 < Число2, 1, -1);
КонецЦикла;
лкМ.Добавить(Число1);
Сообщить(СтрСоединить(лкМ,","));
Показать
(9)
попробуйте рекурсивную процедуру
Функция ВывестиСледующее(Х, А, Б)
Если Мин(А,Б)+Х > Макс(А,Б) Тогда
Возврат Строка(Макс(А,Б))
Иначе
Если А > Б Тогда
Возврат ВывестиСледующее( Х + 1, А, Б ) +","+ Строка( А - Х ) ;
Иначе
Возврат Строка( А - Х ) +","+ ВывестиСледующее( Х + 1, А, Б );
КонецЕсли;
КонецЕсли
КонецФункции
//...
Сообщить( ВывестиСледующее(0, 15, 10) )
Показать
(12) да какая это помощь? просто привести пример, рассмотреть разные варианты
(у вас тоже очень оригинальные)
вот что у меня с рекурсией получилось
(у вас тоже очень оригинальные)
вот что у меня с рекурсией получилось
&НаКлиенте
Процедура Команда1(Команда)
Число1 = 3;
Число2 = 10;
Результат = "";
ВыполнитьРасчет(Число1, Число2, Результат);
Сообщить(Результат);
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьРасчет(Число1, Число2, Результат)
Результат = Результат + ?(Результат = "","",",") + Число1;
Если Число1 <> Число2 Тогда
Число1 = Число1 + ?(Число1 < Число2, 1, -1);
ВыполнитьРасчет(Число1, Число2, Результат);
КонецЕсли;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот