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

C++

Войти
Регистрация
Восстановить пароль
 
TGrey[WoLf]
39 / 39 / 1
Регистрация: 14.09.2008
Сообщений: 685
#1

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

18.03.2009, 23:09. Просмотров 676. Ответов 8
Метки нет (Все метки)

Привет, в общем накатал прогу для решения задач по математике, работала правильно все как надо выводила. Но сейчас вот начал делать контрольную и на мой вариант попался баг. Программа продолжает все правильно выводить но в 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     Что за значение?
Посмотрите здесь:

Проверить, что в первой ячейке массива лежит то же значение, что и в остальных - C++
координатные переменные и функции обьявлены. нужно проверить ячейки массива, что в первой ячейке лежит то же, что и в остальных...

Что значит возвращать значение - C++
Функция возвращает значение; функция удаляет, но не возвращает значения; Функция не возвращает значения. Что значит...

Возвращаемое значение. Что именно происходит? - C++
Имеется код класса &quot;Массив&quot;. Реализованы конструктор копии, деструктор, перегрузка операции присваивания и сложение массивов...

Как сделать что бы находило наибольшое значение? - C++
Как сделать что бы находило наибольшое значение? То есть пользователь пишет a b c три числа и из них показывало наибольшее? В консоле...

Что значит вычислить значение функции с заданной точностью? - C++
Например, дана функция cosx/x и какая-либо точность. Как вычислить значение функции с заданной точностью? Нужен скорее не сам код (но для...

Выводится случайное значение переменной у при х=-3. Что делать? - C++
Задание: Вычислить и вывести на экран таблицу функции y=f(x) в интервале с шагом h. Результаты представить в виде таблицы: х у...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
EnzoMatrix
120 / 120 / 5
Регистрация: 14.03.2009
Сообщений: 462
18.03.2009, 23:15     Что за значение? #2
перепроверь иттерации может где то за пределы массива вылазит, вот и ставит тебе числа странные, а вообще толку с того участка проги что ты сюды сунул 0, тут тока вывод, а он скорее всего верный
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
120 / 120 / 5
Регистрация: 14.03.2009
Сообщений: 462
18.03.2009, 23:33     Что за значение? #4
не факт ты напиши на вывод fields[2][100] он тебе тож число какое нибудь выведет

Добавлено через 1 минуту 3 секунды
мне очень сильно кажеца что ты за пределы массива вылазишь, тем более раз иттерация последняя криво пашет
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
120 / 120 / 5
Регистрация: 14.03.2009
Сообщений: 462
18.03.2009, 23:54     Что за значение? #6
да не маленький код, седня точно разобраца не успею...
TGrey[WoLf]
39 / 39 / 1
Регистрация: 14.09.2008
Сообщений: 685
18.03.2009, 23:57  [ТС]     Что за значение? #7
Я склоняюсь к ошибки компилятора или преобразования. Не может же быть, что другие числа считает нормально а тут бред выводит. При том что если по отдельности все выводить то все правильно.
EnzoMatrix
120 / 120 / 5
Регистрация: 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     Что за значение?
Еще ссылки по теме:

Найти наименьшее значение m такое что 2m>n с использованием циклов - C++
Вводится натуральное число n. Найти наименьшее значение m, такое что 2m&gt;n. Например: 1) Ввели n = 999 2) Вывели на экран m = 10 ...

Проверить что в массиве минимальное значение находится раньше максимального - C++
1.Существует одномерный массив. Правда,что минимальное значение в массиве находится раньше максимального числа?

Мусорное значение в динамическом массиве в структуре. Что я делаю не так? - C++
Здравствуйте! Делаю вычисление факториала от 21 до 30. Использую длинную арифметику. Произведение длинного и короткого чисел -...

Где и что исправить в коде ? Ошибка :sumSequence должна возвращать значение - C++
#include #include #include using namespace std; void displayExplanation(void) { cout &lt;&lt; &quot;Eta porgramma sumiryet...


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

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

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