Code:#include<stdio.h> #include<stdlib.h> #include<String.h> #include<ctype.h> /*car struct */ typedef struct car { unsigned int plate_number; unsigned int vin_number; char *Manufacturer_Name; char *model; char *colour; unsigned int year_Manufactured; unsigned int realseYear; unsigned int payment; unsigned int value; unsigned int engine_power; struct car *next; } car; car *cars; /*function to scan and check the int input */ int CheckIntinput(unsigned int *a) { char temp[20]; int i; int flag = 1; while (1) { scanf("%s", temp); for (i = 0; i < strlen(temp); i++) { if (!isdigit(temp)) { flag = 0; printf ("You did not enter a number , Please enter an argument's number\n"); break; } } if (flag) { break; } flag = 1; } *a = strtoul(temp, NULL, 10); return 1; } /*function to check if the information of the car are correct */ void checkifcarnputiscorrect(unsigned int *plate_number, unsigned int *vin_number, unsigned int *year_Manufactured, unsigned int *realseYear, unsigned int *payment, unsigned int *value, unsigned int *engine_power) { int flag = 1; while (1) { printf("enter plate number :"); CheckIntinput(plate_number); if (*plate_number > 9999999 || *plate_number < 1000000) { printf("plate number should be 7 digits try again \n"); flag = 0; } /* if(!checkifcaralreadyinlist(*plate_number)) { printf("the car is already in the list \n"); flag=0; } */ if (flag) { break; } flag = 1; } while (1) { printf("enter vin number :"); CheckIntinput(vin_number); if (*vin_number > 99999 || *vin_number < 10000) { printf("vin_number should be 5 digits try again\n"); flag = 0; } if (flag) { break; } flag = 1; } while (1) { printf("enter year manfucatured :"); CheckIntinput(year_Manufactured); if (*year_Manufactured > 9999 || *year_Manufactured < 1000) { printf("yeaer_manfucatured should be 4 digits try again\n"); flag = 0; } if (flag) { break; } flag = 1; } while (1) { printf("enter realese year :"); CheckIntinput(realseYear); if (*realseYear > 9999 || *realseYear < 1000) { printf("realse year should be 4 digits try again \n"); flag = 0; } if (flag) { break; } flag = 1; } while (1) { printf("enter payment :"); CheckIntinput(payment); if (*payment > 9999999 || *payment < 0) { printf("payment should be between 0-9999999 digits\n"); flag = 0; } if (flag) { break; } flag = 1; } while (1) { printf("enter value :"); CheckIntinput(value); if (*value > 9999999 || *value < 0) { printf("value should be between 0-9999999 digits\n"); flag = 0; } if (flag) { break; } flag = 1; } while (1) { printf("enter engine_power :"); CheckIntinput(engine_power); if (*engine_power > 9999 || *engine_power < 1000) { printf("engine power be 4 digits\n"); flag = 0; } if (flag) { break; } flag = 1; } } /*function to scan and check if the input is only chars */ void Checkstringifonlychars(char *str) { int i; int flag = 1; while (1) { scanf("%s", str); for (i = 0; i < strlen(str); i++) { if (!isalpha(str)) { flag = 0; printf("wrong input try input only chars."); break; } } if (flag) { break; } flag = 1; } } int CheckLonginput(unsigned long *a) { char temp[20]; int i; int flag = 1; while (1) { scanf("%s", temp); for (i = 0; i < strlen(temp); i++) { if (!isdigit(temp)) { flag = 0; printf ("You did not enter a number , Please enter an argument's number\n"); break; } } if (flag) { break; } flag = 1; } *a = strtoul(temp, NULL, 10); return 1; } /*creating empty car list */ int createCarList() { cars = (car *) malloc(sizeof(car)); if (!cars) { return 0; } cars->next = NULL; return 1; } int addNewCar() { unsigned int plate_number, vin_number, realseYear, year_Manufactured, payment, value, engine_power; char *Manufacturer_Name, *model, *colour, c; car *temp = NULL; car *p = NULL; temp = NULL; temp = (car *) malloc(sizeof(car)); while (1) { checkifcarnputiscorrect(&plate_number, &vin_number, &year_Manufactured, &realseYear, &payment, &value, &engine_power); Manufacturer_Name = (char *) malloc(10 * sizeof(char)); printf("enter Manufacturer Name:"); Checkstringifonlychars(Manufacturer_Name); model = (char *) malloc(10 * sizeof(char)); printf("enter model:"); Checkstringifonlychars(Model); colour = (char *) malloc(5 * sizeof(char)); printf("enter colour of the car:"); Checkstringifonlychars(colour); temp->plate_number = plate_number; temp->vin_number = vin_number; temp->Manufacturer_Name = Manufacturer_Name; temp->model = model; temp->colour = colour temp->year_Manufactured = year_Manufactured; temp->realseYear = realseYear; temp->payment = payment; temp->value = value; temp->engine_power = engine_power; temp->next = NULL; if (cars == NULL) { cars = temp; } else { p = cars; while (p->next != NULL) { p = p->next; } p->next = temp; } printf("\n done adding? if yes press y "); scanf(" %c", &c); if (c == 'y') { break; } } if (cars == NULL) { return 0; } return 1; } void printAllCars(void) { car *tmp = cars; if (!cars) { printf("No Cars in list to Shown\n"); return; } printf("\nCar List :\n\n"); printf ("LicenseNum | chassisNum | makerName | modelName | color | productionYear | onRoadYear | price | paidMoney | engine"); printf ("\n----------------------------------------------------------------------------------------------------------------------\n"); while (tmp != NULL) { printf("%-11u ", tmp->plate_number); printf("%-13u ", tmp->vin_number); printf("%-11s ", tmp->Manufacturer_Name); printf("%-11s ", tmp->model); printf("%-7s ", tmp->colour); printf("%-16u ", tmp->year_Manufactured); printf("%-11u ", tmp->realseYear); printf("%-9u ", tmp->value); printf("%-14u ", tmp->payment); printf("%u\n", tmp->engine_power); tmp = tmp->next; } printf("\n"); } int main() { createCarList(); addNewCar(); printAllCars(); return 0; }