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

This shouldn\'t be too hard but I find myself on limited time. Just be sure to i

ID: 3536109 • Letter: T

Question

This shouldn't be too hard but I find myself on limited time. Just be sure to indicate where one file begins and ends, and remember to remove all external/global variables.


#include <stdio.h>

#include <stdlib.h>

#include "readline.h"


#define NAME_LEN 25

#define INITIAL_PARTS 10


struct part {

int number;

char name[NAME_LEN+1];

int on_hand;

};


struct part *inventory;

int num_parts = 0; /* number of parts currently stored */

int max_parts = INITIAL_PARTS; /* size of inventory array */


int find_part(int number);

void insert(void);

void search(void);

void update(void);

void print(void);


/**********************************************************

* main: Prompts the user to enter an operation code, *

* then calls a function to perform the requested *

* action. Repeats until the user enters the *

* command 'q'. Prints an error message if the user *

* enters an illegal code. *

**********************************************************/

int main(void)

{

char code;


inventory = malloc(max_parts * sizeof(struct part));

if (inventory == NULL) {

printf("Can't allocate initial inventory space. ");

exit(EXIT_FAILURE);

}


for (;;) {

printf("Enter operation code: ");

scanf(" %c", &code);

while (getchar() != ' ') /* skips to end of line */

;

switch (code) {

case 'i': insert();

break;

case 's': search();

break;

case 'u': update();

break;

case 'p': print();

break;

case 'q': return 0;

default: printf("Illegal code ");

}

printf(" ");

}

}


/**********************************************************

* find_part: Looks up a part number in the inventory *

* array. Returns the array index if the part *

* number is found; otherwise, returns -1. *

**********************************************************/

int find_part(int number)

{

int i;


for (i = 0; i < num_parts; i++)

if (inventory[i].number == number)

return i;

return -1;

}


/**********************************************************

* insert: Prompts the user for information about a new *

* part and then inserts the part into the *

* database. Prints an error message and returns *

* prematurely if the part already exists or the *

* database is full. *

**********************************************************/

void insert(void)

{

int part_number;

struct part *temp;


if (num_parts == max_parts) {

max_parts *= 2;

temp = realloc(inventory, max_parts * sizeof(struct part));

if (temp == NULL) {

printf("Insufficient memory; can't add more parts. ");

return;

}

inventory = temp;

}


printf("Enter part number: ");

scanf("%d", &part_number);

if (find_part(part_number) >= 0) {

printf("Part already exists. ");

return;

}


inventory[num_parts].number = part_number;

printf("Enter part name: ");

read_line(inventory[num_parts].name, NAME_LEN);

printf("Enter quantity on hand: ");

scanf("%d", &inventory[num_parts].on_hand);

num_parts++;

}


/**********************************************************

* search: Prompts the user to enter a part number, then *

* looks up the part in the database. If the part *

* exists, prints the name and quantity on hand; *

* if not, prints an error message. *

**********************************************************/

void search(void)

{

int i, number;


printf("Enter part number: ");

scanf("%d", &number);

i = find_part(number);

if (i >= 0) {

printf("Part name: %s ", inventory[i].name);

printf("Quantity on hand: %d ", inventory[i].on_hand);

} else

printf("Part not found. ");

}


/**********************************************************

* update: Prompts the user to enter a part number. *

* Prints an error message if the part doesn't *

* exist; otherwise, prompts the user to enter *

* change in quantity on hand and updates the *

* database. *

**********************************************************/

void update(void)

{

int i, number, change;


printf("Enter part number: ");

scanf("%d", &number);

i = find_part(number);

if (i >= 0) {

printf("Enter change in quantity on hand: ");

scanf("%d", &change);

inventory[i].on_hand += change;

} else

printf("Part not found. ");

}


/**********************************************************

* print: Prints a listing of all parts in the database, *

* showing the part number, part name, and *

* quantity on hand. Parts are printed in the *

* order in which they were entered into the *

* database. *

**********************************************************/

void print(void)

{

int i;


printf("Part Number Part Name "

"Quantity on Hand ");

for (i = 0; i < num_parts; i++)

printf("} %-25sd ", inventory[i].number,

inventory[i].name, inventory[i].on_hand);

}

Explanation / Answer

in the above program you have used a header file "readline.h" , so post the content of this header file,and after that i can able to edit the above program according to your requirenment

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote