Advertisement
Josif_tepe

Untitled

Dec 24th, 2024
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.55 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. using namespace std;
  5. struct node {
  6.     string val;
  7.     node *next, *prev;
  8. };
  9. struct DLCL {
  10.     node *head, *tail;
  11.    
  12.     void init() {
  13.         head = NULL;
  14.         tail = NULL;
  15.     }
  16.     void insertFirst(string x) {
  17.         node *new_node = new node;
  18.         new_node->val = x;
  19.         if(head == NULL) {
  20.             head = new_node;
  21.             head->next = head;
  22.             head->prev = head;
  23.             tail = head;
  24.         }
  25.         else {
  26.             new_node->next = head;
  27.             head->prev = new_node;
  28.             head = new_node;
  29.             head->prev = tail;
  30.         }
  31.     }
  32.     void insertLast(string x) {
  33.         node *new_node = new node;
  34.         new_node->val = x;
  35.        
  36.         if(head == NULL) {
  37.             head = new_node;
  38.             head->next = head;
  39.             head->prev = head;
  40.             tail = head;
  41.         }
  42.         else {
  43.             tail->next = new_node;
  44.             new_node->next = head;
  45.             head->prev = new_node;
  46.             new_node->prev = tail;
  47.             tail = new_node;
  48.            
  49.         }
  50.     }
  51.     void deleteFirst() {
  52.         if(head != NULL) {
  53.             if(head->next == head) {
  54.                 delete head;
  55.                 head = NULL;
  56.                 tail = NULL;
  57.             }
  58.             else {
  59.                 node *tmp = head;
  60.                 head = head->next;
  61.                 head->prev = tail;
  62.                 tail->next = head;
  63.                 delete tmp;
  64.             }
  65.         }
  66.     }
  67.     void deleteLast() {
  68.         if(head != NULL) {
  69.             if(head->next == head) {
  70.                 delete head;
  71.                 head = NULL;
  72.                 tail = NULL;
  73.             }
  74.             else {
  75.                 node *tmp = tail;
  76.                 tail = tail->prev;
  77.                 tail->next = head;
  78.                 head->prev = tail;
  79.                 delete tmp;
  80.             }
  81.         }
  82.     }
  83.     void deleteAll() {
  84.         while(head != NULL) {
  85.             deleteFirst();
  86.         }
  87.     }
  88.     void delete_node(node * tmp) {
  89.         if(head != NULL) {
  90.             if(head == tmp) {
  91.                 deleteFirst();
  92.                 return;
  93.             }
  94.             if(tail == tmp) {
  95.                 deleteLast();
  96.                 return;
  97.             }
  98.             tmp->prev->next = tmp->next;
  99.            
  100.             tmp->next->prev = tmp->prev;
  101.             delete tmp;
  102.            
  103.         }
  104.     }
  105.     void print() {
  106.         node *tmp = head;
  107.         while(tmp != tail) {
  108.             cout << tmp->val << " <--> ";
  109.             tmp = tmp->next;
  110.         }
  111.         cout << tmp->val << endl;
  112.     }
  113. };
  114.  
  115. void igra(DLCL & igraci, DLCL & broevi) {
  116.    
  117.     node * igrac = igraci.head;
  118.     node * broj = broevi.head;
  119.     srand(time(NULL));
  120.  
  121.     int p = 0;
  122.     int niza[] = {4, 2, 6};
  123.     while(igraci.head->next != igraci.head) {
  124.         int sluchaen;
  125.         if(p < 2) {
  126.              sluchaen = niza[p++];
  127.         }
  128.         else {
  129.             sluchaen = 1 + (rand() % 6);
  130.         }
  131.         cout << "Na poteg e " << igrac->val <<", i ja frla kockat: " << sluchaen << endl;
  132.        
  133.         for(int i = 0; i < sluchaen; i++) {
  134.            
  135.             cout << broj->val << " " ;
  136.             broj = broj->next;
  137.         }
  138.         cout << endl;
  139.         cout << "Zastanuvame na pole: " << broj->val << endl;
  140.         string br = "";
  141.         br += (sluchaen + '0');
  142.         if(broj->val ==  br) {
  143.             cout << "Ovoj igrac ostanuva vo igra" << endl;
  144.             node *tmp = broj;
  145.             broj = broj->next;
  146.             broevi.delete_node(tmp);
  147.             igrac = igrac->next;
  148.         }
  149.         else {
  150.             cout << "Igracot ispagja od igrata" << endl;
  151.             node *tmp = igrac;
  152.             igrac = igrac->next;
  153.             igraci.delete_node(tmp);
  154.             broj = broj->next;
  155.         }
  156.         cout << endl;
  157.     }
  158.    
  159.     cout << "Pobednik: " << igraci.head->val << endl;
  160. }
  161. int main() {
  162.     DLCL igraci, broevi;
  163.     igraci.init();
  164.     broevi.init();
  165.    
  166.     int br_na_igraci;
  167.     cin >> br_na_igraci;
  168.     for(int i = 0; i < br_na_igraci; i++) {
  169.         string ime;
  170.         cin >> ime;
  171.         igraci.insertLast(ime);
  172.     }
  173.     int broj_na_broevi;
  174.     cin >> broj_na_broevi;
  175.    
  176.     for(int i = 0; i < broj_na_broevi; i++) {
  177.         string broj;
  178.         cin >> broj;
  179.         broevi.insertLast(broj);
  180.     }
  181.    
  182.     igra(igraci, broevi);
  183.     return 0;
  184.  
  185. }
  186. /**
  187.  4
  188.  Dejan
  189.  Tina
  190.  Marija
  191.  Jane
  192.  7
  193.  1 6 5 3 4 1 5
  194.  
  195.  /*/
  196.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement