2014-10-14 2 views
0

В настоящее время я программирую базовый калькулятор BMI на C++, используя классы и т. Д. У меня закодированы основы, но когда я запускаю программу и вводю свои параметры, она возвращает странное значение (-9.25596 е + 061)Консольное приложение возвращает странное значение

Это моя главная:

int main() 
{ 
    h_bmi bmi; 
    imperial calcImperial; 
    metric calcMetric; 

    char selection = '0'; 
    cout << "Hello! Welcome to the BMI calculator! This calculator will ask you a few \nquestions for it to calculate your BMI!" << endl; 
    cout << "\n \nWould you like to use metric (Kilograms and meters) or would you like to use \nimperial (pounds and inches) measurements? (m/i)" << endl; 
    cin >> selection; 

    if (selection == 'm' || 'M') 
    { 
     cout << "Enter your weight in kilograms: " << endl; 
     cin >> calcMetric.weight; 
     cout << "Enter your height in meters: " << endl; 
     cin >> calcMetric.height; 
     cout << calcMetric.bmi << endl; 
    } 
    else if (selection == 'i' || 'I') 
    { 
     cout << "Enter your weight in pounds: " << endl; 
     cin >> calcImperial.weight; 
     cout << "Enter your height in inches: " << endl; 
     cin >> calcImperial.height; 
     cout << calcImperial.bmi << endl; 
    } 
    else 
    { 
     cout << "Please enter only 'm' for Metric, or 'i' for imperial!" << endl; 
    } 
    system("PAUSE"); 
    return 0; 
} 

Это мой h_bmi.h

#pragma once 
class h_bmi 
{ 
public: 
    double height, weight, bmi; 
    h_bmi(){}; 
    ~h_bmi(){}; 
}; 

и мой imperial.h (я включил это в моем файле CPP)

#include "h_bmi.h" 
#include <cmath> 
#pragma once 
class imperial : public h_bmi 
{ 
public: 
    double calcBMI(double height, double weight) 
    { 
     bmi = (weight * 703)/(pow(height, 2)); 
     return bmi; 
    }; 

}; 

metric.h:

#include "h_bmi.h" 
#include <cmath> 
#pragma once 
class metric : public h_bmi 
{ 
public: 
    double calcBMI(double height, double weight) 
    { 
     bmi = weight/(pow(height, 2)); 
     return bmi; 
    }; 

}; 

Так как я уже сказал, когда я запускаю программу, я набираю в "м", затем "80", а затем "1.8", но couts это значение. Если кто-нибудь может сообщить мне об ошибке и указать мне в правильном направлении или, возможно, найти исправление, было бы весьма полезно.

+1

Что об изменении ', если (выбор == 'т' || 'М')' с 'если (выбор == 'т' || выбор ==«M ') 'и на самом деле вызов' calcBMI() '? –

+0

я назвал calcBMI так: 'соиЬ << calcMetric.calcBMI (calcMetric.weight, calcMetric.height) << епсИ;' , но она по-прежнему возвращает значение странное (на этот раз это 0.00028125) – davidpox

ответ

5

Вы забыли на самом деле назвать calcBMI()

+0

я назвал calcBMI как так : 'cout << calcMetric.calcBMI (calcMetric.weight, calcMetric.height) << endl;' , но он по-прежнему возвращает странное значение (на этот раз это 0.00028125) – davidpox

+0

У вас есть вес и высота неправильного пути в параметры – MrZebra

+0

Большое спасибо! Это сработало: D Я сделаю все возможное, чтобы не упустить в следующий раз :) – davidpox

Смежные вопросы