Программа запрашивает рост в футах и дюймах. Нужно преобразовать рост в футах и дюймах в рост в дюймах (1 фут = 12 дюймов).
Ввод роста должен производиться в формате (футы.дюймы). Максимальный размер дробной части не может превышать 11. Например, значение 5.12 не может быть принято, потому что в одном футе двенадцать дюймов, т.е. 5.12 футов == 6 футов. Я начал решать задачу, но столкнулся с проблемой: если принятое значение поместить в переменную типа float, то это значение нужно проверить на правильность прежде чем продолжить вычисления. Я использовал для этого функцию modff(), которая помещает целую и дробную части числа в две разные переменные. Как можно проверить дробную часть на правильность, если, например, 5.1 и 5.10 воспринимаются как одно число, но если речь идет о футах и дюймах, то это два разных числа. Ниже я привожу код, который написал. Помогите, пожалуйста, продолжить его или предложите другое решение.
//calculate BMI
#include
float height;
cout << "Enter your height in foots and inches: _____\b\b\b\b\b";
cin >> height;
float foots ;
float inches = modff(height, &foots);
cout << foots << " - The integer part of number" << inches << " - The
float part of number " << endl;
if ( inches >= 0.12 )
{
cout << "Error: Inches value must be less than 12" << endl;
}
else if ( )
{
}
else
{
cout << " foots = " << foots << ", inches = " << inches << endl;
}
return 0;
}
Ответ
#include
string input{};
int foots{};
int inches{};
cout << "Enter your height in foots and inches: _____\b\b\b\b\b";
while (true)
{
cin >> input;
float foots;
//float inches = modff(height, &foots);
int pos = input.find_first_of('.');
if (pos > 0)
{
string sfoots = input.substr(0, pos);
string sinches = input.substr(pos + 1);
foots = atoi(sfoots.c_str());
inches = atoi(sinches.c_str());
}
else
{
if (input.size() > 0)
{
foots = atoi(input.c_str());
}
}
if (inches > 11)
{
cout << "Wrong inches. Retype height in foots and inches" << endl;
cout << "Enter your height in foots and inches: _____\b\b\b\b\b";
}
else
{
cout << foots << " - The integer part of number " << inches << " - The float part of number " << endl;
cout << "The size in inches:" << foots * 12 + inches<
Комментариев нет:
Отправить комментарий