Циклы, если операторы, Функция с использованием inputFile выводит только 0

Мне нужна серьезная помощь, чтобы запустить это. Я думаю, что я путаю циклы с inputFile .. Программа компилируется и файл .txt находится в правильном каталоге. TXT — это тестовый файл, который заменяет пользовательский ввод. Файл содержит три числа в трех отдельных строках: 1, 115 и 10.
Вот мой код:

//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";
}

0

Решение

Эта последовательность

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

не работает, так как условие в операторе if всегда ложно. Когда вы туда доберетесь, wallspace имеет значение ноль, поэтому вы никогда не пытаетесь ввести новое значение.

Аналогично для gallonpriceВы никогда не вводите значение, потому что начальное условие ложно, поэтому цикл никогда не вводится.

2

Другие решения

Все ваши чтения файла являются условными, ожидая значения больше нуля, но так как вы init комнаты, wallspace и gallonprice с нуля, файл никогда не читается. PaintJobEstimator следовательно, вызывается с 0,0. Попробуйте удалить условия и проложите себе путь оттуда.

1

По вопросам рекламы [email protected]