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

Погрешность вычислений - C++

Восстановить пароль Регистрация
 
mikhail90
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 76
27.07.2013, 17:19     Погрешность вычислений #1
Читаю книгу Дейтелов "Как программировать на С++", попалась следующая задача, где нужно вводить кол-во бензина, пройденный путь, исходя из этих данных вычислять миль/галлон и вычислить средний расход бензина, когда закончится ввод. Вроде все сделал правильно, но когда ввожу данные которые приведены в качестве примера у авторов, у меня средний расход считается почему - то с очень большой погрешностью. (у меня почему-то больше на 0.3). Помогите разобраться, в чем дело.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    setlocale(0,"");
    float gallon, way, milgal, total = 0.0 ;
    int counter = 1 ;
    cout << "Введите расход бензина (-1, если ввод окончен): " ;
    cin >> gallon ;
    while (gallon != -1)
    {
        cout << "Введите пройденный путь: " ;
        cin >> way ; 
        milgal = way / gallon ;
        cout << "Для этой емкости полученно миль/галлон: " << setprecision(6) << setiosflags(ios::fixed | ios:: showpoint) << milgal << endl ;
        total += milgal ;
        ++counter ;
        cout << "Введите расход бензина (-1, если ввод окончен): " ;
        cin >> gallon ;
    }
    cout << "Средний расход бензина: " << setprecision(6) << setiosflags(ios::fixed | ios:: showpoint) << total / ((float)counter - 1.0) << endl;
    return 0;
}
Миниатюры
Погрешность вычислений  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2013, 17:19     Погрешность вычислений
Посмотрите здесь:

Погрешность и бесконечность C++
Откуда погрешность? C++
C++ Погрешность метода Симпсона
C++ Погрешность дробной части
"Точность вычислений" или "Элементарная погрешность" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rebelition
 Аватар для Rebelition
0 / 0 / 0
Регистрация: 30.05.2013
Сообщений: 21
27.07.2013, 21:31     Погрешность вычислений #2
Скомпилировал в visual studio 2013, ответы получились как в книжке. Скорее всего проблема в твоем компиляторе, попробуй заменить float на double.
mikhail90
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 76
27.07.2013, 21:43  [ТС]     Погрешность вычислений #3
Пробовал, не помогает
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
27.07.2013, 21:53     Погрешность вычислений #4
в книге ошибка. должно получится
(22.421875 + 19.417475 + 24) / 3 = 21,94645
mikhail90
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 76
27.07.2013, 22:24  [ТС]     Погрешность вычислений #5
Ну значит все правильно работает
Yandex
Объявления
27.07.2013, 22:24     Погрешность вычислений
Ответ Создать тему
Опции темы

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