Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <ctype.h>
- #include <limits.h>
- struct carinfo_t
- {
- char *brand;
- char *model;
- int year;
- float value;
- };
- struct carinfo_t *createCarinfo(char *brand, char *model, int year, float value)
- {
- struct carinfo_t* temp = (struct carinfo_t*) malloc(sizeof(struct carinfo_t));
- temp->brand = (char*)malloc(sizeof(char)*(strlen(brand) +1));
- strcpy(temp->brand, brand);
- temp->model = (char*)malloc(sizeof(char)*(strlen(model) + 1));
- strcpy(temp->model, model);
- temp->year = year;
- temp->value = value;
- return temp;
- }
- void addCarinfo(struct carinfo_t **carbase, struct carinfo_t *carinfo)
- {
- int i = 0;
- int n = 0;
- for (i = 0; i < 100; i++)
- {
- if (carbase[i] != NULL)
- {
- n++;
- }
- }
- if (n >= 100)
- {
- printf("Failed adding car; carbase is already full!");
- }
- if (n < 100)
- {
- carbase[n] = carinfo;
- }
- }
- void freeCarinfo(struct carinfo_t *carinfo)
- {
- free(carinfo->brand);
- free(carinfo->model);
- free(carinfo);
- }
- void printCarbase(struct carinfo_t **carbase)
- {
- int i,j = 0;
- int n = 0;
- for (j = 0; j < 100; j++)
- {
- if (carbase[j] == NULL)
- {
- n++;
- }
- }
- for (i = 0; i < 100; i++)
- {
- if (n == 100)
- {
- printf("The database is empty.\n", carbase[i]);
- i = 105;
- }
- if (carbase[i] != NULL && i < 100)
- {
- printf("Car:\n");
- printf("- brand: %s\n", carbase[i]->brand);
- printf("- model: %s\n", carbase[i]->model);
- printf("- year: %d\n", carbase[i]->year);
- printf("- value: %.2f\n", carbase[i]->value);
- }
- }
- }
- void removeCarinfo(struct carinfo_t **carbase, struct carinfo_t *carinfo)
- {
- int i,j,n = 0;
- for (i = 0; i < 100; i++)
- {
- if (carbase[i] != NULL)
- {
- if (strcmp(carbase[i]->brand, carinfo->brand) == 0 && strcmp(carbase[i]->model, carinfo->model) == 0 && carbase[i]->year == carinfo->year)
- {
- free(carbase[i]->brand);
- free(carbase[i]->model);
- free(carbase[i]);
- carbase[i] = NULL;
- }
- }
- }
- }
- int main()
- {
- int i, j = 0;
- struct carinfo_t *carbase[100] = {};
- struct carinfo_t *carinfo;
- char brand[20] = {};
- char model[20] = {};
- int year = 0;
- float value = 0;
- char remove[20] = {};
- char f;
- int e = 1;
- while (e)
- {
- printf("Command (a/r/p/q): ");
- scanf(" %c", &f);
- switch (f)
- {
- case 'a':
- printf("Add a car:\n");
- printf(" brand: ");
- scanf(" %s", &brand);
- printf(" model: ");
- scanf(" %s", &model);
- printf(" year: ");
- scanf(" %d", &year);
- printf(" value: ");
- scanf(" %f", &value);
- carinfo = createCarinfo(brand, model, year, value);
- addCarinfo(carbase, carinfo);
- break;
- case 'p': printCarbase(carbase);
- break;
- case 'r':
- printf("Remove a car:\n");
- printf(" brand: ");
- scanf(" %[^\n]s\n", &brand);
- printf(" model: ");
- scanf(" %[^\n]s", &model);
- printf(" year: ");
- scanf(" %d", &year);
- carinfo = createCarinfo(brand, model, year, '\0');
- removeCarinfo(carbase, carinfo);
- break;
- case 'q': e = 0;
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement