Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdbool.h>
- #define PRODAMOUNT 10 //Тут вписується максимальна кількість продукції
- typedef struct Products {//Створюємо шаблон структури з відповідними полями
- int id;
- char name[10];
- int amount;
- } Product;
- Product prod[PRODAMOUNT];//Створюємо масив структур по шаблону шоб туда записувати продукти
- 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) та цінами товарів
- int main(){
- int k =0;
- for(k;k<PRODAMOUNT;k++){//Заповнюємо масив продуктів так шоб у всіх елеменів спочатку був код -1
- prod[k].id=-1;
- *prod[k].name="";
- prod[k].amount=0;
- }
- bool cycle= true;
- while(cycle){//Виводимо меню
- printf("\n\n-------Menu------\n");
- printf("1)Add element\n");
- printf("2)Print elements\n");
- printf("3)Exit\n");
- int o=0;
- printf("Your choice: ");
- scanf("%d",&o);
- switch(o){//Робимо перемикач для меню
- case 1:
- AddElem();//Викликаєм додавання елементу
- break;
- case 2:
- PrintProd();//Викликаємо виведення елементів
- break;
- case 3:
- cycle = false;//виключаємо цикл меню і програма завершується
- break;
- default:
- break;
- }
- }
- return 1;
- }
- void AddElem(){//Метод для додавання елемента
- Product temp;//Створюємо тимчасову змінну для продукту і наповнюємо її даними
- printf("Input Name: ");
- scanf("%s",temp.name);
- printf("Input Id: ");scanf("%d",&temp.id);
- printf("Input Amount: ");scanf("%d",&temp.amount);
- bool exists=false;//Створюємо змінну для перевірки чи існує вже цей продукт в списку
- int i=0;
- for(i;i<PRODAMOUNT;i++){//Проходимось по всьому списку продуктів
- if(prod[i].id==temp.id){
- exists=true;
- prod[i].amount+=temp.amount;//Якшо елемент знаходиться в списку то записуємо що він є і просто додаємо кількість
- }
- }
- if(exists==false){//Якщо елемента немає тоді шукаємо найближчий вільний елемент(який має код -1)
- for(i=0;i<PRODAMOUNT;i++){
- if(prod[i].id==-1){
- prod[i]=temp;//Записуємо в нього дані з тимчасового продукту
- break;
- }
- }
- }
- }
- void Sort(){//Звичайне сортування бульбашкою
- Product *pr,*br;
- int i =0,j=0;
- for(i = 0 ; i < PRODAMOUNT - 1; i++) {
- for(j = 0 ; j < PRODAMOUNT - i - 1 ; j++) {
- pr=&prod[j];//(робимо вказівники на потрібні структури щоб мати доступ через стрілку)
- br=&prod[j+1];
- if(pr->id > br->id) { //Використовуємо доступ до структури через стрілку(обовязкова умова в завданні)
- Product tmp = *pr;
- *pr = *br;//міняємо елементи місцями якщо один більше за інший
- *br = tmp;
- }
- }
- }
- }
- void PrintProd(){//Метод для виведення списку продуктів
- Sort();//Спочатку сортуємо список за кодом продукту
- int i =0;
- printf("\nId|___Name___|Amount|__Price___\n");//Виводимо заголовок таблиці
- for(i;i<PRODAMOUNT;i++){
- if(prod[i].id!=-1){//Для кожного продукту в якого код не -1
- printf("%d |",prod[i].id);//виводимо його код
- int j=0;
- for(j;j<10;j++){//Виводимо його ім'я
- printf("%c",prod[i].name[j]);
- }
- printf("| %d ",prod[i].amount);//виводимо його кількість
- int id = prod[i].id;
- float total = prod[i].amount * data[1][id];//множимо його кількість на ціну з масиву цін і получаємо заг. вартість
- printf("|%f",total);
- printf("\n");
- }
- }
- }
Add Comment
Please, Sign In to add comment