2015-06-25 5 views
1

Остерегайтесь домашней работы ниже.

Редакции:

Вылупана бесполезная информация.Почему эти функции усекают возвращаемое значение?

Очевидно, что это домашнее задание, все кажется правильным, кроме вычислений внутри моих функций.

Как вернуть не усеченное значение?

float hat(float weight, float height) { 
    return (weight/height)*2.9; 
} 
float jacket(float weight, float height, int age) { 
    double result = (height * weight)/288; 
    /*now for every 10 years past 30 add (1/8) to the result*/ 
    if((age - 30) > 0){ 
     int temp = (age - 30)/10; 
     result = result + (temp * .125); 
     //cout<<"result is: "<<result<<endl; 
    } 
    return result; 
} 

float waist(float weight, int age) { 
    double result = weight/5.7; 
    /*now for every 2 years past 28 we add (1/10) to the result*/ 
    if((age - 28) > 0){ 
     int temp = (age - 28)/2; 
     result = result + (temp * .1); 
    } 
return result;} 
+1

Вы принимаете ввод в неправильном порядке. Научитесь использовать отладчик – Amit

+0

Я просто понял это. Теперь значения усекаются вниз или до ближайшего значения. Я собираюсь обновить этот вопрос. – Rekumaru

+0

Существует * причина * мы просим [минимальные полные примеры] (http://stackoverflow.com/help/mcve). – Beta

ответ

0

fixed Set:

// Output data // 
    cout << fixed; 
    cout << "hat size: " << setprecision(2) << hat(weight, height) << endl; 
    cout << "jacket size: " << setprecision(2) << jacket(weight, height, age) << endl; 
    cout << "waist size: " << setprecision(2) << waist(weight, age) << endl; 
1
cout << "hat size: " << setprecision(2) << hat(weight, height) << endl; 

Вы споткнулся Gotcha в пути iostreams форматированного вывода работ.

В режиме «по умолчанию» для форматирования значений с плавающей запятой (не запросив fixed или scientific выхода), точность является общего количества цифр для печати, по обе стороне от десятичной точки. Думайте «значимые цифры», а не «количество дробных цифр».

Для чего вы пытаетесь сделать это, я предлагаю вам либо использовать «фиксированный» режим, либо раунд вручную, а затем не указывать точность.