Advertisement
Guest User

Untitled

a guest
May 26th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.00 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading;
  6. using System.Threading.Tasks;
  7.  
  8. namespace NajteziZadatak
  9. {
  10.     class Program
  11.     {
  12.  
  13.         static int k=1;
  14.         static int red1 = 0;
  15.         static int red2 = 0;
  16.         static int red3 = 0;
  17.         static int cenaKarata=40;
  18.         static int ukupnoProdatih = 0;
  19.         static int ukupnaZarada=0;
  20.         static int ukupanbrojkupaca = 0;
  21.         static readonly object locker = new object();
  22.         static readonly object locker2 = new object();
  23.         static readonly object locker3 = new object();
  24.  
  25.         static void kasa1()
  26.         {
  27.             lock(locker)
  28.             {
  29.                 red1++;
  30.                 ukupanbrojkupaca++;
  31.                 red1--;
  32.             }
  33.         }
  34.         static void kasa2()
  35.         {
  36.             lock(locker2)
  37.             {
  38.                 red2++;
  39.                 ukupanbrojkupaca++;
  40.                 red2--;
  41.             }
  42.         }
  43.         static void kasa3()
  44.         {
  45.             lock(locker3)
  46.             {
  47.  
  48.                 red3++;
  49.                 ukupanbrojkupaca++;
  50.                 red3--;
  51.             }
  52.         }
  53.         static int minimal()
  54.         {
  55.             Random r = new Random();
  56.             if (red1 < red2 && red1 < red3)
  57.                 return 1;
  58.             else if (red2 < red1 && red2 < red3)
  59.                 return 2;
  60.             else if (red3 < red1 && red3 < red2)
  61.                 return 3;
  62.             else if (red3 == red2 && red2 == red1 && red3 == red1)
  63.                 return r.Next(1, 3);
  64.             else
  65.                 return 100;
  66.         }
  67.         static int Popust(int cena,int brojtrenutnihkarata)
  68.         {
  69.             if (brojtrenutnihkarata > 2)
  70.             {
  71.                 cena = Convert.ToInt32(cena * 0.90);
  72.                 return cena;
  73.             }
  74.             else if (brojtrenutnihkarata > 3)
  75.             {
  76.                 cena = Convert.ToInt32(cena * 0.85);
  77.                 return cena;
  78.             }
  79.             else return cena;
  80.         }
  81.         static void Kupac()
  82.         {
  83.             Random r = new Random();
  84.             int brojKupljenih = (r.Next(1, 6));
  85.             string ime = Thread.CurrentThread.Name;
  86.             Console.WriteLine(ime + " je kupio " + brojKupljenih);
  87.             int cena = cenaKarata;
  88.             int najmanjired = minimal();
  89.             ukupnaZarada += cena*brojKupljenih;
  90.             ukupnoProdatih += brojKupljenih;
  91.             {
  92.                 kasa1();
  93.             }
  94.             if(najmanjired==2)
  95.             {
  96.                 kasa2();
  97.             }
  98.             if(najmanjired==3)
  99.             {
  100.                 kasa3();
  101.             }
  102.         }
  103.         static void vremeradaPozorista()
  104.         {
  105.             Thread.Sleep(1000);
  106.             cenaKarata = Convert.ToInt32(cenaKarata * 0.95);
  107.             Thread.Sleep(1000);
  108.             cenaKarata = Convert.ToInt32(cenaKarata * 0.95);
  109.             Thread.Sleep(1000);
  110.             cenaKarata = Convert.ToInt32(cenaKarata * 0.95);
  111.             Thread.Sleep(1000);
  112.             cenaKarata = Convert.ToInt32(cenaKarata * 0.95);
  113.             Thread.Sleep(1000);
  114.             cenaKarata = Convert.ToInt32(cenaKarata * 0.95);
  115.             Thread.Sleep(1000);
  116.             cenaKarata = Convert.ToInt32(cenaKarata * 0.95);
  117.             Thread.Sleep(1000);
  118.             k++;
  119.         }
  120.         static void Main(string[] args)
  121.         {
  122.             Thread radKase = new Thread(() => vremeradaPozorista());radKase.Start();
  123.             int i = 1;
  124.             while(k==1)
  125.             {
  126.                 Thread nit = new Thread(() => Kupac());nit.Name = "Kupac_" + i; ;nit.Start();
  127.                 i++;
  128.                 Thread.Sleep(140);
  129.             }
  130.  
  131.             Console.ReadLine();
  132.             Console.WriteLine("Pozoriste zatvoreno");
  133.             Console.WriteLine("Karta prodatih:"+ ukupnoProdatih);
  134.             Console.WriteLine("Para zaradjeno:" + ukupnaZarada);
  135.         }
  136.     }
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement