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

#include \"race.h\" /*this funtion will take the max number of racer and crate r

ID: 3752575 • Letter: #

Question

#include "race.h"

/*this funtion will take the max number of racer and crate race objct and return it by refrance*/

race * create_race(int max_racers)

{

//make rac object and assign mamory

race * newRace = (race*)malloc(sizeof(race));

newRace->num_racers = 0; // assign num racers who will tell how many racer are in race array

if (max_racers <= 0) // if max racer size is negative or zero than make it 20

newRace->max_racres = 20;

else

newRace->max_racres = max_racers; // assign race array max size

newRace->racers = (racer*)malloc(sizeof(racer) * newRace->max_racres);

return newRace; // return race object

}

/*this funtion will add new racer in race*/

int add_racer(race * rec, racer rcr)

{

int isDublicat = 0, i;

if (rec->num_racers < rec->max_racres) // check is there any space avelabe in the race array

{

// if space is avelable than check is reacer is already in this race by it id

for (i = 0; i < rec->num_racers; i++)

{

if (rec->racers[i].bib_number == rcr.bib_number)

{

isDublicat = 1;

break;

}

}

if (isDublicat == 0) // is the racer is not in the race already than add it

{

rec->racers[rec->num_racers] = rcr;

rec->num_racers++;

}

else // if racer already in the race than print error massage

{

printf("Cannot add racer to race. Duplicate bib number ");

}

}

else// if no more space in the race for racer than print error

{

printf("Cannot add another racer to race. Race size exceeded ");

return -1;

}

return 0;

}

/*this function will return the min age racer age if not found than return zero*/

int calc_min_age(race * rec)

{

int i = 0;

int min_age;

if (rec->num_racers > 0)

min_age = rec->racers[0].age;

else

return 0;

for (i=1; i < rec->num_racers; i++)

{

if (rec->racers[i].age < min_age) // finding min age

min_age = rec->racers[i].age;

}

return min_age; //return age

}

/*this function will return the max age racer age if not found than return zero*/

int calc_max_age(race * rec)

{

int i = 0;

int max_age;

if (rec->num_racers > 0)

max_age = rec->racers[0].age;

else

return 0;

for (i = 1; i < rec->num_racers; i++)

{

if (rec->racers[i].age > max_age) // finding min age

max_age = rec->racers[i].age;

}

return max_age; // return age

}

/*this function will return the avrage age racer age if not found than return zero*/

double calc_avg_age(race * rec)

{

double avg_age = 0.0;

int i = 0;

for (; i < rec->num_racers; i++)

{

avg_age += rec->racers[i].age; // sum all age

}

if (avg_age == 0)

return 0;

avg_age /= ((double)rec->num_racers); // calculate avrage

return avg_age; // return avrage

}

/*Delete racer if found*/

int delete_racer(race * rec, int racer_num)

{

int i = 0, found = -1;

for (i = 0; i < rec->num_racers; i++)

{

if (found != -1)

{

rec->racers[i - 1] = rec->racers[i];

}

if (rec->racers[i].bib_number == racer_num)

{

found = i;

}

}

if (found != -1)

{

rec->num_racers--;//if found deleta racer

}

else// not found print error

{

printf("Racer w/ number %d not found. Did not delete. ", racer_num);

}

return 0;

}

/*print all racer in race*/

void print_race(race * rec)

{

int i = 0;

double avg_age;

printf("Race: ");

for (; i < rec->num_racers; i++)

{

print(rec->racers[i]);

}

avg_age = calc_avg_age(rec);

if(avg_age > 0)

printf("Racer ages youngest: %d yo, oldest: %d yo, average age: %.2f ", calc_min_age(rec), calc_max_age(rec), avg_age);

else

printf("Racer ages youngest: %d yo, oldest: %d yo, average age: 0 ", calc_min_age(rec), calc_max_age(rec));

}

/*free race object from heap memory*/

void free_race(race * rec)

{

free(rec);

}

...................................................................................................................................................

#include "racer.h"

/*this function will take bobnumber, age and name as peramiter and return the racer object*/

racer create_racer(int num, char * name, int age)

{

racer newRacer; // make racer object

int i, j = 0;

if (num < 0) // check if num is negtive if negative make it positive

newRacer.bib_number = num * (-1);

else

newRacer.bib_number = num; // assign num

if (age < 0) // if age is negative make it positive

newRacer.age = age * (-1);

else

newRacer.age = age;

for (i = 0; i < MAX_NAME_LENGTH; i++) // assign name to the racer object

{

if (name[j] != '' && name[j] != ' ') {

newRacer.name[i] = name[j];

j++;

}

else // if name size is less then max name size than i will add space till max name size is this else part

{

newRacer.name[i] = ' ';

}

}

newRacer.name[MAX_NAME_LENGTH] = '';

return newRacer; // restun racer object

}

/*this function will take racer iobject and print it*/

void print(racer rcr)

{

printf("Racer %d %s %02d ", rcr.bib_number, rcr.name, rcr.age); // print the recer object

}

...........................................................

both codes race and racers are working fine no error no problems

i am asking you to make changes in the both codes, replace some commands and other things

you neet to write it in different way and make sure the code is working when you make changes

Explanation / Answer

NOTE: As you have not provided race.h and racer.h it is impossible for me to run this code. You have not mentioned what specific changes to be made so I have changed the code as much it could have been modified. Leave comments if you want to get done something specific or the code is giving any issue while running also please mention the error along with the line number having the error.

Code:

#include "race.h"

/*create_race funtion will take the max number of racer and create race objct and return it by reference*/

race * create_race(int max_num_of_racer)

