Форум программистов, компьютерный форум CyberForum.ru

Что за значение? - C++

Восстановить пароль Регистрация
 
TGrey[WoLf]
 Аватар для TGrey[WoLf]
39 / 39 / 1
Регистрация: 14.09.2008
Сообщений: 685
18.03.2009, 23:09     Что за значение? #1
Привет, в общем накатал прогу для решения задач по математике, работала правильно все как надо выводила. Но сейчас вот начал делать контрольную и на мой вариант попался баг. Программа продолжает все правильно выводить но в 1 случае вместо 0 выводит 8.8е-016.
Программа решает задачи Жордана-Гаусса. В общем на последней итерации этот клюк выявился. И что самое ужасное числа все верные! Я и через дебагер смотрел и выводил все что можно.
Вот участок кода
Код
				double tmp = ((fields[ci][j] * fields[i][cj]) / fields[ci][cj]);
				fields2[i][j] = (double)fields[i][j] - (double)tmp;//((fields[ci][j] * fields[i][cj]) / fields[ci][cj]);
				if( i == 2 && j == 4)
				{
					cout<<fields[i][j]<<" "<<tmp<<" "<<fields[i][j]-tmp<<endl;
				}
				//cout<<"filelds[i][j]"<<fields[i][j]<<endl;
			//	cout<<fields[ci][j] * fields[i][cj]<<endl;
			//	cout<<(fields[ci][j] * fields[i][cj]) / fields[ci][cj]<<endl;
			//	cout<<fields[i][j] -((fields[ci][j] * fields[i][cj]) / fields[ci][cj])<<endl;
			//	cout<<fields[i][j]<<"-(("<<fields[ci][j]<<"*"<<fields[i][cj]<<") /"<<fields[ci][cj]<<")="<<fields2[i][j]<<endl;
			}
Выводил все что можно и как можно и всегда выводит
-4 -4 8.8е-016
-4((-4*1)\1)=8.8е-016
даже просто если посчитать отдельно значения
fields[i][j] = -4
double tmp = ((fields[ci][j] * fields[i][cj]) / fields[ci][cj]); = -4
и
fields[i][j]-tmp = 8.8е-016
Что оно не может преобразовать, что за дела?
Массив типа double.

Что самое веселое, мой друг сделал такую же программу но своими силами, тоесть у нас 2 разные программы выполняющие одну задачу, но когда он ввел эти данные у себя у него в том месте вывело -2.384e-007
Это что компилятор тупил или как?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2009, 23:09     Что за значение?
Посмотрите здесь:

Выводится случайное значение переменной у при х=-3. Что делать? C++
C++ Верно ли, что только одна из логических переменных a и b имеет значение true
C++ Что значит вычислить значение функции с заданной точностью?
C++ Как сделать что бы находило наибольшое значение?
Найти наименьшее значение m такое что 2m>n с использованием циклов C++
C++ Проверить что в массиве минимальное значение находится раньше максимального
Проверить, что в первой ячейке массива лежит то же значение, что и в остальных C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
EnzoMatrix
 Аватар для EnzoMatrix
120 / 120 / 4
Регистрация: 14.03.2009
Сообщений: 462
18.03.2009, 23:15     Что за значение? #2
перепроверь иттерации может где то за пределы массива вылазит, вот и ставит тебе числа странные, а вообще толку с того участка проги что ты сюды сунул 0, тут тока вывод, а он скорее всего верный
TGrey[WoLf]
 Аватар для TGrey[WoLf]
39 / 39 / 1
Регистрация: 14.09.2008
Сообщений: 685
18.03.2009, 23:26  [ТС]     Что за значение? #3
Стоит проверка
Код
if( i == 2 && j == 4)
если дальше в коде печатать
fields[2][4] то выведит 8.8e-016
тоесть тут все норм в пределах.
Потом я уже написал что выводил все данные со всех переменных в них все как надо.
EnzoMatrix
 Аватар для EnzoMatrix
120 / 120 / 4
Регистрация: 14.03.2009
Сообщений: 462
18.03.2009, 23:33     Что за значение? #4
не факт ты напиши на вывод fields[2][100] он тебе тож число какое нибудь выведет

Добавлено через 1 минуту 3 секунды
мне очень сильно кажеца что ты за пределы массива вылазишь, тем более раз иттерация последняя криво пашет
TGrey[WoLf]
 Аватар для TGrey[WoLf]
39 / 39 / 1
Регистрация: 14.09.2008
Сообщений: 685
18.03.2009, 23:42  [ТС]     Что за значение? #5
массив 4х6
и я вывожу 2 4 не думаю что я за пределами.
И тем более другие варианты работают, как надо с тем же кол-вом итераций.
В общем вот код гляньте.
Вложения
Тип файла: rar matem.rar (1.5 Кб, 21 просмотров)
EnzoMatrix
 Аватар для EnzoMatrix
120 / 120 / 4
Регистрация: 14.03.2009
Сообщений: 462
18.03.2009, 23:54     Что за значение? #6
да не маленький код, седня точно разобраца не успею...
TGrey[WoLf]
 Аватар для TGrey[WoLf]
39 / 39 / 1
Регистрация: 14.09.2008
Сообщений: 685
18.03.2009, 23:57  [ТС]     Что за значение? #7
Я склоняюсь к ошибки компилятора или преобразования. Не может же быть, что другие числа считает нормально а тут бред выводит. При том что если по отдельности все выводить то все правильно.
EnzoMatrix
 Аватар для EnzoMatrix
120 / 120 / 4
Регистрация: 14.03.2009
Сообщений: 462
19.03.2009, 10:29     Что за значение? #8
может быть и компилятор тупит, но перепроверить все равно надо, у меня случай был похожий я ошибку искал долго: с числом какие-то операции выполнял которые его явно к 0 не приравнят, а он мне упорно 0 рисовал, после перезагрузки компа прога чудом заработала

Добавлено через 10 часов 23 минуты 9 секунд
чето по-моему всеп таки где-то в коде ошибка, но если вам сильно кажеца, что это ошибка компилятора, попробуйте сменить компилер и затестить
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.03.2009, 14:59     Что за значение?
Еще ссылки по теме:

Возвращаемое значение. Что именно происходит? C++
Где и что исправить в коде ? Ошибка :sumSequence должна возвращать значение C++
Что значит возвращать значение C++
C++ Что определяет числовое значение в квадратных скобках?
C++ Мусорное значение в динамическом массиве в структуре. Что я делаю не так?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
TGrey[WoLf]
 Аватар для TGrey[WoLf]
39 / 39 / 1
Регистрация: 14.09.2008
Сообщений: 685
19.03.2009, 14:59  [ТС]     Что за значение? #9
Ну а что за злостное совпадение, что у друга в том же месте ошибка, а код разный.
Yandex
Объявления
19.03.2009, 14:59     Что за значение?
Ответ Создать тему
Опции темы

Текущее время: 08:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru