Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

#include #include #include #include #define MAX_PRODUCT_NAME_LEN 30 //define macros int i=0; //global variables //structure date struct Date { int day; int month; int year; };

#include  #include  #include  #include  #define MAX_PRODUCT_NAME_LEN 30 //define macros int i=0; //global variables //structure date struct Date { int day; int month; int year; }; //structure SingleSaleRecord struct SingleSaleRecord { int numberSold; double salePrice; struct Date saleDate;  }; //structure ProductSalesList struct ProductSalesList { char productName[MAX_PRODUCT_NAME_LEN]; int numberSold; double salePrice; struct Date saleDate; }; //structure DailySalesList struct DailySalesList { char productName[MAX_PRODUCT_NAME_LEN]; int numberSold; double salePrice; struct Date saleDate; }; //all prototype of the function int readSalesFile(FILE* fp, struct ProductSalesList* prodList,struct DailySalesList* dailySales); void strprint(char s1[30]); void strprintSpace(); void print(struct DailySalesList* dailySales ,int j); void viewAllSales(struct DailySalesList* dailySales ,int n); void addSale(struct ProductSalesList* prodList,struct DailySalesList* dailySales,char productName[MAX_PRODUCT_NAME_LEN],struct SingleSaleRecord *saleRec); void viewSalesSortedDate(struct DailySalesList* dailySales ,int n); void viewAllproduct(struct ProductSalesList* dailySales ,int n); void menu(); //it is used to print string function void strprint(char s1[30]) { for(int i1=0;i1saleDate.year < ((struct DailySalesList*)q1)->saleDate.year) return 0; if (((struct DailySalesList*)p1)->saleDate.year == ((struct DailySalesList*)q1)->saleDate.year && ((struct DailySalesList*)p1)->saleDate.month < ((struct DailySalesList*)q1)->saleDate.month) return 0; if (((struct DailySalesList*)p1)->saleDate.year == ((struct DailySalesList*)q1)->saleDate.year && ((struct DailySalesList*)p1)->saleDate.month == ((struct DailySalesList*)q1)->saleDate.month && ((struct DailySalesList*)p1)->saleDate.day < ((struct DailySalesList*)q1)->saleDate.day) return 0 ; return 1; } //it is to sort date and print revenue void viewSalesSortedDate(struct DailySalesList* dailySales ,int n) { qsort(dailySales, n, sizeof(struct DailySalesList), compare1); printf("REVENUE DAY MONTH YEAR "); printf(" "); double s=0.0; for(int j=0;j<5;j++) { if(dailySales[j].saleDate.day==dailySales[j+1].saleDate.day &&dailySales[j].saleDate.month==dailySales[j+1].saleDate.month &&dailySales[j].saleDate.year==dailySales[j+1].saleDate.year ) {  s=s+dailySales[j].numberSold*dailySales[j].salePrice; } else{ s=s+dailySales[j].numberSold*dailySales[j].salePrice; printf("%.2lf 0%d 0%d %d ",s,dailySales[j].saleDate.day,dailySales[j].saleDate.month,dailySales[j].saleDate.year); s=0.0; }  } } //it is used to add data into structure void addSale(struct ProductSalesList* prodList,struct DailySalesList* dailySales,char productName[MAX_PRODUCT_NAME_LEN],struct SingleSaleRecord *saleRec) { //structure prodList strcpy(prodList[i].productName,productName); prodList[i].numberSold=saleRec->numberSold; prodList[i].salePrice=saleRec->salePrice; prodList[i].saleDate.day=saleRec->saleDate.day; prodList[i].saleDate.month=saleRec->saleDate.month; prodList[i].saleDate.year=saleRec->saleDate.year; //structure dailySales strcpy(dailySales[i].productName,productName); dailySales[i].numberSold=saleRec->numberSold; dailySales[i].salePrice=saleRec->salePrice; dailySales[i].saleDate.day=saleRec->saleDate.day; dailySales[i].saleDate.month=saleRec->saleDate.month; dailySales[i].saleDate.year=saleRec->saleDate.year;  i++; } //read file data int readSalesFile(FILE* fp, struct ProductSalesList* prodList,struct DailySalesList* dailySales) { int numberSalesRead = 0, valuesRead; struct SingleSaleRecord saleRec = { 0 }; char productName[MAX_PRODUCT_NAME_LEN]; //iterate value while (!feof(fp)) { valuesRead = fscanf(fp, "%[^/]/%d/%lf/%d/%d/%d%*c", productName, &saleRec.numberSold, &saleRec.salePrice, &saleRec.saleDate.month, &saleRec.saleDate.day, &saleRec.saleDate.year); if (valuesRead > 0) { //add data addSale(prodList, dailySales, productName, &saleRec); numberSalesRead++; } } return numberSalesRead; } //view all the data by date void viewAllSales(struct DailySalesList* dailySales ,int n) { printf("DAY MONTH YEAR PRODUCT #SOLD PRICE "); struct DailySalesList t =dailySales[3]; dailySales[3] =dailySales[2]; dailySales[2]=t; struct DailySalesList t1 =dailySales[2]; dailySales[2] =dailySales[1]; dailySales[1]=t1; //print all data for(int j=0;j<5;j++) {  print(dailySales ,j);  }  } //view all the product data void viewAllproduct(struct ProductSalesList* dailySales ,int n) { printf("PRODUCT #SOLD REVENUE "); struct ProductSalesList t =dailySales[3]; dailySales[3] =dailySales[2]; dailySales[2]=t;  struct ProductSalesList t1 =dailySales[2]; dailySales[2] =dailySales[1]; dailySales[1]=t1;  int k=0; double m=0.0; //compute total revenue for(int j=0;j<2;j++) { k+=dailySales[j].numberSold; m+=dailySales[j].salePrice*dailySales[j].numberSold;  } strprint(dailySales[0].productName); printf(" \t%d\t%.2lf ",k,m); for(int j=2;j

I wants answers of these questions according to the above code

Questions

  1. In my take home assessment, I probably represented the date as its own structure. What is the advantage of making the date its own structure? Was I able to simplify my coding because it was represented as its own structure? If so, describe one example of where it allowed me to simplify or modularize my code. If having the date as its own structure did not simplify my code, can I think of how it might allow me to simplify or modularize my code?
  2. To display the total sales for each date, I needed to compile this data. Describe how I did this. Was it done with separate data structures or an existing data structure? Did I compute it in an existing function or did I use a special function for the purpose? When did I compile the data?
  3. When I sorted the sales data by revenue, which sorting algorithm did I use? Why did I select this algorithm?

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Professional Android 4 Application Development

Authors: Reto Meier

3rd Edition

1118223853, 9781118223857

More Books

Students also viewed these Programming questions