我知道卡關的感覺不好受,不過我想你在迷宮已經頭暈了吧...
你用太多money,有些是型態(struct),有些是未宣告的東西(因為未宣告所以不知怎麼稱呼)
你先將struct外加上範圍子的宣告,會比較好釐清你的問題
複製程式
#include<iostream>
#include<iomanip>
using namespace std;
namespace my_struct
{
struct money
{
double US;
double NT;
};
}
double conversion1(my_struct::money &money);
double conversion2(my_struct::money &money);
int main()
{
int i,j;
double US=0,NT=0;
cout<<"請選擇轉換方式"<<endl<<endl;
cout<<"(1)台幣 ---> 美金"<<endl;
cout<<"(2)美元 ---> 台幣"<<endl;
cin>>j;
while((US >0 && NT >0) && j >0)
{
if(j==1)
{
cout<<"請輸入台幣金額: ";
cin>>NT;
cout<<"您輸入的台幣金額為: "<<NT;
conversion1(money);
cout<<"換算後的美元金額為: "<<US;
}else{
cout<<"請輸入美元金額: ";
cin>>US;
cout<<"您輸入的美元金額為: "<<US;
conversion2(money);
cout<<"換算後的美元金額為: "<<NT;
}
}
system("PAUSE");
return 0;
}
double conversion1(my_struct::money& money)
{
int rate = 35,US,NT;
US = NT * rate;
return US;
}
double conversion2(my_struct::money& money)
{
int rate = 35,NT,US;
NT = US / rate;
return NT;
}
結果編譯出來會出現'money' : undeclared identifier
你需要用my_struct::money這個形態去產生一個實體money
然後將NT及US assign到那個實體,之後將實體傳進你的函式
再用這個實體的NT及US做運算...
然後初步的程式就變成
複製程式
#include<iostream>
#include<iomanip>
using namespace std;
namespace my_struct
{
struct money
{
double US;
double NT;
};
}
double conversion1(my_struct::money &money);
double conversion2(my_struct::money &money);
int main()
{
int i,j;
double US=0,NT=0;
//用my_struct::money這個形態去產生一個實體money
my_struct::money money;
cout<<"請選擇轉換方式"<<endl<<endl;
cout<<"(1)台幣 ---> 美金"<<endl;
cout<<"(2)美元 ---> 台幣"<<endl;
cin>>j;
while((US >0 && NT >0) && j >0)
{
if(j==1)
{
cout<<"請輸入台幣金額: ";
cin>>NT;
//將NT及US assign到那個實體
money.NT = NT;
cout<<"您輸入的台幣金額為: "<<money.NT;
US = conversion1(money);
cout<<"換算後的美元金額為: "<<US;
}else{
cout<<"請輸入美元金額: ";
cin>>US;
//將NT及US assign到那個實體
money.US = US;
cout<<"您輸入的美元金額為: "<<money.US;
NT = conversion2(money);
cout<<"換算後的美元金額為: "<<NT;
}
}
system("PAUSE");
return 0;
}
double conversion1(my_struct::money& money)
{
int rate = 35,US,NT;
US = money.NT * rate;
return US;
}
double conversion2(my_struct::money& money)
{
int rate = 35,NT,US;
NT = money.US / rate;
return NT;
}
當然還沒有結束,你的程式還是有些陷阱
在剛開始的時候,你MAIN()裡頭的US跟NT都宣告為0
所以While一直都進不去...
(時間緊迫時,還是要看清楚money的定義....)