![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
WandM |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 20.11.2005 Где: Питер Репутация: нет Всего: нет |
Здравствуйте. Кто-нибудь знает, что происходит?
Вроде как программа сортировки препод попросил сделать ее так: Прога проходит по файлу f несколько раз и сортирует фамилии в порядке убывания балла (5.0 потом 4.9 и т.д.) Глюк в том, что отсортированы только те фамилии, у кого балл 5.0, 4.9 и 4.8 и больше ничего на экран не выводится!
Файл: 5 A 5.0 5 AA 3.5 5 B 4.9 5 C 4.8 5 CC 4.9 5 D 4.7 и т.д. Результат на экране: A 5.0 B 4.9 CC 4.9 C 4.8 |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Не стоит так float'ы сравнивать. Попробуй заменить на if(fabs(mark-i)<1e-5) к примеру -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
xTr1m |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: 1 Всего: 1 |
А можно немного пояснить, почему сравнивать надо именно с "1e-5" ?
|
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Просто это достаточно маленькое число. Почему бы и нет? Еще в задаче можно похитрить - вместо считывания одного флоата читать два инт-а - тот что ДО точки, и что после. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
можеш и с 1e-6 сравнивать...
это просто допустимая точность -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
xTr1m |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: 1 Всего: 1 |
а почему не работает так
фишка именно в нуле? ![]() Это сообщение отредактировал(а) xTr1m - 23.11.2005, 20:57 |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
xTr1m
Нет. Дело в том машинное представление чисел с плавающей точкой имеет ограниченную точность. Поищи, эта тема не раз подымалась. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
WandM |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 20.11.2005 Где: Питер Репутация: нет Всего: нет |
Спасибо, теперь все работает
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |