Пример выполнения задачи
Описание проблемы (1)
Описание проблемы (2) Ссылка выше изображение того, что программа должна делать после чтения в текстовом файле и правильного вывода в другой файл. Две другие ссылки являются описанием самой проблемы. Моя проблема в том, что, хотя большая часть logi c работает, когда дело доходит до ее распечатки, она пропускает первое число во входном файле. Например, если входной файл был: 1 10000 2 5000 3 150000 Прямо сейчас выводится файл в файле: Store 2: * Store 3: *** Опять же, изображение предоставляет лучший пример того, что должно произойти. Код должен работать для любого заданного текстового файла, независимо от порядка чисел: (например: 50 10000, 5 5000 и т. Д.).
Я не уверен, почему это происходит. Я прилагаю свой код для справки ниже. Я хотел бы заранее извиниться за отсутствие комментариев, я пытаюсь сначала исправить ошибку. Однако я сузил ошибку до l oop в основной функции. Во-вторых, я новичок, поэтому прошу прощения за любые глупые ошибки, которые я совершил, или если я сделал что-то более неэффективным образом. Еще одно замечание: я не могу изменить сигнатуры для функций, и мне нужно проверить значения, если они действительны в функции readFile (). Я также не могу использовать массивы, команду паузы, прерывание и продолжение. В-третьих, я новичок в переполнении стека, поэтому прошу прощения за любые ошибки, которые я делаю. Спасибо!
На данный момент закомментированный код - это код, который я не планирую использовать, но если есть способ достичь цели, используя этот код и соблюдая правила, пожалуйста, дайте мне знать. Эта ошибка довольно расстраивающая! Кроме того, у меня есть еще некоторые ошибки, чтобы исправить потом, но это мелкие, которые я могу исправить позже. Я хочу сначала исправить эту ошибку. Спасибо!
#include <iostream>
#include <iomanip>
#include <cmath>
#include <fstream>
using namespace std;
bool readFile(ifstream&, long long int&, unsigned int&);
void display(ofstream&, long long int, unsigned int);
int main()
{
ifstream inputFile;
ofstream outputFile;
string fileName;
long long int salesData;
unsigned int storeNumber;
cout << "Enter input file name" << endl;
cin >> fileName;
inputFile.open(fileName);
bool fileRead = readFile(inputFile, salesData, storeNumber);
if(fileRead)//inputFile >> storeNumber >> salesData)
{
outputFile.open("saleschart.txt");
outputFile << "SALES BAR CHART" << endl;
outputFile << "(Each * equals 5,000 dollars)" << endl;
while(inputFile >> storeNumber >> salesData)
{
display(outputFile, salesData, storeNumber);
/*
if(storeNumber < 1 || storeNumber > 99)
{
cout << "The store number " << storeNumber << " is not valid" << endl;
}
if(salesData < 0)
{
cout << "The sales value for store " << storeNumber << " is negative" << endl;
}
*/
}
inputFile.close();
outputFile.close();
}
return 0;
/*
while(inputFile >> storeNumber >> salesData)
{
int counter = 1;
for(int i = 1; i <= counter; i++)
{
counter++;
bool fileRead = readFile(inputFile, salesData, storeNumber);
if(fileRead)
{
outputFile.open("saleschart.txt");
outputFile << "SALES BAR CHART" << endl;
outputFile << "(Each * equals 5,000 dollars)" << endl;
display(outputFile, salesData, storeNumber);
}
}
*/
}
bool readFile(ifstream& inputFile, long long int& salesData, unsigned int& storeNumber)
{
if(inputFile)
{
inputFile >> storeNumber >> salesData;
if(storeNumber == NULL)
{
cout << "The file was empty" << endl;
return false;
}
if(storeNumber < 1 || storeNumber > 99)
cout << "The store number " << storeNumber << " is not valid" << endl;
if(salesData < 0)
cout << "The sales value for store " << storeNumber << " is negative" << endl;
else
return true;
}
else
{
cout << "File \"sales.txt\" could not be opened" << endl;
return false;
}
return false;
/*
if(inputFile.eof())
return false;
else
{
inputFile >> storeNumber >> salesData;
return true;
}
*/
}
void display(ofstream& outputFile, long long int salesData, unsigned int storeNumber)
{
outputFile << left << setw(6) << "Store" << right << setw(2) << storeNumber << ": ";
cout<<storeNumber; //DEBUG
for(int i = 0; i < (salesData/5000); i++)
{
outputFile << left << "*";
}
outputFile << endl;
}