|
0 / 0 / 0
Регистрация: 26.08.2023
Сообщений: 7
|
|
Являются ли значения М и N кратными трем26.08.2023, 01:35. Показов 2026. Ответов 31
Метки нет (Все метки)
Здравствуйте. Нужен максимально короткий код на C++ с объяснением каждой строки кода.
Вот задача: Определить, являются ли значения целочисленных переменных М и N кратными трем. Если оба кратны трем, то вычислить их сумму, иначе вычислить их произведение.
0
|
|
| 26.08.2023, 01:35 | |
|
Ответы с готовыми решениями:
31
Определить являются ли значения целочисленных переменных кратными трем
Найти количество элементов массива, являющихся кратными двум и не кратными трем |
|
Нарушитель
6331 / 3063 / 1054
Регистрация: 01.06.2021
Сообщений: 11,698
|
|
| 26.08.2023, 21:24 | |
|
SmallEvil, видимо, повар1 применил правило "если два числа делятся на 3, то их сумма тоже делится на 3" в обратном порядке, что неверно. Это логическая ошибка. Когда идёт дождь - асфальт мокрый. Но если асфальт мокрый - не факт, что идёт дождь)
0
|
|
|
Модератор
|
||||||||||||||||
| 26.08.2023, 21:40 | ||||||||||||||||
|
Передаём числа как аргументы командной строки:
12
9 Этот вариант самый короткий, который я смог придумать - три строки всего.
0
|
||||||||||||||||
|
Нарушитель
6331 / 3063 / 1054
Регистрация: 01.06.2021
Сообщений: 11,698
|
||
| 26.08.2023, 21:43 | ||
0
|
||
|
Модератор
|
||||||
| 26.08.2023, 21:46 | ||||||
|
Royal_X, два стейтмента на одной строке - признак плохого кода. У меня получается один compound statement на одной строке. Такой код, конечно, изящным не назовёшь, но ТС хотел как можно короче. В принципе, если пренебречь правилом один стейтмент - одна строка, то можно ещё короче:
0
|
||||||
|
Модератор
|
||||||
| 26.08.2023, 21:52 | ||||||
Сообщение было отмечено Royal_X как решение
Решение
Если у нас драка за каждый символ, то можно даже так:
1
|
||||||
|
0 / 0 / 0
Регистрация: 26.08.2023
Сообщений: 7
|
|
| 27.08.2023, 20:24 [ТС] | |
|
sourcerer, у вас самый маленький код а пояснения? Если можете можно ещё меньше?
Добавлено через 22 секунды Ребята можете пояснить для новичка что такое плохой код?
0
|
|
|
0 / 0 / 0
Регистрация: 26.08.2023
Сообщений: 7
|
||||||
| 27.08.2023, 22:51 [ТС] | ||||||
|
sourcerer, у вас чёто и код не работает.
Добавлено через 25 секунд Вот этот:
0
|
||||||
|
Модератор
|
||||||||||||||||||||||
| 27.08.2023, 23:11 | ||||||||||||||||||||||
|
Toyota Camry, всё превосходно работает: https://onlinegdb.com/A60jpB8vL
Заменяйте в коде значения переменных m и n на те, которые нужны Вам, будет разный результат. А так - всё время будет складываться 6 и 3, потому что и 6 и 3 кратны трём, а значит складываем их - получаем 9.Добавлено через 5 минут Toyota Camry, по сути код из сообщения #25 представляет из себя вот такой код, просто записанный в одну строчку:
iostream. Собственно, include - английское слово, означающее "включить". Заголовочный файл iostream - это один из множества файлов стандартной библиотеки языка С++. Директива препроцессора include позволяет нам "включить" в наш файл библиотечный файл iostream. Этот процесс очень похож на обычную пару операций копировать/вставить. Представьте, что вместо этой одной строки в Вашем файле оказываются сотни строк библиотечного кода, написанного умными дядями задолго до Вас, и оттестированного миллионами пользователей. Нам этот заголовочный файл нужен для того, чтобы в нашем коде стали доступны определения библиотечных объектов std::cout и std::cin.Библиотечный объект cout (произносится как "си-аут") - это сокращение от "character output" (по другой версии - от "console output"), то есть, "символьный вывод" или "консольный вывод". Этот объект определён где-то в недрах библиотечного файла iostream. Библиотечный объект cout знает, как выводить на консоль переменные фундаментальных типов (fundamental types) или как их ещё называют, встроенных типов (built-in types). Таким образом, Вам не приходится заботится о том, чтобы самостоятельно реализовывать эту функциональность - она уже доступна в виде готового библиотечного решения. Вы просто используете объект cout, а он выводит на консоль всё, что Вы в него закидываете.Библиотечный объект cin (произносится как "си-ин") - это сокращение от "character input" (по другой версии - от "console input"), то есть "символьный ввод" или "консольный ввод". Этот объект позволяет осуществлять пользовательский ввод с устройства ввода (в нашем случае - с клавиатуры) и сохранять его в переменную.Функция main - это точка входа в программу. Именно эту функцию вызывает операционная система, когда вы кликаете на иконку с Вашей программой или вызываете Вашу программу из командной строки. Слово main - с английского "главная". Функция main как и другие функции в языке С++ имеет чётко определённый синтаксис: сперва мы пишем тип возвращаемого значения (int - от английского "integer" - целое число). Функция main в самом конце своего выполнения вернёт вызывающей стороне (операционной системе) значение целого типа. Обычно это достигается выполнением инструкции return (return statement), и выглядит это так:
Около имени каждой функции (в случае, если мы говорим об определении функции) можно увидеть пару круглых скобок - это так называемый call operator. Внутри круглых скобок располагается список параметров (parameter list). В нашем случае список параметров пуст, то есть, это значит, что мы не передаём внутрь функции main никаких параметров, однако, Вы могли заметить, что в одном из предыдущих примеров я передавал в функцию main пару параметров. Обе этих формы (без параметров и с двумя параметрами) установлены стандартом языка С++. Пара фигурных скобок представляет из себя тело функции (function body). Внутри тела функции располагаются инструкции (statements). Каждая законченная инструкция в языке программирования С++ заканчивается точкой с запятой (за исключением так называемых compound statements, но о них мы сейчас говорить не будем). Таким образом, в нашем примере выше три инструкции:
std и затем два двоеточия. std (или как на конференциях по С++ говорят "студ") - это имя стандартного пространства имён (namespace std). Все классы, функции, константы, объекты стандартной библиотеки помещены в пространство имён std. Это сделано для того, чтобы избежать конфликтов имён. Поскольку хороших имён ограниченное количество, может возникнуть ситуация, когда Вы и, скажем, разработчик сторонней библиотеки, использовали одно и то же имя. Не будь неймспейсов, компилятор не смог бы разобраться, какая именно сущность имеется ввиду - Ваша или библиотечная. Два двоеточия - это оператор разрешения контекста (scope resolution operator).Рядом с объектом cout Вы могли заметить два знака меньше << - это так называемый оператор вставки в поток (insertion operator) или, как его называет в своей книге Стенли Липпман - оператор вывода (output operator). Этот оператор позволяет закинуть в объект cout результат вычисления выражения (m % 3 || n % 3 ? m * n : m + n)В этом выражении используется условный оператор ?: или, как его ещё называют, тернарный оператор. Его синтаксис прост:
В качестве условия у нас выражение m % 3 || n % 3Здесь мы используем оператор взятия остатка от целочисленного деления (значок процента). Если то, что лежит в переменной m (в нашем случае мы положили туда шестёрку, помните?) поделить на 3, то остаток будет ноль. То же верно и для n (мы сложили в неё значение 3). Получается, в обеих частях этого выражения у нас нули. А ноль в С++ в случае логических вычислений - это false. Выражение m % 3 || n % 3 - это и есть такое логическое выражение. Для его вычисления применяется оператор логического ИЛИ (logical OR operator) - это вот те самые две вертикальные палочки (в английской литературе их называют ещё pipe). Оператор || работает так: если хотя бы одна из частей (левая или правая) выражения x || y истинна (true), то всё выражение истинно, в противном случае, всё выражение ложно (false). А мы уже выяснили, что наше выражение m % 3 || n % 3 в случае m равной 6 и n равной 3 и в правой и в левой части ложно. Следовательно, вычисляться будет та ветка, которая после двоеточия, то есть m + n.Запись с тернарным оператором короче, но может немного сбивать с толку начинающего. По сути, чтобы повысить читаемость кода, мы могли бы записать всё, что у нас в теле функции main вот таким образом:
0
|
||||||||||||||||||||||
|
Модератор
|
|
| 28.08.2023, 09:18 | |
|
0
|
|
| 28.08.2023, 09:18 | |
|
Переписать в новый массив все элементы с порядковыми номерами, кратными трем Подсчитать количество цифровых символов в строке с кодами ASCII кратными трем.
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|