#include #include #include "checkit.h" typedef struct { char title[31]; int duration; /* in minutes */ char rating; /* G, P, 3, R */ } Movie; void useMallocBuiltin(void) { double* number; number = (double *)malloc(sizeof (double)); *number = 56.3; *number = *number * 2; checkit_double(112.6, *number); free(number); } void useMallocStruct(void) { Movie* one; Movie* two; Movie* summerBlockbuster; one = (Movie *)malloc(sizeof (Movie)); strcpy(one->title, "Judo Kitten"); one->duration = 118; one->rating = 'P'; checkit_string("Judo Kitten", one->title); checkit_int(118, one->duration); checkit_char('P', one->rating); two = (Movie *)malloc(sizeof (Movie)); strcpy(two->title, "Trucks 2"); two->duration = 97; two->rating = 'G'; checkit_string("Trucks 2", two->title); checkit_int(97, two->duration); checkit_char('G', two->rating); summerBlockbuster = one; checkit_string("Judo Kitten", summerBlockbuster->title); checkit_int(118, summerBlockbuster->duration); checkit_char('P', summerBlockbuster->rating); summerBlockbuster = two; checkit_string("Trucks 2", summerBlockbuster->title); checkit_int(97, summerBlockbuster->duration); checkit_char('G', summerBlockbuster->rating); free(one); free(two); } int getIndexOfLargest(int* a, int size) { int i, largest = 0; for(i = 1; i < size; i++) { if(a[i] > a[largest]) { largest = i; } } return largest; } void useCallocBuiltin(void) { int* tacosEatenByDay; int numDays, i; printf("How many days will you track the number of tacos eaten? "); scanf("%d", &numDays); tacosEatenByDay = (int *)calloc(numDays, sizeof(int)); for(i = 0; i < numDays; i++) { printf("How many tacos eaten on day %d? ", i + 1); scanf("%d", &tacosEatenByDay[i]); } printf("You ate the most tacos on day %d.\n", getIndexOfLargest(tacosEatenByDay, numDays) + 1); free(tacosEatenByDay); } int getIndexOfLongest(Movie* a, int size) { int i, longest = 0; for(i = 1; i < size; i++) { if(a[i].duration > a[longest].duration) { longest = i; } } return longest; } void useCallocStruct(void) { Movie* movies; Movie* longestMovie; int numMovies, index, i; printf("How many movies will be released this summer? "); scanf("%d", &numMovies); movies = (Movie *)calloc(numMovies, sizeof(Movie)); for(i = 0; i < numMovies; i++) { printf("Enter the title, duration, and rating of a movie\n"); scanf("%s", movies[i].title); scanf("%d", &movies[i].duration); scanf(" %c", &movies[i].rating); } index = getIndexOfLongest(movies, numMovies); printf("The longest movie of the summer is:\n%s\n", movies[index].title); longestMovie = &movies[index]; printf("The longest movie of the summer is:\n%s\n", longestMovie->title); free(movies); } int main(void) { useMallocBuiltin(); useMallocStruct(); useCallocBuiltin(); useCallocStruct(); return 0; }