Advertisement
Guest User

Untitled

a guest
Mar 24th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.63 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<locale.h>
  3.  
  4. #define KOLICHESTVO 2
  5.  
  6.  
  7. /*
  8. Разработать программу для управления библиотекой книг (имя, автор, жанр, год) со
  9. следующими возможностями:
  10. • Добавление книг
  11. • Вывод списка книг
  12. • Сортировка по заданному критерию (имя, автор, жанр, год) с указанием
  13. направления сортировки
  14. */
  15.  
  16. struct Book
  17. {
  18.     char name[50];
  19.     char author[50];
  20.     char genre[50];
  21.     int year;  
  22.     char temp[50];
  23. };
  24.  
  25. enum Menu
  26. {
  27.     Dobavlenie = 1,
  28.     Vivod,
  29.     Sortirovka,
  30.     Vihod
  31.  
  32. };
  33.  
  34. enum Sortirovka
  35. {
  36.     Name = 1,
  37.     Author,
  38.     Genre,
  39.     Year
  40. };
  41.  
  42.  
  43. void zapolnenieStructure(struct Book books[], int kolichestvo);
  44. void menu(struct Book books[], int kolichestvo);
  45. void printStructure(struct Book books[], int kolichestvo);
  46. void sortName(struct Book books[], int kolichestvo);
  47.  
  48.  
  49.  
  50. int main()
  51. {
  52.     setlocale(LC_ALL, "rus");
  53.  
  54.     struct Book books[KOLICHESTVO] = {0,0,0,0};
  55.     int kolichestvo = KOLICHESTVO;
  56.     menu(books, kolichestvo);
  57.  
  58.     return 0;
  59. }
  60.  
  61.  
  62.  
  63. void menu(struct Book books[], int kolichestvo)
  64. {
  65.     enum Sortirovka sortirovka;
  66.     enum Menu menu;
  67.        a:  
  68.         printf("Выберите действие:\n");
  69.         printf("1 - Добавление книги\n2 - Вывод списка книг\n3 - Отсортировать книги\n4 - Выход\n");
  70.         scanf("%i", &menu);
  71.         char ch;
  72.         do {
  73.             ch = getchar();
  74.         } while (ch != '\n' && ch != EOF);
  75.        
  76.         switch (menu)
  77.         {
  78.         case Dobavlenie:
  79.             zapolnenieStructure(books, kolichestvo);
  80.             goto a;
  81.         case Vivod:
  82.             printStructure(books, kolichestvo);
  83.             goto a;
  84.         case Sortirovka:
  85.             printf("Выберите как требуется отсортировать\n");
  86.             printf("1 - по имени\n2 - по автору\n3 - по жанру\n4 - по году\n");
  87.             scanf("%i", &sortirovka);
  88.             switch (sortirovka)
  89.             {
  90.             case Name:
  91.                 printf(" ");
  92.                 break;
  93.             case Author:
  94.                 printf(" ");
  95.                 break;
  96.             case Genre:
  97.                 printf(" ");
  98.                 break;
  99.             case Year:
  100.                 printf(" ");
  101.                 break;
  102.             default:
  103.                 break;
  104.             }
  105.             goto a;
  106.         case Vihod:
  107.            
  108.             break;
  109.         default:
  110.             printf("Введите правильное значение\n");
  111.             goto a;
  112.         }
  113.     }
  114.  
  115.  
  116.  
  117.  
  118.  
  119. void zapolnenieStructure(struct Book books[], int kolichestvo)
  120. {
  121.    
  122.     for (int i = 0; i < kolichestvo; i++)
  123.     {
  124.  
  125.         printf("Введите название книги\n");
  126.         fgets(books[i].name, 50, stdin);
  127.  
  128.         printf("Введите автора книги\n");
  129.         fgets(books[i].author, 50, stdin);
  130.  
  131.         printf("Введите жанр книги\n");
  132.         fgets(books[i].genre, 50, stdin);
  133.  
  134.         printf("Введите год книги\n");
  135.         scanf("%i", &books[i].year);
  136.  
  137.         char ch;
  138.         do {
  139.             ch = getchar();
  140.         } while (ch != '\n' && ch != EOF);
  141.     }
  142. }
  143.  
  144.  
  145.  
  146.  
  147. void printStructure(struct Book books[], int kolichestvo)
  148. {
  149.    
  150.     for (int i = 0; i < kolichestvo; i++)
  151.     {
  152.  
  153.         printf("Название %i книги:\t%s\n", i + 1, books[i].name);
  154.         printf("Автор %i книги:\t\t%s\n", i + 1, books[i].author);
  155.         printf("Жанр %i книги:\t\t%s\n", i + 1, books[i].genre);
  156.         printf("Год %i книги\t\t%i\n", i + 1, books[i].year);
  157.         printf("\n\n\n");
  158.     }
  159.  
  160. }
  161.  
  162.  
  163.  
  164. void sortName(struct Book books[], int kolichestvo)
  165. {
  166.  
  167.     struct Rezultat temp;
  168.    
  169.     for (int i = 0; i < kolichestvo; i++)
  170.     {
  171.         for (int j = i; j > 0; j--)
  172.         {
  173.             if (strcmp(books[j - 1].name && books[j].name) > 0)
  174.             {
  175.                 temp = books[j - 1];
  176.                 books[j - 1] = books[j];
  177.                 books[i] = temp;
  178.             }
  179.         }
  180.     }
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement