Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I\'m really confused on this C programming lab. I had been been spending over we

ID: 3691517 • Letter: I

Question

I'm really confused on this C programming lab. I had been been spending over week on this lab, but still confused. It keeps showing error when I ran my programming. I'll be really thankful if someone could help me.

You need to download the following

Lab11.c,

Lab11_main.c

Lab11.h.

In this lab we will have 3 files- Lab11.c, Lab11_main.c and Lab11.h. All your work will be done in the Lab11_main.c, you don't need to modify Lab11.h and Lab11.c.

We will be using the structure:

struct CustomerData{

char name[30];

int ID;

float monthlybill;

double yearlybill

struct CustomerData * nextCustomer;

            };

In your main write a series of statements that ask the user to input a positive integer NUM. Then generate a link list of NUM nodes (one node at a time). Use void assigndata (struct CustomerData *V) to generate data for each node in the link list. This function is already written for you in Lab11.c. You need to call it from your main. Add new nodes in your link list so that the list maintains a non-decreasing order of the monthlybill field of struct CustomerData.

Then write a function that is passed this link list and returns the average yearlybill of all the link list elements. You should call this function in main and output the result in a formatted manner in main.

Lab11_main.c

#include "Lab11.h"

int main(void)
{


}

Lab11.c

#define _CRT_SECURE_NO_WARNINGS
#include "Lab11.h"

char *name_source[]={"Horace Greeley", "Sigourney Weaver", "Wendy Morse", "Cora Simmons", "Phil Donahue", "Dan Crane", "Willie Daniels", "Carl Lewis","Joe Crabb", "Buster Keaton", "Dawn Harris", "Rene Williamson", "Pat Lane", "Jose Richards", "Edward Morris", "Nathan Nevins", "John Doe", "Jane Eyre", "Wednesday Adams", "Annette Wendt", "Yannick Noah", "Christopher Columbus", "George Sims", "Anna Washington", "Marie Curie", "Rhonda White", "Susan Nash", "Mary Wright", "Lily Langely","John Thompson", "Ray Reynolds"};

void assigndata(struct CustomerData *V)
{
   static int done=0;
   int seed =8192;
   int numStrings;

   if(!done)
   {
       done =1;
       srand(seed);
   }

   numStrings=sizeof(name_source)/sizeof(char *);

   V->ID=rand()%215;
   V->monthlybill= (float)(rand()%1000);
V->yearlybill=(double) (rand()%10000);
   strcpy(V->name, name_source[rand()%numStrings]);
   V->nextCustomer=NULL;


}

Lab11.h

#include <stdio.h>

#include <stdlib.h>
#include <string.h>


#ifndef __LAB_11__
#define __LAB_11__

struct CustomerData{
   char name[30];
   int ID;
   float monthlybill;
   double yearlybill;
   struct CustomerData * nextCustomer;
};

#endif

void assigndata (struct CustomerData *V);

Explanation / Answer

#include #include #include #include "valid.c"struct purch_detail { char item_desc[20]; int unit_price; int qty; }; void display(); void entryData(); void readFile(); void getName(char *str); void getWriteFileName(char *); void getReadFileName(char *); void getzeroInteger(char *_chr, int *_value); int count=0; int total_price=0; int total_amt=0; char option; char filename [14]; FILE *fp; struct purch_detail *pd_ptr, *tmptr; void main() { clrscr(); pd_ptr = (struct purch_detail *) malloc(sizeof(struct purch_detail) * 10); tmptr = pd_ptr; printf(" Do you want to create the data file type 'y' for yes and 'n' for no."); scanf("%c", &option); fflush(NULL); if( option == 'y' || option == 'Y') { printf(" You can generate bill of maximum 10 item. "); getWriteFileName(filename); display(); } elseif( option == 'n' || option == 'N') { getReadFileName(filename); readFile(); } getch(); } void entryData() { while(1) { printf(" Enter item name : "); getName(tmptr->item_desc); getPosInteger("Enter unit price of the item : ", &tmptr->unit_price); getzeroInteger("Enter no of qty purchased : ", &tmptr->qty); if(tmptr->qty == 0) break; count ++; if (count >= 10) break; /* if ( count % 2 == 0) if ( (pd_ptr = (struct purch_detail *) realloc(pd_ptr, sizeof(struct purch_detail) * 2)) == NULL) { printf("Realloc failed. No enough memory available."); break; } */ tmptr++; } } void display() { tmptr = pd_ptr; fprintf(fp," Item Unit Price Quantity Total Price "); fprintf(fp," ______________________________________________________"); printf(" Item Unit Price Quantity Total Price "); printf(" ______________________________________________________"); while(1) { total_price = tmptr->unit_price * tmptr->qty ; fprintf(fp, " %-20s %4d %4d %5d", tmptr->item_desc, tmptr->unit_price, tmptr->qty, total_price); printf(" %-20s %4d %4d %5d", tmptr->item_desc, tmptr->unit_price, tmptr->qty, total_price); //printf(""); total_amt += total_price; count--; if ( count = 20 ) break; } fflush(NULL); if(errorflag) getName(str); *getstr=''; } void getzeroInteger(char *_chr, int *_value) { float tempval =1; int _ival=0; printf(" %s", _chr); _scaint = scanf("%f", &tempval); fflush(NULL); if ( _scaint != 0 ) { _ival = tempval; if ( tempval < 0 ) { printf("%s", " You should enter value greater then or equal to zero. Enter the value again..."); getzeroInteger(_chr, _value); } elseif ( _ival != tempval) { printf("%s", " Error(decimal value). It will be truncated the digit after the percision. Enter integer number only."); getzeroInteger(_chr, _value); } elseif( ! ( (tempval >= -32768 ) && (tempval