Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кто может помочь чайнику? 
:(
    Опции темы
sergejzr
Дата 6.8.2005, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



В с++ надо всё самому делать. И проверки все тоже. Этим язык и хорош, что ты "напрямую" с процессором общаешься



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Fixin
Дата 6.8.2005, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 2
Всего: 18



Хотите верьте, хотите нет, но сравните:
1) Не работает
Код
for (j=0;((exchange[j+1] != 0) || (exchange[j+1] != 0.05));j++);
2) Работает, но не так
Код
for (j=0;((exchange[j+2] != 0) || (exchange[j+1] != 0.05));j++);

Добавлено @ 23:14
Те вся разница в индексе, точнее его написании.
Добавлено @ 23:18
Тоже не верно...
PM MAIL ICQ   Вверх
dont
Дата 6.8.2005, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 11.7.2005

Репутация: нет
Всего: нет



Ну само собой не так работоет, ты ж вместо 1 написал 2! =)А у меня просто ошибка в том, что мозгов нету! =))) В первой месаге этого цикла логическая ошибка, цикл будет вечно исполняться. =) Извените за напрасное беспокойство.
PM MAIL ICQ   Вверх
Fixin
Дата 6.8.2005, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 2
Всего: 18



Да, бывает...

Это сообщение отредактировал(а) Fixin - 6.8.2005, 23:55
PM MAIL ICQ   Вверх
LPBOY
Дата 7.8.2005, 01:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 12.7.2005

Репутация: 20
Всего: 20



На вопрос уже давно ответил Void).
Вещественные числа НИКОГДА нельзя сравнивать на равенство\неравенство!

Даже если так работает,
Цитата

for (j = 0;(((double)exchange[j+1] != 0.0) || ((double)exchange[j+1] != 0.05));j++);

то это просто повезло, на это нельзя надеяться.
Надо сравнивать модуль разности операндов с некоторой малой величиной,
которую в условиях данной задачи можно считать нулем.

Попробуйте запустить такой пример и посмотреть на результат:
Код

#include <iostream>
#include <conio.h>

int main()
{
    double d=0.0;
    for(int i=0; i<10; ++i)    d+=0.1;
    if(d == 1.0) std::cout<<"d == 1.0";
    else std::cout<<"d != 1.0"<<std::endl;
    getch();
    return 0;
}


Цитата

Возможно, С++ только начинаю учить, но в Паскале сразу бы ошибку выкинуло!

Если переписать этот пример на Паскаль, то будет то же самое. Тут дело не в языке,
а во внутреннем представлении вещественных чисел.

Вспомнился похожий спор, который возник вот тут:
http://forum.shelek.com/index.php/topic,6441.0.html
smile
--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
Fixin
Дата 7.8.2005, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 2
Всего: 18



Цитата
Вещественные числа НИКОГДА нельзя сравнивать на равенство\неравенство!
Ошибка была не в этом! Там вместо ИЛИ должно стоять И.
Добавлено @ 10:49
И по той ссылке сравниваются две преременные, там нужно это сравнение по точности, а если с константой, то, значит, ему нужно точное значение.
PM MAIL ICQ   Вверх
LPBOY
Дата 7.8.2005, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 12.7.2005

Репутация: 20
Всего: 20



Цитата

Ошибка была не в этом! Там вместо ИЛИ должно стоять И.

Значит там были две ошибки smile
Вот еще ссылка на статью (только что нагуглил):
http://www.cygnus-software.com/papers/comp...aringfloats.htm

Цитата

И по той ссылке сравниваются две преременные, там нужно это сравнение по точности, а если с константой, то, значит, ему нужно точное значение.

Разницы никакой нет! Запусти мой пример из предыдущего поста: там тоже сравнение с константой, или смотри статью...

Это сообщение отредактировал(а) LPBOY - 7.8.2005, 10:59
--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
Fixin
Дата 7.8.2005, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 2
Всего: 18



Тк в том примере ты и получаешь неточное значение, а если нужно отсеять 1.0 ни больше, ни меньше?
PM MAIL ICQ   Вверх
chipset
Дата 7.8.2005, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Модератор: Название темы должно отражать ее суть!


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
LPBOY
Дата 7.8.2005, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 12.7.2005

Репутация: 20
Всего: 20



2Fixin Я хотел помочь исправить ошибки в коде, а не спорить...
Если ты мне не веришь, то делай как хочешь... smile
--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
Fixin
Дата 7.8.2005, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 2
Всего: 18



Верю, я говорю, что есть РАЗНЫЕ случаи, вот и все. Думаешь, сам не сталкивался? Тогда бы не спорил.
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0738 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.