#include <iostream>
#include <iomanip>
using namespace std;
class Rectangle
{
float x, y;
public:
void value (float,float);
float area () {return (x*y);}
};
void Rectangle::value (float a,float b)
{
x = a;
y = b;
}
class Circle
{
float x;
public:
void value (float);
float area () {return (3.14*x*x);}
};
void Circle::value (float a)
{
x = a;
}
int main ()
{
float q,a,b;
char reply;
cout << "\t\tArea Calculator";
do
{
cout << "\n\nPlease select from the following: ";
cout << "\n1. Rectangle";
cout << "\n2. Cirlce";
cout << "\n3. Exit";
cout << "\n\n";
cin >> q;
if (q==3)
break;
if (q==1)
{
system("cls");
Rectangle rect;
cout << "\nPlease enter length: ";
cin >> a;
cout << "\nPlease enter width: ";
cin >> b;
cout << "\nArea: " << rect.area();
cin.get();
cout << "\n\nDo you want to continue y/n: ";
cin >> reply;
if (toupper(reply) == 'N')
{
cout << "\n\n";
cout << "Goodbye!";
break;
}
}
if (q==2)
{
system("cls");
Circle circ;
cout << "\nPlease enter radius: ";
cin >> a;
cout << "\nArea: " << circ.area();
cin.get();
cout << "\n\nDo you want to continue y/n: ";
cin >> reply;
if (toupper(reply) == 'N')
{
cout << "\n\n";
cout << "Goodbye!";
break;
}
}
} while (toupper(reply!='Y'));
{
cout << "\n\n";
system("pause");
}
}
上記のコードは、次の警告でデバッグします。
「警告 C4244: 'return': double から float への変換、データが失われる可能性があります」
...これが、コード実行時の計算ミスの原因であると確信しています(たとえば、5x5 の正方形の面積を 1.15292e+016 として返します)。これを解決するための正しい方法を誰か説明してください。私はそれを回避することができません:(