Untitled
c_cpp
a month ago
4.9 kB
3
Indexable
Never
#include <stdio.h> #include <string.h> #define SIZE 4 struct Tire { // One tire char tireSide[3]; // LF, RF, LR, RR double pressure; }; struct Vehicle { char brand[21]; char model[21]; double engineCap; // Engine Capacity struct Tire trs[4]; // 4 tires for the vehicle }; void displayData(struct Vehicle *veh) { int i; printf("Brand: %s, Model: %s, Engine Cap: %.2lf, ", (*veh).brand, (*veh).model, (*veh).engineCap); for (i = 0; i < 4; i++) { if (strcmp(veh->trs[i].tireSide, "LF") == 0) { printf("LF: %.2lf, ", veh->trs[i].pressure); } else if (strcmp(veh->trs[i].tireSide, "RF") == 0) { printf("RF: %.2lf, ", veh->trs[i].pressure); } else if (strcmp(veh->trs[i].tireSide, "LR") == 0) { printf("LR: %.2lf, ", veh->trs[i].pressure); } else if (strcmp(veh->trs[i].tireSide, "RR") == 0) { printf("RR: %.2lf", veh->trs[i].pressure); } else { } } printf("\n"); } void setTireData(struct Tire *tires, const int size) { int i; for (i = 0; i < size; i++) { printf("Enter tire side: "); scanf("%2[^\n]%*c", tires[i].tireSide); printf("Enter tire pressure: "); scanf("%lf%*c", &tires[i].pressure); } } void setData(struct Vehicle *veh) { printf("Enter vehicle brand: "); scanf("%20[^\n]%*c", (*veh).brand); printf("Enter vehicle model: "); scanf("%20[^\n]%*c", (*veh).model); printf("Enter vehicle engineCap: "); scanf("%lf%*c", &(*veh).engineCap); setTireData((*veh).trs, SIZE); printf("\n"); } void findVehiclesByBrand(struct Vehicle *veh, int size) { int i; char brand[21]; printf("Enter brand: "); scanf("%20[^\n]", brand); for (i = 0; i < size; i++) { if (strcmp(brand, veh[i].brand) == 0) { displayData(&veh[i]); } } } void findVehiclesByEngineCap(struct Vehicle *veh, int size) { int i; double engineCap; printf("Enter engine cap: "); scanf("%lf", &engineCap); for (i = 0; i < size; i++) { if (engineCap == veh[i].engineCap) { displayData(&veh[i]); } } } void sortVehiclesByEngineCap(struct Vehicle *veh, int size) { int i, j; struct Vehicle temp; for (i = 0; i < size - 1; i++) { for (j = 0; j < size - 1; j++) { if (veh[j].engineCap > veh[j + 1].engineCap) { temp = veh[j]; veh[j] = veh[j + 1]; veh[j + 1] = temp; } } } for (i = 0; i < size; i++) { displayData(&veh[i]); } } int main() { int i, selection; // Create an array of Vehicles names called veh, Size of array should be SIZE struct Vehicle veh[SIZE]; // Create a function named setData and pass one vehicle data at a time (using // address) Inside setData, obtain input from user to set vehicle data. For // setting tire pressure, you need to call another function called setTireData // from within setData this function will receive an array of Tires that will // be set from user input for tire location and pressure for (i = 0; i < SIZE; i++) { setData(&veh[i]); } // Then display a menu option that allows the following and obtain a user // selection // 1. findVehicles by brand // 2. findVehicles by engineCap // 3. Sort Vehicles by Engine Capacity // 4. Quit the Program // Depending on what the user inputs, your program should either display data // (as per option 1,2 or 3)or quit(4) Implement the functionality needed for // selection (1,2 and 3 above) using separate function for each. (You can set // your own function name) do { printf( "=========================\n" "1) findVehicles by brand\n" "2) findVehicles by engineCap\n" "3) Sort Vehicles by Engine Capacity\n" "-------------------------\n" "4) Quit the Program\n" "-------------------------\n" "Selection: "); scanf("%d%*c", &selection); putchar('\n'); switch (selection) { case 1: findVehiclesByBrand(veh, SIZE); break; case 2: findVehiclesByEngineCap(veh, SIZE); break; case 3: sortVehiclesByEngineCap(veh, SIZE); break; case 4: break; } } while (selection != 4); // You should also create a displayData utility function that will be used to display the results generate from option 1,2 and 3 above. // This function will receive one vehicle information at a time as an address. return 0; }