好的,所以我有一個問題,我需要用戶輸入兩個 int 或 float,然后找到這兩個數字的最大值和最小值。我的 if 回圈 int 作業正常,但對于 float ,它需要一個浮點值并立即結束程式。誰能幫我解決這個錯誤?這是我的代碼:
#include <iostream>
using namespace std;
template <class T>
class mypair
{
T a;
T b;
public:
mypair(T a=0, T b=0)
{
this->a=a;
this->b=b;
}
void setFirst(T a)
{
this->a = a;
}
T getFirst()
{
return a;
}
void setSecond(T b)
{
this->b = b;
}
T getSecond()
{
return b;
}
T getmax();
T getmin();
};
template <class T>
T mypair<T>::getmax()
{
T retval;
retval = getFirst() > getSecond() ? getFirst() : getSecond();
return retval;
}
template <class T>
T mypair<T>::getmin()
{
T min;
min = getFirst() < getSecond() ? getFirst() : getSecond();
return min;
}
int main()
{
char opt;
cout << "program to find a minimum and maximum" << endl;
cout << "--------------------------------------------" << endl;
cout << "Do you want to type in two integers or two floats ?"<<endl;
cout << "(i for integer , f for float)"<<endl;
cin >> opt;
if (opt == 'i' || opt == 'I')
{
mypair<int> myobject;
int int1, int2;
cout << "Enter first INT = ";
cin >> int1;
myobject.setFirst(int1);
cout << "Enter second INT = ";
cin >> int2;
myobject.setSecond(int2);
cout << "---------------------------------------" << endl;
int choice;
cout << "Find Maximum or Minimum?" << endl;
cout << "(1 for maximum ,0 for minimum)" << endl;
cin >> choice;
if (choice == 0)
{
cout << myobject.getmin();
}
if (choice == 1)
{
cout << myobject.getmax();
}
}
if (opt == 'f' || opt == 'F')
{
mypair <float> myobject1;
int fl1, fl2;
cout << "Enter first FlOAT = ";
cin >> fl1;
myobject1.setFirst(fl1);
cout << "Enter second FLOAT = ";
cin >> fl2;
myobject1.setSecond(fl2);
cout << "---------------------------------------" << endl;
int choice;
cout << "Find Maximum or Minimum?" << endl;
cout << "(1 for maximum ,0 for minimum)" << endl;
cin >> choice;
if (choice == 0)
{
cout << myobject1.getmin();
}
if (choice == 1)
{
cout << myobject1.getmax();
}
}
return 0;
}
uj5u.com熱心網友回復:
在if (opt == 'f' || opt == 'F')您將數字宣告為int,而不是float.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/326446.html
