| 15.07.2010, 05:53 | |
|
Ответы с готовыми решениями:
1272
Элементарные программы, для лучшего понимания языка...
Литература для лучшего понимания сути программирования |
|
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
||
| 20.11.2010, 12:57 | ||
|
Мысль читерская, но других нет
Закомментировать его, тогда точно скомпилируется ![]() Если это деструктор, то =0, это чисто синтаксический элемент, значит, бесполезно пытаться сделать каким бы то ни было образом T равным нулю. Если только #define, но тогда вместо <class T> уже будет фигня.
1
|
||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 20.11.2010, 23:39 [ТС] | ||||||
|
Somebody, C #define мысль верная. Надо вспомнить об еще одной директиве препроцессора, которая вернет T значение шаблонного типа.
Добавлено через 8 часов 59 минут Собственно чуть поменяю тот код. Тут он более очевиден что-ли и на любом компиле вызовет ошибки. Задача все та же
0
|
||||||
|
|
|||||||||||
| 22.11.2010, 13:06 | |||||||||||
|
Задача на понимаение работы с плавающими (float point) числами
Дан исходник. Содержимое функции func неизвестно
3
|
|||||||||||
|
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
|
|
| 22.11.2010, 15:15 | |
|
Возможно
return 0.0/0.0.
3
|
|
|
476 / 444 / 34
Регистрация: 20.11.2009
Сообщений: 1,293
|
|
| 22.11.2010, 15:28 | |
|
Читай про not a number
1
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 01.12.2010, 05:30 [ТС] | |
|
Таки решите кто-нибудь в посте 922.
0
|
|
|
|
||||||
| 02.12.2010, 13:14 | ||||||
|
Сразу предупреждаю, что задача сложная.
Имеется тест. Тест явился результатом разбора на большой задаче, с ошибкой в которой мы столкнулись на работе. Конструкция __attribute__((noinline)) запрещает компилятору делать подстановку функции (чтобы на оптимизациях там что-нибудь не схлопнулось). Это самый простой способ, чтобы оптимизации гарантированно не убили интересную ситуацию (чтобы не нужно было бы писать более сложные примеры).
sparc: "gcc" напечатал "0 0" sparc: "gcc -O2" напечатал "0 0" intel: "gcc" напечатал "0 1" intel: "gcc -O2" напечатал "1 1" Объяснить расхождение. Так или иначе при разборе ситуации полезно было бы иметь возможность повторить всё это самому, но, понятное дело, практически ни у кого нет возможности запустить этот код на sparc'е. Вместо sparc'а можно попробовать запустить под виндой при помощи microsoft'овского или borland'овского комплятора. Я не знаю, какие они выдадут результаты, но в любом случае что-то с чем-то не совпадёт (потому как мы уже видим три разных результата) Поскольку задача слишком сложная для начинающего, то оставляю подсказку. Задачу помещаю в первую очередь для того, чтобы на весьма коротком примере, можно было бы пронаблюдать проблему переноса программы с одной архитектуры на другую Подсказка
SPARC'овский gcc работает правильно. Intel'овский gcc косячит и выдаёт неправильный результат (без оптимизаций он ошибается только в одном примере, с оптимизациями - в обоих)
2
|
||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 02.12.2010, 14:36 [ТС] | |
|
Evg, Студия сие компилировать не решилась. Не в Си, не в CPP.
0
|
|
|
C/C++
93 / 93 / 18
Регистрация: 01.07.2010
Сообщений: 281
|
|
| 02.12.2010, 15:06 | |
|
0
|
|
|
|
|||
| 02.12.2010, 15:10 | |||
|
Добавлено через 1 минуту
0
|
|||
|
3606 / 2746 / 356
Регистрация: 11.03.2009
Сообщений: 6,317
|
|
| 02.12.2010, 15:10 | |
|
ForEveR, у меня билдер тоже отказался компилировать, пришлось __attribute__((noinline)) убрать. Выдает 0 1.
0
|
|
|
3606 / 2746 / 356
Регистрация: 11.03.2009
Сообщений: 6,317
|
||
| 02.12.2010, 16:51 | ||
|
Думается так
Ковыряние дизассемблерного кода и справочника по ассемблеру показало следующее. Код для обоих функций генерируется практически идентичный за некоторым исключением. В обоих случаях ll приводится к вещественному типу и результат помещаеться в регистр сопроцессора. Далее вторая функция использует непосредственно регистр, а первая - преобразованное ll (сохраняет d1) записывает в стек. При этом в 64 бита стека запихивается 80-ти битный регистр сопроцессора, достигается это путем округления числа мантиссы до значения, соответствующего размеру мантиссы приемника. Вот из-за этого округления и объясняется, на мой взгляд, разница в работе этих функций. Только вот может я что-то проглядел или недопонял, но мне кажется intel'ая верся работает правильно, а spark'ая - нет.
0
|
||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 02.12.2010, 16:58 [ТС] | |
|
MS без оптимизаций выдает 0 1
0
|
|
|
|
|
| 02.12.2010, 19:03 | |
|
to kazak
В общем-то написано всё правильно. Но на самом деле правильно работает sparc'овская версия. Потому что по стандарту в преобразовании int64->float64 должна быть потеря точности. А в коде intel'а при преобразовании int64->float80 потери не происходит. Т.е. intel'овский код работает с более высокой точностью, но это идёт в противоречии со стандартом. Возможно, что это какое-то соглашение для платформы Intel, что допустимо по умолчанию работать таким образом. Наверняка есть какие-то опции, по которым код начинает работать в строгом соответсвии со стандартом (но становится более медленным)
2
|
|
|
|
||||||
| 02.12.2010, 21:19 | ||||||
|
Evg, хм...
0
|
||||||
|
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
|
|
| 02.12.2010, 22:17 | |
|
Вечер добрый
![]() Ребят, с помощью какого алгоритма решается эта задача? Дано N камней и их массы Wb ... Wn. Написать программу, которая распределяет камни на две кучи так, чтобы разница между массами куч была минимальной. Простым перебором, или еще каким-то образом?
0
|
|
| 02.12.2010, 22:17 | |
|
Набор задачь для тренировки и улучшения понимания программирования Проверить на правильность и закомментировать весь код для лучшего понимания Нужны задачи для тренировки
Нужны задачи для тренировки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания
источниках данных и элементов формы(текстовые поля и метки), опирается все
это на технологию событий и мета. . .
|
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml,
в чате форсили функторы модулей как суперфичу.
Пытаясь отдуплить концепт, наткнулся на тутор с простым примером.
А главный принцип обучения от. . .
|
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
|
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
|
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|