Advertisement
imedvedev

Struct lab 10

Dec 22nd, 2013
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.21 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define N 3 // тут у нас все разбито на функции, поэтому я не придумал как проще определить количество всех элементов
  4.  
  5. struct Book { // задаем структуру
  6.     char name[30];
  7.     int price;
  8.     int isMagazine;
  9. }
  10. book[N]; // инициализируем структуру
  11.  
  12. void insertBook() { // ф-ия добавления книг
  13.     int i;
  14.     for (i=0; i<N; i++) {
  15.         printf("\n===%d-я книга===\n", i+1);
  16.         printf("Название: ");
  17.         scanf("%s", book[i].name);
  18.        
  19.         printf("Цена:");
  20.         scanf("%d", &book[i].price);
  21.        
  22.         printf("Журнал(1) или Газета(0): ");
  23.         scanf("%d", &book[i].isMagazine);
  24.     }
  25. }
  26.  
  27. void printResult() { // ф-ия вывода данных из структуры
  28.     int z;
  29.     for(z=0;z<N;z++) {
  30.         printf("%s\n",book[z].name);
  31.     }
  32. }
  33.  
  34. void sortBooks() { // тут самое веселое - сортировка
  35.     int j, k;
  36.     struct Book p;
  37.    
  38.     for(j=0; j<N; j++) {
  39.         for(k=0; k<N; k++) {
  40.             if(strcmp(book[j].name,book[k].name)<0) {
  41.                 p = book[j];
  42.                 book[j] = book[k];
  43.                 book[k] = p;
  44.             }
  45.         }
  46.     }
  47. }
  48.  
  49. int main(){
  50.    
  51.     // запуск всего подряд
  52.    
  53.     insertBook();
  54.    
  55.     printf("До сортировки:\n");
  56.     printResult();
  57.     printf("\n");
  58.    
  59.     sortBooks();
  60.    
  61.     printf("\n");
  62.     printf("После сортировки:\n");
  63.     printResult();
  64.    
  65.     return 0;
  66. }
  67.  
  68. /*
  69. Пример работы:
  70.  
  71.  
  72. ===1-я книга===
  73. Название: Пушкин
  74. Цена:1
  75. Журнал(1) или Газета(0): 1
  76.  
  77. ===2-я книга===
  78. Название: Ахматова
  79. Цена:1
  80. Журнал(1) или Газета(0): 1
  81.  
  82. ===3-я книга===
  83. Название: Лермонтов
  84. Цена:1
  85. Журнал(1) или Газета(0): 1
  86.  
  87. До сортировки:
  88. Пушкин
  89. Ахматова
  90. Лермонтов
  91.  
  92. После сортировки:
  93. Ахматова
  94. Лермонтов
  95. Пушкин
  96.  
  97. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement