Работа с Массивами. Учебник "Программирование для начинающих"
Всем привет. Я тут сейчас изучаю учебник "Программирование для начинающих" Радченко, сделал задание из учебника и хотелось бы попросить оценки моего кода.
Задание 3.39
Создайте массив и заполните его названиями дней недели по порядку. С помощью
операции [...] к выходным дням допишите « вых.». Чтобы, например, вместо
«Суббота» получилось «Суббота вых.».
Первый скриншот моё решение, второй - решение автора.
Задание 3.39
Создайте массив и заполните его названиями дней недели по порядку. С помощью
операции [...] к выходным дням допишите « вых.». Чтобы, например, вместо
«Суббота» получилось «Суббота вых.».
Первый скриншот моё решение, второй - решение автора.
Прикрепленные файлы:
Найденные решения
(1)
на вот, для коллекции
на вот, для коллекции
МассивДней = Новый Массив;
Для НомерДняНедели = 0 По 6 Цикл
МассивДней.Добавить(ТРег(Формат(НачалоНедели(ТекущаяДата())+НомерДняНедели*86400,"ДФ=дддд")));
Если НомерДняНедели>=5 Тогда
МассивДней[НомерДняНедели] = МассивДней[НомерДняНедели] + " вых";
КонецЕсли;
КонецЦикла;
(1)У вас, как минимум, не выполнено условие задания по использованию операции [...].
Вариант без использования циклов:
Вариант без использования циклов:
СтрокаДней = "Понедельник,Вторник,Среда,Четверг,Пятница,Суббота,Воскресенье";
МассивДней = СтрРазделить(СтрокаДней, ",");
МассивДней[5] = МассивДней[5] + "вых.";
МассивДней[6] = МассивДней[6] + "вых.";
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)У вас, как минимум, не выполнено условие задания по использованию операции [...].
Вариант без использования циклов:
Вариант без использования циклов:
СтрокаДней = "Понедельник,Вторник,Среда,Четверг,Пятница,Суббота,Воскресенье";
МассивДней = СтрРазделить(СтрокаДней, ",");
МассивДней[5] = МассивДней[5] + "вых.";
МассивДней[6] = МассивДней[6] + "вых.";
(1) Уж не знаю зачем вам именно оценка, но пожалуйста - говнокод это на устоявшимся жаргоне называется.
Теперь по сути. Даже если отвлечься от того что решение избыточно и не соответствует поставленному заданию, есть пара проблем в вашей реализации:
1. Весь этот цикл не нужен - смысл перебирать если вы и так индексы элементов знаете.
2. Удалить/Вставить - ненужно. Загромождает код и, вероятно, требует больших вычислительных затрат чем просто ДниНедели[Суббота] = ...
3. У вас в массиве уже есть название дня недели, а вы его заменяете строкой содержащей его же. В итоге такой код занимает больше памяти. Ну и представьте что у вас было бы не 2 дня, а 15000 элементов на замену. Так же реализовали бы?
Успехов в освоении программирования, но почитайте что-то не из мира 1С про алгоритмы и структуры данных, комбинаторику.
Теперь по сути. Даже если отвлечься от того что решение избыточно и не соответствует поставленному заданию, есть пара проблем в вашей реализации:
1. Весь этот цикл не нужен - смысл перебирать если вы и так индексы элементов знаете.
2. Удалить/Вставить - ненужно. Загромождает код и, вероятно, требует больших вычислительных затрат чем просто ДниНедели[Суббота] = ...
3. У вас в массиве уже есть название дня недели, а вы его заменяете строкой содержащей его же. В итоге такой код занимает больше памяти. Ну и представьте что у вас было бы не 2 дня, а 15000 элементов на замену. Так же реализовали бы?
Успехов в освоении программирования, но почитайте что-то не из мира 1С про алгоритмы и структуры данных, комбинаторику.
(1)
Массив - это коллекция значений, в 1С эти значения могут быть любого типа, хотя, обычно, в массиве хранятся однотипные значения (или только строки, или только числа, или еще что-то типа ссылок на документы одного типа). Работа с коллекциями: обход и управление (перестановки, сортировка, ...) - это важные навыки. Суть 2-го решения в том, что к элементам коллекции обращаются через [], при этом просто к пятому и шестому добавляют " вых". Код в принципе ошибочен, т.к. предполагает, что суббота и воскресение находятся именно в этих пятом и шестом элементах. Хотя в условиях задачи и сказано, что дни недели надо заполнить по порядку, а в жизни такое вовсе необязательно. С другой стороны, если программа ожидает массива со всеми заполненными днями недели, то нет смысла проверять, заполнены ли пятый и шестой элементы.
Ну и учебник видимо устарел, т.к. заполнять массив строковыми константами лучше функцией СтрРазделить. В итоге код действительно сводится к условно трем строчкам.
хотелось бы попросить оценки моего кода
Код хороший уже только потому, что он работает. В программировании это является практически основным фактором. Да, производительность и эффективность кода вообще безусловно важна, но т.к. программистов в принципе мало, то это все уходит на второй план, и плохой код, который работает, лучше идеального, но не работающего, кода, т.к. его тупо некому написать.
Массив - это коллекция значений, в 1С эти значения могут быть любого типа, хотя, обычно, в массиве хранятся однотипные значения (или только строки, или только числа, или еще что-то типа ссылок на документы одного типа). Работа с коллекциями: обход и управление (перестановки, сортировка, ...) - это важные навыки. Суть 2-го решения в том, что к элементам коллекции обращаются через [], при этом просто к пятому и шестому добавляют " вых". Код в принципе ошибочен, т.к. предполагает, что суббота и воскресение находятся именно в этих пятом и шестом элементах. Хотя в условиях задачи и сказано, что дни недели надо заполнить по порядку, а в жизни такое вовсе необязательно. С другой стороны, если программа ожидает массива со всеми заполненными днями недели, то нет смысла проверять, заполнены ли пятый и шестой элементы.
Ну и учебник видимо устарел, т.к. заполнять массив строковыми константами лучше функцией СтрРазделить. В итоге код действительно сводится к условно трем строчкам.
(1)
на вот, для коллекции
на вот, для коллекции
МассивДней = Новый Массив;
Для НомерДняНедели = 0 По 6 Цикл
МассивДней.Добавить(ТРег(Формат(НачалоНедели(ТекущаяДата())+НомерДняНедели*86400,"ДФ=дддд")));
Если НомерДняНедели>=5 Тогда
МассивДней[НомерДняНедели] = МассивДней[НомерДняНедели] + " вых";
КонецЕсли;
КонецЦикла;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот