Advertisement
Josif_tepe

Untitled

Apr 4th, 2025
422
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.53 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct node {
  5.     int info;
  6.     node * next;
  7.     node * prev;
  8. };
  9. struct igrac {
  10.     string ime, prezime;
  11.     int poeni;
  12. };
  13.  
  14. struct DPLista {
  15.     node * head;
  16.    
  17.     void init() {
  18.         head = NULL;
  19.     }
  20.    
  21.     void dodadiPrv(int x) {
  22.         node * new_node = new node;
  23.         new_node->info = x;
  24.         new_node->next = NULL;
  25.         new_node->prev = NULL;
  26.        
  27.         if(head == NULL) {
  28.             head = new_node;
  29.         }
  30.         else {
  31.             new_node->next = head;
  32.             head->prev = new_node;
  33.             head = new_node;
  34.         }
  35.     }
  36.    
  37.     void dodadiPosleden(int x) {
  38.         node * new_node = new node;
  39.         new_node->info = x;
  40.         new_node->next = NULL;
  41.         new_node->prev = NULL;
  42.        
  43.         if(head == NULL) {
  44.             head = new_node;
  45.         }
  46.         else {
  47.             node * tmp = head;
  48.             while(tmp->next != NULL) {
  49.                 tmp = tmp->next;
  50.             }
  51.            
  52.             tmp->next = new_node;
  53.             new_node->prev = tmp;
  54.         }
  55.     }
  56.    
  57.     void deleteFront() {
  58.         if(head != NULL) {
  59.             if(head->next == NULL) {
  60.                 delete head;
  61.                 head = NULL;
  62.             }
  63.             else {
  64.                 head = head->next;
  65.                 delete head->prev;
  66.                 head->prev = NULL;
  67.             }
  68.         }
  69.     }
  70.     void deleteEnd() {
  71.         if(head != NULL) {
  72.             if(head->next == NULL) {
  73.                 delete head;
  74.                 head = NULL;
  75.             }
  76.             else {
  77.                 node * tmp = head;
  78.                 while(tmp->next != NULL) {
  79.                     tmp = tmp->next;
  80.                 }
  81.                 tmp->prev->next = NULL;
  82.                 delete tmp;
  83.                 tmp = NULL;
  84.             }
  85.         }
  86.     }
  87.    
  88.     void brishiLista() {
  89.         while(head != NULL) {
  90.             deleteEnd();
  91.         }
  92.     }
  93.    
  94.     void deleteNode(int x) {
  95.         if(head != NULL) {
  96.             if(head->info == x) {
  97.                 deleteFront();
  98.             }
  99.             else {
  100.                 node * tmp = head;
  101.                 while(tmp != NULL and tmp->info != x) {
  102.                     tmp = tmp->next;
  103.                 }
  104.                
  105.                 if(tmp->next == NULL) {
  106.                     deleteEnd();
  107.                 }
  108.                 else {
  109.                     tmp->prev->next = tmp->next;
  110.                     tmp->next->prev = tmp->prev;
  111.                     delete tmp;
  112.                    
  113.                 }
  114.             }
  115.         }
  116.     }
  117.    
  118.     void deleteNode(node *  x) {
  119.         if(head != NULL) {
  120.             if(head == x) {
  121.                 deleteFront();
  122.             }
  123.             else {
  124.                 node * tmp = head;
  125.                 while(tmp != NULL and tmp != x) {
  126.                     tmp = tmp->next;
  127.                 }
  128.                
  129.                 if(tmp->next == NULL) {
  130.                     deleteEnd();
  131.                 }
  132.                 else {
  133.                     tmp->prev->next = tmp->next;
  134.                     tmp->next->prev = tmp->prev;
  135.                     delete tmp;
  136.                    
  137.                 }
  138.             }
  139.         }
  140.     }
  141.     void pechati() {
  142.         node * tmp = head, * last;
  143.         while(tmp != NULL) {
  144.             last = tmp;
  145.             cout << tmp->info << "->";
  146.             tmp = tmp -> next;
  147.         }
  148.         cout << endl;
  149.        
  150.         while(last != NULL) {
  151.             cout << last->info << "<--";
  152.             last = last->prev;
  153.         }
  154.         cout << endl;
  155.     }
  156. };
  157. void igra(igrac & i1, igrac & i2, DPLista & l1) {
  158.     cout << "Igrac1: " << i1.ime << " " << i1.prezime << endl;
  159.     node * tmp = l1.head;
  160.    
  161.     string direkcija;
  162.     int cekori;
  163.    
  164.     while(cin >> cekori >> direkcija) {
  165.         if(direkcija == "l") {
  166.             while(tmp != NULL and cekori > 0) {
  167.                 tmp = tmp->prev;
  168.                 cekori--;
  169.             }
  170.            
  171.             if(tmp == NULL) {
  172.                 cout << "GAME OVER! " << i1.poeni << endl;
  173.                 break;
  174.             }
  175.             else {
  176.                 i1.poeni += tmp->info;
  177.             }
  178.         }
  179.         else {
  180.             while(tmp != NULL and cekori > 0) {
  181.                 tmp = tmp->next;
  182.                 cekori--;
  183.             }
  184.            
  185.             if(tmp == NULL) {
  186.                 cout << "GAME OVER! " << i1.poeni << endl;
  187.                 break;
  188.             }
  189.             else {
  190.                 i1.poeni += tmp->info;
  191.             }
  192.         }
  193.     }
  194.    
  195.     cout << "Igrac2: " << i2.ime << " " << i2.prezime << endl;
  196.     node * tmp2 = l1.head;
  197.     while(cin >> cekori >> direkcija) {
  198.         if(direkcija == "l") {
  199.             while(tmp2 != NULL and cekori > 0) {
  200.                 tmp2 = tmp2->prev;
  201.                 cekori--;
  202.             }
  203.            
  204.             if(tmp2 == NULL) {
  205.                 cout << "GAME OVER! " << i2.poeni << endl;
  206.                 break;
  207.             }
  208.             else {
  209.                 cout << tmp2->info << endl;
  210.  
  211.                 i2.poeni += tmp2->info;
  212.             }
  213.         }
  214.         else {
  215.             while(tmp2 != NULL and cekori > 0) {
  216.                 tmp2 = tmp2->next;
  217.                 cekori--;
  218.             }
  219.            
  220.             if(tmp2 == NULL) {
  221.                 cout << "GAME OVER! " << i2.poeni << endl;
  222.                 break;
  223.             }
  224.             else {
  225.                 cout << tmp2->info << endl;
  226.                 i2.poeni += tmp2->info;
  227.             }
  228.         }
  229.     }
  230.    
  231.    
  232. }
  233.  
  234. int main()
  235. {
  236.     DPLista l1;
  237.     l1.init();
  238.     igrac i1;
  239.     igrac i2;
  240.     i1.ime = "Paul";
  241.     i1.prezime = "Kalk";
  242.     i1.poeni = 0;
  243.     i2.ime = "Jamie";
  244.     i2.prezime = "Jones";
  245.     i2.poeni = 0;
  246.     l1.dodadiPrv(6);
  247.     l1.dodadiPosleden(5);
  248.     l1.dodadiPosleden(2);
  249.     l1.dodadiPosleden(10);
  250.     l1.dodadiPosleden(3);
  251.     l1.dodadiPosleden(0);
  252.     l1.dodadiPosleden(7);
  253.     l1.pechati();
  254.    
  255.     igra(i1, i2, l1);
  256.    
  257.     if (i1.poeni > i2.poeni)
  258.         cout << "Pobednik e "<<i1.ime<<" "<<i1.prezime<<" so "<<i1.poeni<<"poeni";
  259.     if (i2.poeni > i1.poeni)
  260.         cout << "Pobednik e "<<i2.ime<<" "<<i2.prezime<<" so "<<i2.poeni<<"poeni";
  261.     if (i1.poeni == i2.poeni)
  262.     {
  263.         cout << "Dvajcata igraci imaat ist broj na poeni: "<<i1.ime<<" "<<i1.prezime<<" so "<<i1.poeni<<"poeni";
  264.         cout << " i "<<i2.ime<<" "<<i2.prezime<<" so "<<i2.poeni<<"poeni";
  265.     }
  266.     l1.brishiLista();
  267. }
  268.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement