[英]input float in C++?
我編寫了一個程序來計算所有可能性,但是使用整數,現在我必須對浮點數進行計算,如何將程序更改為輸入浮點數而不是整數? 這只是一部分,但如果我可以為第一個開關做到這一點,我可以為所有人做到:
#include <fstream>
using namespace std;
ifstream in("multimi.in");
ofstream out("produs.out");
void input(int *v)
{
for(int i=1; i<=2; i++)
in>>v[i];
}
int main()
{
float a[3],b[3],c[3],d[3],e[3],s[3];
int num_tot;
in>>num_tot;
switch(num_tot)
{
case 2:
input(a);
input(b);
for(int i=1; i<=2; i++)
for(int j=1; j<=2; j++)
out<<a[i]<<","<<b[j]<<endl;
break;
這是使用 int 的代碼:
#include <fstream>
using namespace std;
ifstream in("multimi.in");
ofstream out("produs.out");
void input(int *v)
{
for(int i=1; i<=2; i++)
in>>v[i];
}
int main()
{
int a[3],b[3],c[3],d[3],e[3],s[3];
int num_tot;
in>>num_tot;
switch(num_tot)
{
case 2:
input(a);
input(b);
for(int i=1; i<=2; i++)
for(int j=1; j<=2; j++)
out<<a[i]<<","<<b[j]<<endl;
break;
如果要解析input
function 中的float
值,則必須有一個兼容的參數,因為您將浮點數組作為參數傳遞(它成為指向數組第一個元素的指針),您將需要一個指向float
而不是指向int
的指針。
void input(float *v){ ... }
我還應該注意,您正在繞過數組中的第一個元素,索引從[0]
開始。
我要做的另一件事是避免使用全局變量,如果你想in
function 中使用你的 ZF7B44CFFAFD5C52223D5498196C8A2E7BZ 你可以通過引用將它作為 ZC1C425268E68385D1AB5074C17A94 的參數傳遞給 ZC1C425268E68385D1AB5074C17A94
所有的事情都考慮到你會有這樣的事情:
void input(float *v, ifstream& in)
{
for (int i = 0; i < 2; i++)
in >> v[i];
}
int main()
{
ifstream in("test.txt");
ofstream out("produs.out");
float a[2], b[2];
int num_tot;
if (in.is_open() && out.is_open()) //it's important to check for successful file opening
{
in >> num_tot;
switch (num_tot)
{
case 2:
input(a, in);
input(b, in);
for (int i = 0; i < 2; i++)
{
out << a[i] << ", " << b[i] << endl;
}
break;
}
}
}
如果你想要一些適用於int
和float
的東西,你可以制作一個 function 可以使用模板同時采用這兩種類型,我承認現在這可能太多了,但是當你對語:
template<typename T> void input(T& v, ifstream& in)
{
for (int i = 0; i < 2; i++)
in >> v[i];
}
這里T
可以同時采用int
或float
,另外一個優點是它也可以通過引用傳遞。 當然,如果您願意,您仍然可以使用指針,但通過引用傳遞更可取,因為它更安全。
考慮不使用using namespace std;
您可以點擊此鏈接了解其原因、何時可以安全使用以及替代方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.