私が持っているこのコードを実行しようとすると頭痛がします。入力した float の値が float と同じデータ型になるかどうかを識別しようとしています。これは私のコーディングです。
#include <iostream>
#include <string>
using namespace std;
int main()
{
float x1, y1, x2, y2, x3, y3, percentage;
string sym1, sym2;
int count;
cout<<"Enter the first fraction : ";
do{
cin>>x1>>sym1>>y1;
if(x1 != float(x1) || sym1 != string(sym1) || y1 != float(y1))
{
cout<<"Please enter the correct fraction : ";
}
else if(sym1 != "/")
{
cout<<"Sorry. This is not a fraction. Please enter again : ";
}
else
{
break;
}
}while(x1 == float(x1) || sym1 == string(sym1) || y1 == float(y1));
cout<<"Enter the second fraction : ";
do{
cin>>x2>>sym2>>y2;
if(x2 != float(x2) || sym2 != string(sym2) || y2 != float(y2))
{
cout<<"Please enter the correct fraction : ";
}
else if(sym2 != "/")
{
cout<<"Sorry. This is not a fraction. Please enter again : ";
}
else
{
break;
}
}while(x2 == float(x2) || sym2 == string(sym2) || y2 == float(y2));
x3 = x1 * x2;
y3 = y1 * y2;
percentage = (x3*100)/y3;
cout<<x1<<"/"<<y1<<" and "<<x2<<"/"<<y2<<" is "<<x3<<"/"<<y3<<"\n";
cout<<x3<<"/"<<y3<<" is "<<percentage<<"%";
return 0;
}
私が変更しようとしているコードはこれです
do{
cin>>x1>>sym1>>y1;
if(x1 != float(x1) || sym1 != string(sym1) || y1 != float(y1))
{
cout<<"Please enter the correct fraction : ";
}
else if(sym1 != "/")
{
cout<<"Sorry. This is not a fraction. Please enter again : ";
}
else
{
break;
}
}while(x1 == float(x1) || sym1 == string(sym1) || y1 == float(y1));
4 / 6 またはその他の関連する分数形式を入力すると、正しく読み取られるようです。同じことが 4 * 6 にも当てはまり、期待される出力が出力されます。しかし、/ 6 または 6 / a を入力すると、論理エラー、無限ループに入ります。if文やwhile文のデータ変換のどこかが間違っているような気がします。それとも、使用されているデータ型が間違っているためですか? 問題が何であるかを追跡できませんでした。これを行う方法に関する解決策はありますか?助けてください。兄弟姉妹の皆さん、よろしくお願いします。