Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct Data {
- char name[5];
- char country[16];
- float dl;
- float hr;
- float vs;
- float ob;
- unsigned int vr;
- unsigned char tp;
- unsigned short m;
- float gh;
- };
- int load_table (struct Data* data, char* fn) {
- int n, i;
- FILE* fp = fopen(fn, "r");
- if (!fp) {
- printf("Can't open file\n");
- return 0;
- }
- fscanf(fp, "%d", &n);
- //printf("%d\n", n);
- for (i = 0; i < n; i++) {
- fscanf(fp, "%s %s %f %f %f %u %hhu %hu %f", data[i].name, data[i].country, &data[i].dl, &data[i].hr, &data[i].vs, &data[i].vr, &data[i].tp, &data[i].m, &data[i].gh);
- data[i].ob = data[i].vs * data[i].hr * data[i].dl;
- //printf("%s %s %f %f %f %u %hhu %hu %f\n", data[i].name, data[i].country, data[i].dl, data[i].hr, data[i].vs, data[i].vr, data[i].tp, data[i].m, data[i].gh);
- }
- fclose(fp);
- return n;
- }
- void print_table(struct Data* data, int n) {
- int i;
- printf("| NAME | COUNTRY | SIZE | VOLUME | FREQUENCY | START PULSE | MASS | PRICE |\n");
- printf("| | | LENGTH X WIDTH X HEIGHT | M^3 | REV/MIN | AMPER | KG | 1000 RUB |\n");
- printf("|------|---------|--------------------------|--------|-----------|-------------|------|----------|\n");
- for (i = 0; i < n; i++)
- printf("| %4.4s | %7.7s | %6.2f X %6.2f X %6.2f | %6.0f | %9u | %11hhu | %4hu | %8.2f |\n", data[i].name, data[i].country, data[i].dl, data[i].hr, data[i].vs, data[i].ob, data[i].vr, data[i].tp, data[i].m, data[i].gh);
- printf("|------|---------|--------------------------|--------|-----------|-------------|------|----------|\n");
- }
- int add_str(struct Data* data, int n) {
- printf("Enter NAME: ");
- scanf("%s", data[n].name);
- printf("Enter COUNTRY: ");
- scanf("%s", data[n].country);
- printf("Enter LENGTH: ");
- scanf("%f", &data[n].dl);
- printf("Enter WIDTH: ");
- scanf("%f", &data[n].hr);
- printf("Enter HEIGHT: ");
- scanf("%f", &data[n].vs);
- printf("Enter FREQUENCY: ");
- scanf("%u", &data[n].vr);
- printf("Enter START PULSE: ");
- scanf("%hhu", &data[n].tp);
- printf("Enter MASS: ");
- scanf("%hu", &data[n].m);
- printf("Enter PRICE: ");
- scanf("%f", &data[n].gh);
- data[n].ob = data[n].vs * data[n].hr * data[n].dl;
- return 1;
- }
- int del_str(struct Data* data, int n) {
- int num, i;
- printf("String to remove: ");
- scanf("%d", &num);
- num--;
- n--;
- for (i = num; i < n; i++)
- data[i] = data[i + 1];
- return 1;
- }
- void change_str(struct Data* data, int n) {
- int num, v;
- do {
- printf("String to change: ");
- scanf("%u", &num);
- if (num < 1 || num > n)
- printf("Invalid number. Try again\n");
- else
- break;
- } while (1 == 1);
- num--;
- printf("Parameter to change:\n");
- printf("1. NAME\n");
- printf("2. COUNTRY\n");
- printf("3. LENGTH\n");
- printf("4. WIDTH\n");
- printf("5. HEIGHT\n");
- printf("6. FREQUENCY\n");
- printf("7. START PULSE\n");
- printf("8. MASS\n");
- printf("9. PRICE\n");
- do {
- scanf("%u", &v);
- if (v == 1) {
- printf("Enter new value: ");
- scanf("%s", data[num].name);
- break;
- } else if (v == 2) {
- printf("Enter new value: ");
- scanf("%s", data[num].country);
- break;
- } else if (v == 3) {
- printf("Enter new value: ");
- scanf("%f", &data[num].dl);
- break;
- } else if (v == 4) {
- printf("Enter new value: ");
- scanf("%f", &data[num].hr);
- break;
- } else if (v == 5) {
- printf("Enter new value: ");
- scanf("%f", &data[num].vs);
- break;
- } else if (v == 6) {
- printf("Enter new value: ");
- scanf("%u", &data[num].vr);
- break;
- } else if (v == 7) {
- printf("Enter new value: ");
- scanf("%hhu", &data[num].tp);
- break;
- } else if (v == 8) {
- printf("Enter new value: ");
- scanf("%hu", &data[num].m);
- break;
- } else if (v == 9) {
- printf("Enter new value: ");
- scanf("%f", &data[num].gh);
- break;
- } else {
- printf("Invalid number. Try again\n");
- continue;
- }
- } while (1 == 1);
- }
- void save_table(struct Data* data, int n, char* fn) {
- int i;
- FILE* fp = fopen(fn, "w");
- if (!fp) {
- printf("Can't open file\n");
- return;
- }
- fprintf(fp, "%d\n", n);
- for (i = 0; i < n; i++)
- fprintf(fp, "%s %s %f %f %f %u %hhu %hu %f\n", data[i].name, data[i].country, data[i].dl, data[i].hr, data[i].vs, data[i].vr, data[i].tp, data[i].m, data[i].gh);
- fclose(fp);
- }
- int main()
- {
- struct Data data[100];
- int n, v;
- system("chcp 1251");
- n = load_table(data, "database.txt");
- printf("Welcome to Tesla electroengines catalogue:\n");
- printf("1. Print table\n");
- printf("2. Add string\n");
- printf("3. Remove string;\n");
- printf("4. Change string\n");
- printf("5. Save and exit\n");
- do {
- printf("What you want?\n");
- scanf("%d", &v);
- if (v == 1) {
- print_table(data, n);
- } else if (v == 2) {
- n += add_str(data, n);
- } else if (v == 3) {
- n -= del_str(data, n);
- } else if (v == 4) {
- change_str(data, n);
- } else if (v == 5) {
- save_table(data, n, "database.txt");
- printf("Thanks!\n");
- } else {
- printf("Invalid number. Try again\n");
- }
- } while (v != 5);
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement