簡體   English   中英

C++ 中的輸入浮點數?

[英]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;
        }
    }
}

如果你想要一些適用於intfloat的東西,你可以制作一個 function 可以使用模板同時采用這兩種類型,我承認現在這可能太多了,但是當你對語:

template<typename T> void input(T& v, ifstream& in)
{
    for (int i = 0; i < 2; i++)
        in >> v[i];
}

這里T可以同時采用intfloat ,另外一個優點是它也可以通過引用傳遞。 當然,如果您願意,您仍然可以使用指針,但通過引用傳遞更可取,因為它更安全。


腳注

考慮不使用using namespace std; 您可以點擊此鏈接了解其原因、何時可以安全使用以及替代方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM