Answer:
//C++ code
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
/*===============================================*/
// a structure called prod
struct prod
{
string name;// – a string, assumed to have no spaces
double price; // –adollaramount
int inStock; // – the number of items currently in stock.
};
//Fucntion Prototypes
void readInventory(prod products[], int& size);
/*===============================================*/
/*returns: a dollar amount, the total value of the inventory*/
double totalValue(prod products[], int size);
/*===============================================*/
// Sorts the given array by name
void sort(prod products[], int size);
/*===============================================*/
/*a report to a file called “report.txt”.
When the file fails to open, print
“Unable to open output file.” and end.*/
void writeReport(prod products[], int size);
/*===============================================*/
//Function definitions
/*===============================================*/
void writeReport(prod products[], int size)
{
ofstream outfile("report.txt");
outfile << fixed << setprecision(2);
if (!outfile)
{
cout << "Unable to open output file.\n";
return;
}
outfile << "+------------------------------+\n | Current Inventory |\n\
\n+------------------------------+\nNAME PRICE #\n\
\n-------------------- ------- ---\n";
for (int i = 0; i < size; i++)
{
outfile << products[i].name << " " << products[i].price << " " << products[i].inStock << endl;
}
outfile << "+------------------------------+\n";
outfile << "Number of products: " << size << endl;
outfile << "Inventory total value: " << totalValue(products, size) << endl;
cout << "Report written to file\n";
//close the output stream
outfile.close();
}
/*===============================================*/
void sort(prod products[], int size)
{
for (int i = 0; i < size; i++)
{
for (int j = i+1; j < size; j++)
{
if (products[i].name > products[j].name)
{
//swapping
prod temp = products[i];
products[i] = products[j];
products[j] = temp;
}
}
}
}
/*===============================================*/
double totalValue(prod products[], int size)
{
double total = 0;
for (int i = 0; i < size; i++)
{
total += products[i].inStock * products[i].price;
}
return total;
}
/*===============================================*/
void readInventory(prod products[], int& size)
{
// Open a file called “inventory.txt”
//and read the data from the file into the partial array
//.If the file fails to open,
//print “Unable to open input file”
//and set the number of products to 0.
size = 0;
ifstream inFile("inventory.txt");
if (!inFile)
{
cout << "Unable to open input file.\n";
return;
}
string name;
double price;
int qunatity;
while (inFile >> price >>qunatity >>name)
{
if (price != -1 && qunatity != -1 && name != "endofdata")
{
products[size].name = name;
products[size].inStock = qunatity;
products[size].price = price;
size++;
}
}
cout << "inventory read\n";
//close the stream
inFile.close();
}
/*===============================================*/
int main()
{
//declares a partial array of products
prod products[100];
int size;
// invokes readInventory()
readInventory(products, size);
// invokes sort()
sort(products, size);
// invokes writeReport()
writeReport(products, size);
// ends with the standard system pause.
system("pause");
return 0;
}
please see attachment for inventory text and output.