l1qu1d
|
|
1 | |
Студенческая задачка C++24.09.2009, 22:37. Показов 2760. Ответов 26
Метки нет (Все метки)
Доброго времени суток!
Извиняюсь, если подобный вопрос уже был на форуме, поиск и просмотр 20+ страниц мне результат не выдал, поэтому надеюсь на вашу помощь. Суть, как говорится, такова : "Найдите и распечатайте все трехзначные числа, равные сумме кубов своих цифр". Кому не трудно, черканите в эту тему, пожалуйста, как это будет выглядеть в C++. |
24.09.2009, 22:37 | |
Ответы с готовыми решениями:
26
Описать класс «студенческая группа» Разработать класс "студенческая группа". Предусмотреть возможность работы с переменным числом студентов Описать класс "студенческая группа" Описание класса "Студенческая группа" |
15 / 14 / 2
Регистрация: 24.09.2009
Сообщений: 68
|
|||||||||||
24.09.2009, 23:14 | 2 | ||||||||||
думаю, что примерно так:
Добавлено через 19 минут для надежности в теле цикла условие можно прописать так:
а то у меня компилятор не проглотил сперва простое возведение в степень )))
1
|
24.09.2009, 23:41 | 3 |
> а то у меня компилятор не проглотил сперва простое возведение в степень )))
В Си "^" это не возведение в степень, а xor. А степени нет вообще. ТОгда уж проще переписать вот так: I*i*i + j*j*j + k*k*k
0
|
Модератор
12832 / 7569 / 1764
Регистрация: 25.07.2009
Сообщений: 13,965
|
|||||||||||
25.09.2009, 00:33 | 4 | ||||||||||
Сообщение было отмечено как решение
Решение
да и циклов как-то много
и переменных тоже много...
4
|
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|
25.09.2009, 06:24 | 5 |
GennDALF,
В Вашем алгоритме есть еще одна существенная ошибка: У Вас выпали из проверки числа у которых есть цифры "0". Например 507 и т.п.
2
|
15 / 14 / 2
Регистрация: 24.09.2009
Сообщений: 68
|
|
25.09.2009, 06:33 | 6 |
блин точно! что-то я ступил.. спасибо что сказали!
0
|
l1qu1d
|
|
25.09.2009, 07:11 | 7 |
Большое спасибо за помощь!
|
25.09.2009, 11:32 | 8 |
Выбор вида программы в первую очередь должен определяться простотой её понимания, а не количеством цифр и переменных
А вариант Gendalf'а - в нём два вложенных цикла с нуля должны начинаться, а не с единицы
0
|
Модератор
12832 / 7569 / 1764
Регистрация: 25.07.2009
Сообщений: 13,965
|
|
25.09.2009, 13:10 | 9 |
Хорошо, для именно этой задачи слишком много циклов и переменных. Сама по себе задача простая, как раз на три строчки. Которые, по моему скромному, не то, чтобы сложно осмыслить. Ошибаюсь?
0
|
25.09.2009, 13:17 | 10 | |||||
Как ты думаешь, сколько человек из 100 напишут этот фрагмент с первого раза без ошибок (не запуская при этом на исполнение). И сколько человек из 100 напишут вариант Gendalf'а без ошибок? На мой взгляд вторых будет больше
1
|
Модератор
12832 / 7569 / 1764
Регистрация: 25.07.2009
Сообщений: 13,965
|
||||||
25.09.2009, 13:25 | 11 | |||||
Evg, Очень спорно! Больше текста - больше ошибок. А на счёт "с первого раза" - так мы же здесь вроде как учимся... Кстати, вот в таком виде
0
|
25.09.2009, 13:33 | 12 |
Абсолютная неправда. Ошибок больше тогда, когда больше сложного текста, в который надо вдумываться. Ярким примером служит твой второй тест - лично я его даже смотреть не стал. А вот вариант gendalf'а понять с одного взгляда и без каких либо "приглядеться повнимательнее".
А вот потом такой вот "умный код" начинает плодиться и разнможаться. А при дальнейшей модификации нужно в него вникать и втыкать, что как правило заканчивается тем, что при модификации вносятся ошибки. В результате имеем то, что программы типа ИЕ только к 8-й версии за 10 лет развития начинают работать более-менее безглючно Я не навязываю тебе твою точку зрения. Просто высказываю своё мнение, проверенное многолетним опытом
1
|
Модератор
12832 / 7569 / 1764
Регистрация: 25.07.2009
Сообщений: 13,965
|
|
25.09.2009, 13:43 | 13 |
Всё равно не соглашусь. Вдумываться так или иначе всё равно прийдётся. А понять одну строчку, пусть и кажущуюся на первый взгляд чем-то вроде "Здесь был Вася" на марсианском языке, по-моему всё-таки проще, чем три цикла, шесть переменных, да ещё и функцию дополнительную. По поводу ИЕ ничего не скажу. Понятия не имею, кто там что и как писал... Просто из любопытства: а Вы все эти 10 лет от него исходники где смотрели?
0
|
25.09.2009, 14:00 | 14 | |||||
Я его исходники не смотрел. Я написал условно. Но есть в жизни такое, что геморройно написанные программы живут недолго. А глобальный геморрой начинается вот с таких вот мелочей из разряда "сэкономить количество переменных". Убеждать тебя в чём-то нет ни времени, ни желания. Пиши так, как считаешь для себя более приемлимым. А время покажет, в чём ты был прав, а в чём ошибался
Добавлено через 11 минут Я бы написал вот так
0
|
Модератор
12832 / 7569 / 1764
Регистрация: 25.07.2009
Сообщений: 13,965
|
|
25.09.2009, 14:06 | 15 |
Не, ну в крайности-то впадать не нужно. Всегда от ситуации зависит. В этом случае вполне можно и одной переменной обойтись, от которой просто по цифре отрезается. Если для ясности лучше, когда что-то в дополнительных переменных сохраняется (даже если можно было бы и "сэкономить" на них), так пусть будут переменные, да ещё и с комментариями, а то потом всё равно голову ломать прийдётся... С другой стороны, если наплодить два десятка переменных там, где и двух-то много, так запутаться ещё проще будет. Особенно если им имена давать типа a b c или вроде того... Я так считаю...
0
|
15 / 14 / 2
Регистрация: 24.09.2009
Сообщений: 68
|
|
25.09.2009, 18:23 | 16 |
Что касается экономии переменных и вообще того, как я написал эту задачку, то здесь причина проста: я начинал учиться программировать уже на объектно-ориентированных языках, как то VB.NET и именно С++, а не старый С. И потому мне так проще воспринимать код, когда даже расчет трехзначного числа вынесен в отдельную функцию.
Я считаю, что не спроста эволюция высокоуровневых языков стремится ввести как раз объектно-ориентированный подход, видимо в этом есть резон. И я полностью согласен с Evg. Когда приходится часами медитировать над сложным многостраничным кодом, где каждая вторая строчка выглядит примерно как во втором варианте easybudda, то тогда начинаешь понимать, что лучше потратить 1 МБ вместо 100 кБ, и ввести 20 переменных вместо 10, но только чтобы это выглядело понятно!
0
|
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
|
||||||
25.09.2009, 18:41 | 17 | |||||
Evg все правильно говорит.
А вариант easybudda можно немного исправить на более понятный:
0
|
Модератор
12832 / 7569 / 1764
Регистрация: 25.07.2009
Сообщений: 13,965
|
|
25.09.2009, 18:50 | 18 |
GennDALF, ну может быть и так... С другой стороны я вот больше в исходниках от разных никсовых програмок люблю покапаться (написанных большей частью как-раз на "старом" С)... Порой встречаются по-настоящему красивые решения, хоть на первый взгляд и абсолютно непонятные. На С++ не всегда так получилось бы, а уж про VB и речи не идёт... Опять же, если в многостраничном коде каждая вторая строчка требует того, чтоб над ней задумываться, это, видимо, тоже не спроста. И вряд ли с целью запутать тех, кто этот код потом читать будет. Мало того, обычно к сложным моментам комментарии пишут. Да и думать - не такое уж плохое занятие...
0
|
25.09.2009, 20:30 | 19 | ||||||||||
Всё-таки надо отделять мух от котлет. Когда над каждой второй строкой надо думать из-за того, что ты попросту не знаешь внутреннее устройство программы - это одно, когда нужно думать из-за того, что кто-то решил сэкономить на переменных или на количестве строк кода - это совсем другое
Сравни два фрагмента. Пример взят из книги, чтобы не сочинять самому
А исходники разных юниксовых программ это священная корова что-ли? Их пишут такие же люди с такими же тараканами в голове. Глядя на некоторые куски кода, кроме как желания семиэтажно материться ничего не возникает. Глядя на других надо перенимать положительный опыт, и учитывать плохой. Но не наоборот Думать полезно. Но бесполезно думать - вредно. Зачем писать код так, что над ним надо думать, когда можно написать так, что и без раздумий всё понятно?
0
|
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
|
|||||||||||
25.09.2009, 20:36 | 20 | ||||||||||
2
|
25.09.2009, 20:36 | |
25.09.2009, 20:36 | |
Помогаю со студенческими работами здесь
20
Простой запрос, студенческая задачка Студенческая база Студенческая весна Студенческая группа,сосотоящая из 20 человек Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства
Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
|
Что такое NullReferenceException и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
|
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
|
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
|
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
|
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
|
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее:
На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
|
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript
В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
|
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
|
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален
В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
|
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
|
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели
В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
|