Advertisement
Guest User

Untitled

a guest
May 27th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.86 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct Data {
  5.     char name[5];
  6.     char country[16];
  7.     float dl;
  8.     float hr;
  9.     float vs;
  10.     float ob;
  11.     unsigned int vr;
  12.     unsigned char tp;
  13.     unsigned short m;
  14.     float gh;
  15. };
  16.  
  17. int load_table (struct Data* data, char* fn) {
  18.     int n, i;
  19.     FILE* fp = fopen(fn, "r");
  20.     if (!fp) {
  21.         printf("Can't open file\n");
  22.         return 0;
  23.     }
  24.     fscanf(fp, "%d", &n);
  25.     //printf("%d\n", n);
  26.  
  27.     for (i = 0; i < n; i++) {
  28.         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);
  29.         data[i].ob = data[i].vs * data[i].hr * data[i].dl;
  30.         //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);
  31.  
  32.     }
  33.  
  34.     fclose(fp);
  35.     return n;
  36. }
  37.  
  38. void print_table(struct Data* data, int n) {
  39.     int i;
  40.     printf("| NAME | COUNTRY | SIZE                     | VOLUME | FREQUENCY | START PULSE | MASS | PRICE    |\n");
  41.     printf("|      |         | LENGTH X WIDTH  X HEIGHT |    M^3 |   REV/MIN |       AMPER |   KG | 1000 RUB |\n");
  42.     printf("|------|---------|--------------------------|--------|-----------|-------------|------|----------|\n");
  43.  
  44.     for (i = 0; i < n; i++)
  45.         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);
  46.     printf("|------|---------|--------------------------|--------|-----------|-------------|------|----------|\n");
  47. }
  48.  
  49. int add_str(struct Data* data, int n) {
  50.     printf("Enter NAME: ");
  51.     scanf("%s", data[n].name);
  52.     printf("Enter COUNTRY: ");
  53.     scanf("%s", data[n].country);
  54.     printf("Enter LENGTH: ");
  55.     scanf("%f", &data[n].dl);
  56.     printf("Enter WIDTH: ");
  57.     scanf("%f", &data[n].hr);
  58.     printf("Enter HEIGHT: ");
  59.     scanf("%f", &data[n].vs);
  60.     printf("Enter FREQUENCY: ");
  61.     scanf("%u", &data[n].vr);
  62.     printf("Enter START PULSE: ");
  63.     scanf("%hhu", &data[n].tp);
  64.     printf("Enter MASS: ");
  65.     scanf("%hu", &data[n].m);
  66.     printf("Enter PRICE: ");
  67.     scanf("%f", &data[n].gh);
  68.     data[n].ob = data[n].vs * data[n].hr * data[n].dl;
  69.     return 1;
  70. }
  71.  
  72. int del_str(struct Data* data, int n) {
  73.     int num, i;
  74.  
  75.     printf("String to remove: ");
  76.     scanf("%d", &num);
  77.     num--;
  78.     n--;
  79.     for (i = num; i < n; i++)
  80.        data[i] = data[i + 1];
  81.  
  82.     return 1;
  83. }
  84.  
  85. void change_str(struct Data* data, int n) {
  86.     int num, v;
  87.     do {
  88.         printf("String to change: ");
  89.         scanf("%u", &num);
  90.         if (num < 1 || num > n)
  91.             printf("Invalid number. Try again\n");
  92.         else
  93.             break;
  94.     } while (1 == 1);
  95.     num--;
  96.  
  97.     printf("Parameter to change:\n");
  98.     printf("1. NAME\n");
  99.     printf("2. COUNTRY\n");
  100.     printf("3. LENGTH\n");
  101.     printf("4. WIDTH\n");
  102.     printf("5. HEIGHT\n");
  103.     printf("6. FREQUENCY\n");
  104.     printf("7. START PULSE\n");
  105.     printf("8. MASS\n");
  106.     printf("9. PRICE\n");
  107.     do {
  108.         scanf("%u", &v);
  109.         if (v == 1) {
  110.             printf("Enter new value: ");
  111.             scanf("%s", data[num].name);
  112.             break;
  113.         } else if (v == 2) {
  114.             printf("Enter new value: ");
  115.             scanf("%s", data[num].country);
  116.             break;
  117.         } else if (v == 3) {
  118.             printf("Enter new value: ");
  119.             scanf("%f", &data[num].dl);
  120.             break;
  121.         } else if (v == 4) {
  122.             printf("Enter new value: ");
  123.             scanf("%f", &data[num].hr);
  124.             break;
  125.         } else if (v == 5) {
  126.             printf("Enter new value: ");
  127.             scanf("%f", &data[num].vs);
  128.             break;
  129.         } else if (v == 6) {
  130.             printf("Enter new value: ");
  131.             scanf("%u", &data[num].vr);
  132.             break;
  133.         } else if (v == 7) {
  134.             printf("Enter new value: ");
  135.             scanf("%hhu", &data[num].tp);
  136.             break;
  137.         } else if (v == 8) {
  138.             printf("Enter new value: ");
  139.             scanf("%hu", &data[num].m);
  140.             break;
  141.         } else if (v == 9) {
  142.             printf("Enter new value: ");
  143.             scanf("%f", &data[num].gh);
  144.             break;
  145.         } else {
  146.             printf("Invalid number. Try again\n");
  147.             continue;
  148.         }
  149.     } while (1 == 1);
  150. }
  151.  
  152. void save_table(struct Data* data, int n, char* fn) {
  153.     int i;
  154.     FILE* fp = fopen(fn, "w");
  155.     if (!fp) {
  156.         printf("Can't open file\n");
  157.         return;
  158.     }
  159.     fprintf(fp, "%d\n", n);
  160.  
  161.     for (i = 0; i < n; i++)
  162.         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);
  163.  
  164.     fclose(fp);
  165. }
  166.  
  167. int main()
  168. {
  169.     struct Data data[100];
  170.     int n, v;
  171.     system("chcp 1251");
  172.     n = load_table(data, "database.txt");
  173.  
  174.     printf("Welcome to Tesla electroengines catalogue:\n");
  175.     printf("1. Print table\n");
  176.     printf("2. Add string\n");
  177.     printf("3. Remove string;\n");
  178.     printf("4. Change string\n");
  179.     printf("5. Save and exit\n");
  180.     do {
  181.         printf("What you want?\n");
  182.         scanf("%d", &v);
  183.         if (v == 1) {
  184.             print_table(data, n);
  185.         } else if (v == 2) {
  186.             n += add_str(data, n);
  187.         } else if (v == 3) {
  188.             n -= del_str(data, n);
  189.         } else if (v == 4) {
  190.             change_str(data, n);
  191.         } else if (v == 5) {
  192.             save_table(data, n, "database.txt");
  193.             printf("Thanks!\n");
  194.         } else {
  195.             printf("Invalid number. Try again\n");
  196.         }
  197.     } while (v != 5);
  198.  
  199.     system("pause");
  200.     return 0;
  201. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement