I\'m having some problems with this one. Can someone help me out? Here\'s the as
ID: 3542683 • Letter: I
Question
I'm having some problems with this one. Can someone help me out? Here's the assignment:
You are working for a company that collects sales data every day. Your boss wants a simple
report on the daily data.
The data file is straightforward. Each file is contains a list of sales amounts one to a line. For example, the filesampledata_1.txt has this data:
42.13
33.76
87.86
21.35
96.49
98.58
Based on this data, there were 6 sales on the day this file represents. Since different days have different numbers of sales, each data file has different lengths. Your boss has provided 4 sample data files and told you the number of records in each file:
FILE NUM RECORDS
salesdata_1.txt 6 salesdata_2.txt 67 salesdata_3.txt 68
salesdata_4.txt 93
When you process a file, your boss wants the report sent to the file report.txt. The
information that should be in that file is:
Explanation / Answer
// Tell if you have any problem in this answer before rating
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int getMenu() {
int choice;
do {
cout<<"Enter 1 to process sales data Enter 2 to quit " <<endl;
cout<<"choice : ";
cin>>choice;
if(choice >=1 && choice <=2) {
break;
} else {
cout<< "invalid choice "<<endl;
}
}while (1);
return choice;
}
char* getFilename() {
char* filename = new char[80];
cout<<"Filename to process: ";
cin>>filename;
return filename;
}
int* getRecordCount (char * filename) {
int* n = new int;
cout<<"How many records in "<<filename << " : " ;
cin>>*n;
return n;
}
double* readSales(char *filename, int * n) {
ifstream in(filename);
if(in) {
double *data = new double[*n];
for(int i=0; i < *n; i++) {
in>>data[i];
}
return data;
in.close();
} else {
return NULL;
}
}
double findHighestSale (double *data , int *n) {
double highestSale = data[0] ;
for(int i=0; i<*n; i++) {
if(highestSale < data[i])
highestSale = data[i];
}
return highestSale;
}
double findLowestSale (double *data , int *n) {
double lowestSale = data[0] ;
for(int i=0; i<*n; i++) {
if(lowestSale < data[i])
lowestSale = data[i];
}
return lowestSale;
}
double findTotalSale (double *data , int *n) {
double totalSale=0;
for(int i=0; i<*n; i++) {
totalSale += data[i];
}
return totalSale;
}
double findAverageSale (double *data , int *n) {
double average = findTotalSale(data, n) / *n;
return average;
}
int findSalesAbove$50 ( double *data , int *n) {
int count = 0;
for(int i=0; i<*n; i++) {
if(data[i] > 50) {
count++;
}
}
return count;
}
void generateReport (char *filename , double *data , int *n) {
ofstream out("D: eport.txt");
out<<setw(20)<<left<<"Filename :"<<setw(20)<<right<<filename <<endl;
out<<setw(20)<<left<<"Highest sale :"<<setw(20)<<right<<findHighestSale(data,n)<<endl;
out<<setw(20)<<left<<"Lowest sale :"<<setw(20)<<right<<findLowestSale(data,n)<<endl;
out<<setw(20)<<left<<"Total sale :"<<setw(20)<<right<<findTotalSale(data,n)<<endl;
out<<setw(20)<<left<<"Average sale :"<<setw(20)<<right<<findAverageSale(data,n)<<endl;
out<<setw(20)<<left<<"Sales above $50 :"<<setw(20)<<right<<findSalesAbove$50(data,n)<<endl;
out.close();
}
int main() {
char *filename =NULL;
int *n = NULL; // no of records
double *data =NULL;
do {
int choice =getMenu();
if(choice ==1 ){
filename=getFilename();
n=getRecordCount(filename);
data=readSales(filename,n);
if(data!=NULL) {
generateReport(filename,data,n);
cout<<"Done Processing "<< filename <<endl<<endl;
}
} else {
break;
}
}while(1);
return 0;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.