vasylmartyniv

C2S1-Yulia-1

Oct 11th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.43 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdbool.h>
  3. #define PRODAMOUNT 10   //Тут вписується максимальна кількість продукції
  4.  
  5. typedef struct Products {//Створюємо шаблон структури з відповідними полями
  6.     int id;
  7.     char name[10];
  8.     int amount;
  9. } Product;
  10.  
  11. Product prod[PRODAMOUNT];//Створюємо масив структур по шаблону шоб туда записувати продукти
  12.  
  13.  
  14. float data[2][PRODAMOUNT] = {{0,1,2,3,4,5,6,7,8,9},{3.4,17.8,19.5,3.6,19.3,5.5,4.2,1.5,7.9,8.7}};//Створюємо масив з кодом товару(0-9) та цінами товарів
  15.  
  16. int main(){
  17.     int k =0;
  18.     for(k;k<PRODAMOUNT;k++){//Заповнюємо масив продуктів так шоб у всіх елеменів спочатку був код -1
  19.         prod[k].id=-1;
  20.         *prod[k].name="";
  21.         prod[k].amount=0;
  22.     }
  23.     bool cycle= true;
  24.     while(cycle){//Виводимо меню
  25.         printf("\n\n-------Menu------\n");
  26.         printf("1)Add element\n");
  27.         printf("2)Print elements\n");
  28.         printf("3)Exit\n");
  29.         int o=0;
  30.         printf("Your choice: ");
  31.         scanf("%d",&o);
  32.         switch(o){//Робимо перемикач для меню
  33.             case 1:
  34.                 AddElem();//Викликаєм додавання елементу
  35.                 break;
  36.             case 2:
  37.                 PrintProd();//Викликаємо виведення елементів
  38.                 break;
  39.             case 3:
  40.                 cycle = false;//виключаємо цикл меню і програма завершується
  41.                 break;
  42.             default:
  43.                 break; 
  44.         }
  45.     }
  46.     return 1;
  47. }
  48.  
  49. void AddElem(){//Метод для додавання елемента
  50.     Product temp;//Створюємо тимчасову змінну для продукту і наповнюємо її даними
  51.     printf("Input Name: ");
  52.     scanf("%s",temp.name);
  53.     printf("Input Id: ");scanf("%d",&temp.id);
  54.     printf("Input Amount: ");scanf("%d",&temp.amount);
  55.     bool exists=false;//Створюємо змінну для перевірки чи існує вже цей продукт в списку
  56.     int i=0;
  57.     for(i;i<PRODAMOUNT;i++){//Проходимось по всьому списку продуктів
  58.         if(prod[i].id==temp.id){
  59.             exists=true;
  60.             prod[i].amount+=temp.amount;//Якшо елемент знаходиться в списку то записуємо що він є і просто додаємо кількість
  61.         }
  62.     }
  63.     if(exists==false){//Якщо елемента немає тоді шукаємо найближчий вільний елемент(який має код -1)
  64.         for(i=0;i<PRODAMOUNT;i++){
  65.             if(prod[i].id==-1){
  66.                 prod[i]=temp;//Записуємо в нього дані з тимчасового продукту
  67.                 break;
  68.             }
  69.         }
  70.     }
  71. }
  72.  
  73.  
  74. void Sort(){//Звичайне сортування бульбашкою
  75.         Product *pr,*br;
  76.     int i =0,j=0;
  77.     for(i = 0 ; i < PRODAMOUNT - 1; i++) {
  78.        for(j = 0 ; j < PRODAMOUNT - i - 1 ; j++) {
  79.             pr=&prod[j];//(робимо вказівники на потрібні структури щоб мати доступ через стрілку)
  80.             br=&prod[j+1];
  81.            if(pr->id > br->id) {     //Використовуємо доступ до структури через стрілку(обовязкова умова в завданні)
  82.                 Product tmp = *pr;
  83.                 *pr = *br;//міняємо елементи місцями якщо один більше за інший
  84.                 *br = tmp;
  85.            }
  86.         }
  87.     }
  88. }
  89.  
  90. void PrintProd(){//Метод для виведення списку продуктів
  91.     Sort();//Спочатку сортуємо список за кодом продукту
  92.     int i =0;
  93.     printf("\nId|___Name___|Amount|__Price___\n");//Виводимо заголовок таблиці
  94.     for(i;i<PRODAMOUNT;i++){
  95.         if(prod[i].id!=-1){//Для кожного продукту в якого код не -1
  96.             printf("%d |",prod[i].id);//виводимо його код
  97.             int j=0;
  98.             for(j;j<10;j++){//Виводимо його ім'я
  99.                 printf("%c",prod[i].name[j]);
  100.             }
  101.             printf("|  %d   ",prod[i].amount);//виводимо його кількість
  102.             int id = prod[i].id;
  103.             float total = prod[i].amount * data[1][id];//множимо його кількість на ціну з масиву цін і получаємо заг. вартість
  104.             printf("|%f",total);
  105.             printf("\n");
  106.         }
  107.     }
  108. }
Add Comment
Please, Sign In to add comment