powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / задача для начинающих
25 сообщений из 213, страница 5 из 9
задача для начинающих
    #36609909
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
> Например те же итераторы STL постинкремент реализуют в инлайн методе,
> который после подстановки и удаления неиспользуемого кода, которое
> выполняется любым самым захудалым компилятором, превращается в преинкремент.

Это я что-то очень сомневаюсь. Пруфлинк ?

Заменить преинкремет на постинкремент -- это всё равно, что заменить, например,
сложение на умножение. Ради оптимизации.

+1. Оптимизатор - может.
У компилятора разные функции вызываются
operator++()
и
operator++(int)

Он просто не знает, что подмена возможна.

Конечно, это в одном модуле - парсин и оптимизация, но этапы разные.
...
Рейтинг: 0 / 0
задача для начинающих
    #36609913
MAYAKOV_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Верно. Но не надо забывать, даже Мартин Фаулер пишет что начальство вобщем не заинтересовано в рефакторинге. Нет экономически точких показателеф полезности этого процесса. Поддержка кода в "живом", готовом к эволюции состоянии - это 100% задача разработчика. И это сродни хорошему этикету в сообществе девелоперов.
Моя начальница не знает такого слова - рефакторинг :)
Эфективность есть - легче сопровождать, развивать.
Но иногда лучше не трогать код, если он надежно работает, а рефакторинг в данной ситуации пользы особой не принесет. Тут нужна разумная мера.
...
Рейтинг: 0 / 0
задача для начинающих
    #36609933
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это верно. Самое сложно в рефакторинге - доказать эквивалентность преобразований. Т.е. ты кодишь-кодишь, улучшаешь... а потом - Бац! И софт не работает. А модульные тесты прошли успешно. Хотя что такое тесты? Мне удавалось тестами охватить только статические функции и редкий набор инстанциируемых в памяти классов (эдакие сферические лошади в вакууме). До функциональных тестов я как-то не доходил по причине сложности формирования условий. (Это уже не 20% времени от разработки, а поболее будет). И это для Java.

А в других технологиях подкидывает дерьмеца Oracle/PLSQL для которой модульные тесты - слабо интегрируются да и само их применение - под большим вопросом.
...
Рейтинг: 0 / 0
задача для начинающих
    #36609973
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
> Например те же итераторы STL постинкремент реализуют в инлайн методе,
> который после подстановки и удаления неиспользуемого кода, которое
> выполняется любым самым захудалым компилятором, превращается в преинкремент.

Это я что-то очень сомневаюсь. Пруфлинк ?

Заменить преинкремет на постинкремент -- это всё равно, что заменить, например,
сложение на умножение. Ради оптимизации.

Я не говорю что сам компилятор заменяет пост на пре.
Я говорю что пост-операторы в STL внутри реализованы как копирование плюс пре-оператор либо как пост-оператор непосредственно с raw-указателем.
Поэтому при подстановке лишнее копирование будет соптимизировано и останется только пре-оператор.
Для конкретики возьмем vector::iterator (<vector> в MSVC и <bits/stl_iterator.h> в G++).

Понятно что можно извратиться и специально сделать, чтобы постоператоры в таком контексте нельзя было оптимизировать. Но вряд ли кто-то это будет делать специально, верно?
Вот я и спрашивал, в каких же таких случаях реализовано так что компилятор не сможет соптимизировать?
...
Рейтинг: 0 / 0
задача для начинающих
    #36611744
santexnik281
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
системы личных сообщений нет?
как быть?
...
Рейтинг: 0 / 0
задача для начинающих
    #36618261
santexnik281
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток господа Джедаи, властители силы !
Помогите начинающему ОбиВану в его нелегком пути познания истины всего могущества светлой стороны.

я запутался. как такое вообще возможно?
задача:
авторФункция floor может использоваться для округления значения до ближайшего целого.
Оператор:
y = floor ( x * 10 + .5 ) / 10;
округляет х с точностью до одной десятой (первая позиция справа от десятичной точки).
Оператор:
y = floor ( x * 100 + .5 ) / 100;
округляет х с точностью до одной сотой (вторая позиция справа от десятичной точки).
Напишите программу, которая определяет четыре функции для округления х различными способами:
a) roundToInteger (number)
b) roundToTenths (number)
c) roundToHundredths (number)
d) roundToThousandths (number)
Для каждого прочитанного значения ваша программа должна печатать исходное значение, число, округленное до ближайшего целого; число, округленное до ближайшей десятой, число округленное до ближайшей сотой, число округленное до ближайше тысячной.
все вроде бы понятно. но непонятно одно
как вообще это представлять?
ведь выражение floor(х) это округление х до наибольшего целого, не меньшего чем х .
другими словами я не понимаю смысл выражения
y = floor ( x * 10 + .5 ) / 10; не важно какие аргументы у floor а, ведь отдает он целый результат.
может ошибка где в задаче?
...
Рейтинг: 0 / 0
задача для начинающих
    #36618274
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
double floor ( double x );
...
Рейтинг: 0 / 0
задача для начинающих
    #36618275
santexnik281
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
все понял уже
...
Рейтинг: 0 / 0
задача для начинающих
    #36618280
santexnik281
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Siemargl,

обязательно ли нужно прибавлять 0.5?
...
Рейтинг: 0 / 0
задача для начинающих
    #36618284
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
santexnik281все понял уже
Понял понял. (с) Star Wars

RTFM
...
Рейтинг: 0 / 0
задача для начинающих
    #36618288
santexnik281
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Siemargl,

а я думал Великим Джедаям чужды подобные ухмылки

к чему добавлять половину то?
физический смысл?
...
Рейтинг: 0 / 0
задача для начинающих
    #36618290
santexnik281
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
santexnik281,

если есть ceil(x)
...
Рейтинг: 0 / 0
задача для начинающих
    #36618321
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
santexnik281к чему добавлять половину то?приведение double к int по правилам С++ - отброс дробной части, округление в математическом смысле - округление до ближайшего целого, для эмуляции математического округления в С++ используется конструкция ( x + 0.5 )
...
Рейтинг: 0 / 0
задача для начинающих
    #36618743
santexnik281
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
egorych,

чем же ceil(x) не устраивает?
...
Рейтинг: 0 / 0
задача для начинающих
    #36618767
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
santexnik281santexnik281,

если есть ceil(x)
Есть три вида округления. С избытком. С недостатком. И арифметическое.
Т.е. по правилам математики, если дробная часть больше половины то единица
идёт в старший разряд.
...
Рейтинг: 0 / 0
задача для начинающих
    #36618776
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton пишет:

> Есть три вида округления. С избытком. С недостатком. И арифметическое.
> Т.е. по правилам математики, если дробная часть больше половины то единица
> идёт в старший разряд.

Есть ещё бухгалтерское. Что-то типа чётное десятое в одну сторону, нечётное --
в другую. Хотя я сам про применение такого не слышал.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
задача для начинающих
    #36618803
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЕсть ещё бухгалтерское. Что-то типа чётное десятое в одну сторону, нечётное --
в другую. Хотя я сам про применение такого не слышал.

Да... это странно. Алхимия какая-то.
...
Рейтинг: 0 / 0
задача для начинающих
    #36618846
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
santexnik281egorych,

чем же ceil(x) не устраивает?потому что ceil округляет всегда в большую сторону, а это не арифметическое округление ни разу.
...
Рейтинг: 0 / 0
задача для начинающих
    #36618885
santexnik281
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

да понял я что округляет.
есть некий господин Икс, допустим его надо округлить..
Зачем ДО округления прибавлять половину то?
...
Рейтинг: 0 / 0
задача для начинающих
    #36618889
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо взять modf и написать то округление которое надо
...
Рейтинг: 0 / 0
задача для начинающих
    #36618911
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
santexnik281mayton,

да понял я что округляет.
есть некий господин Икс, допустим его надо округлить..
Зачем ДО округления прибавлять половину то?затем, чтобы продемонстрировать, чего надо получить. Это же задание? предполагается, видимо, что выполняющий его знает, как происходит округление в С++.
...
Рейтинг: 0 / 0
задача для начинающих
    #36618946
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
santexnik281mayton,

да понял я что округляет.
есть некий господин Икс, допустим его надо округлить..
Зачем ДО округления прибавлять половину то?
Какой-же ты непроходимый болв сантехник Чтобы число 2.5 после мат. округления дало 3.0 надо к нему прибавить 0.5 и вычислить floor. Чтобы формула работала для заданного разряда, число подвергают линейной функции (в данном случае - это умножение на число кратное десяти) и переносят операцию округления на любой разряд, а потом линейно возвращают обратно.

Чтобы не задавать слишком глупых вопросов надо сначала почитать матчасть!
...
Рейтинг: 0 / 0
задача для начинающих
    #36618959
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, а как на счет -2.5 ?
...
Рейтинг: 0 / 0
задача для начинающих
    #36618962
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я общий принцип объяснил.
...
Рейтинг: 0 / 0
задача для начинающих
    #36618980
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, понятно!Мое дело - стратегия, а кто кошке колокольчик привешивать будет, я не знаю
...
Рейтинг: 0 / 0
25 сообщений из 213, страница 5 из 9
Форумы / C++ [игнор отключен] [закрыт для гостей] / задача для начинающих
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]