0

これを実行するには、深刻な助けが必要です。inputFile でループを台無しにしていると思います。プログラムがコンパイルされ、.txt ファイルが適切なディレクトリに作成されます。txt は、ユーザー入力を置き換えるテスト ファイルです。このファイルには、1、115、および 10 の 3 つの別々の行に 3 つの数字が含まれています。これが私のコードです。

//Headers
//Headers
#include<iostream>
#include<fstream>
#include<cmath>
#include<cstdlib>
#include<iomanip>
using
namespace std;
void PaintJobEstimator(double gallonprice, double wallspace)
{
    double numBucket;
    double hours;
    double bucketCost;
    double laborCharges;
    double totalCost;
    {
    //calculates number of buckets of paint (gallons) needed
    numBucket=1/115*wallspace;
    //calculates paint cost
    bucketCost=gallonprice*numBucket;
    //calculates labor hour
    hours=8/115*wallspace;
    //calculates labor charges
    laborCharges=hours*18;
    //calculates total cost
    totalCost=bucketCost+laborCharges;
    //Console output
    {
        cout << "The number of Gallons of paint required:\t" << numBucket << endl;
        cout << "The hours of labor required:\t" << hours << " hrs" << endl;
        cout << "The labor charges:\t$" << laborCharges << endl;
        cout << "The cost of the paint:\t$" << bucketCost << endl;
        cout << "The total cost of the paint job:\t$" << totalCost << endl;
    }

    }

}

int main ()
{
    int rooms=0; //number of rooms
    double wallspace=0; //wall space measured in square meters
    double gallonprice=0; //Price per gallon
    cout << "=========================================================\n";
    cout << "___________________Paint Job Estimator___________________\n";
    cout << "_________________________________________________________\n";
    //by Jeff Youngblood
    cout << endl;
    ifstream inputFile;
    //open the file
    inputFile.open("17.txt");
    if (inputFile.is_open())
    {
        if (rooms>=1) //validates rooms
        {
            inputFile >> rooms;
        }
        for (int roomNum=1;roomNum<=rooms;roomNum++)
        {
            if (wallspace>1)//validates and inputs wallspace
            {
                inputFile >> wallspace;
            }
        }
        //end loop
        while (gallonprice>10) //validates price per gallon
        {
            inputFile >> gallonprice;
        }
        PaintJobEstimator(gallonprice,wallspace);
        system ("pause");
    }
    else
        cout <<"Error reading file '17.txt', please check your directory.\n";
}
4

2 に答える 2

2

このシーケンス

    double wallspace = 0;
    //...
    if (wallspace>1) //validates and inputs wallspace
    {
        inputFile >> wallspace;
    }

if ステートメントの条件は常に false であるため、機能しません。そこに到達するとwallspace、値がゼロになるため、新しい値を入力しようとすることはありません。

の場合と同様にgallonprice、初期条件が false であるため値を入力しないため、ループに入ることはありません。

于 2012-11-15T10:14:02.687 に答える
1

すべてのファイル読み取りは条件付きであり、ゼロより大きい値を期待しますが、init部屋、壁のスペース、およびガロン価格がゼロであるため、ファイルが読み取られることはありません。PaintJobEstimatorしたがって、0,0で呼び出されます。条件を削除して、そこから作業を進めてください。

于 2012-11-15T10:25:21.647 に答える