{

/*Creating race object and assigning memory*/

race * new_race = (race*)malloc(sizeof(race));

/* Initializing number of racers TO ZERO*/

new_race->num_racers = 0;

/* if maximum number of racers is negative or zero then initialize it with value 20*/

if (max_num_of_racer <= 0)

new_race->max_racres = 20;

else

/* else initialize race array max size with max_num_of_racer that was passed in this function*/

new_race->max_racres = max_num_of_racer;

new_race->racers = (racer*)malloc(sizeof(racer) * new_race->max_racres);

/* Returning race object*/

return new_race;

}

/*add_racer funtion will add new racer in race*/

int add_racer(race * race_var, racer racer_var)

{

int is_dup = 0, i;

/* Checking race array is not full*/

if (race_var->num_racers < race_var->max_racres)

{

for (i = 0; i < race_var->num_racers; i++)

{

/* Checking by id if the racer is already present in this race */

if (race_var->racers[i].bib_number == racer_var.bib_number)

{

is_dup = 1;

break;

}

}

/*If not already in the race then add racer*/

if (is_dup == 0)

{

race_var->racers[race_var->num_racers] = racer_var;

race_var->num_racers++;

}

/*Else Print the error message*/

else

{

printf("Cannot add racer to race. Duplicate bib number ");

}

}

/*If racer array is full print error*/

else

{

printf("Cannot add another racer to race. Race size exceeded ");

return -1;

}

return 0;

}

/*findMinimumAge function will return the min age racer age if not found than return zero*/

int findMinimumAge(race * race_var)

{

int index = 0;

int minimum_age;

/*If number of racers is not 0 then take auxiliary minimum age using 1st index*/

if (race_var->num_racers > 0)

minimum_age = race_var->racers[0].age;

/*If number of racers is zero return 0*/

else

return 0;

/*Check for minimum age through the whole array of racers*/

for (index=1; index < race_var->num_racers; index++)

{

if (race_var->racers[index].age < minimum_age)

minimum_age = race_var->racers[index].age;

}

/*Return minimum age*/

return minimum_age;

}

/*findMaximumAge function will return the max age racer age if not found than return zero*/

int findMaximumAge(race * race_var)

{

int i = 0;

int maximum_age;

/*If number of racers is not 0 then take auxiliary maximum age using 1st index*/

if (race_var->num_racers > 0)

maximum_age = race_var->racers[0].age;

/*If number of racers is zero return 0*/

else

return 0;

/*Check for minimum age through the whole array of racers*/

for (i = 1; i < race_var->num_racers; i++)

{

if (race_var->racers[i].age > maximum_age)

maximum_age = race_var->racers[i].age;

}

/*Return minimum age*/

return maximum_age;

}

/*this function will return the avrage age racer age if not found than return zero*/

double calculateAverageAge(race * race_var)

{

double average_age = 0.0;

int index = 0;

/*Taking sum of all the ages in racer array*/

for (; index < race_var->num_racers; index++)

{

average_age += race_var->racers[i].age;

}

/*If sum of all the ages is zero return 0*/

if (average_age == 0)

return 0;

/*Calculate final average of the ages*/

average_age /= ((double)race_var->num_racers);

/*Return the average of the ages*/

return average_age;

}

/*delete_racer removes a particular racer if found in race*/

int delete_racer(race * race_var, int racer_num)

{

int i = 0, found = -1;

for (i = 0; i < race_var->num_racers; i++)

{

if (found != -1)

{

race_var->racers[i - 1] = race_var->racers[i];

}

/*If racer is found take its index in found variable*/

if (race_var->racers[i].bib_number == racer_num)

{

found = i;

}

}

/*If racer was found and removed in above decrease the number of races from the race*/

if (found != -1)

{

race_var->num_racers--;

}

/*If racer not found print error message*/

else

{

printf("Racer w/ number %d not found. Did not delete. ", racer_num);

}

return 0;

}

/*print_race function prints all racer's details present in race*/

void print_race(race * race_var)

{

int i = 0;

double average_age;

printf("Race: ");

for (; i < race_var->num_racers; i++)

{

printRacer(race_var->racers[i]);

}

average_age = calculateAverageAge(race_var);

if(average_age > 0)

printf("Racer ages youngest: %d yr, oldest: %d yr, average age: %.2f ", findMinimumAge(race_var), findMaximumAge(race_var), average_age);

else

printf("Racer ages youngest: %d yr, oldest: %d yr, average age: 0 ", findMinimumAge(race_var), findMaximumAge(race_var));

}

/*free_race function removes race object from heap memory*/

void free_race(race * race_var)

{

free(race_var);

}

...................................................................................................................................................

#include "racer.h"

/*create_racer function will take bibnumber, age and name as parameter and return the racer object*/

racer create_racer(int num, char * name, int age)

{

/*Define a new racer object*/

racer new_racer;

int i, j = 0;

/* If the passed number is negative make it positive*/

if (num < 0)

new_racer.bib_number = num * (-1);

/*Else assign number to new racer*/

else

new_racer.bib_number = num;

/*If passed age is negative make it positive*/

if (age < 0)

new_racer.age = age * (-1);

/*Else assign age to new racer*/

else

new_racer.age = age;

/*Assign name passed to the racer object letter by letter*/

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

{

if (name[j] != '' && name[j] != ' ')

{

new_racer.name[i] = name[j];

j++;

}

/*Appending spaces in case name is smaller than max name length*/

else

{

new_racer.name[i] = ' ';

}

}

/*Ending the name string with null character*/

new_racer.name[MAX_NAME_LENGTH] = '';

/*Returning the racer object*/

return new_racer;

}

/*printRacer function will take racer object and print its details*/

void printRacer(racer racer_var)

{

/*Printing details of racers*/

printf("Racer Number: %d Racer Name: %s Racer age: %02d ", racer_var.bib_number, racer_var.name, racer_var.age);

}