Advertisement
gride29

zad2

Dec 8th, 2020
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.18 KB | None | 0 0
  1. using System;
  2.  
  3. namespace Zad2
  4. {
  5.     interface IKolejkaPriorytetowa
  6.     {
  7.         int Wielkość
  8.         {
  9.             get;
  10.             set;
  11.         }
  12.         void Wstaw(int wartość);
  13.         int Usun();
  14.     }
  15.  
  16.     class KolejkaPriorytetowaMin : IKolejkaPriorytetowa
  17.     {
  18.         public int Wielkość { get; set; }
  19.         int[] dane;
  20.  
  21.         public KolejkaPriorytetowaMin(int[] dane)
  22.         {
  23.             Wielkość = 0;
  24.             this.dane = dane;
  25.         }
  26.  
  27.         public void Zamien(int index1, int index2)
  28.         {
  29.             int temp = dane[index1];
  30.             dane[index1] = dane[index2];
  31.             dane[index2] = temp;
  32.         }
  33.  
  34.         public void Wstaw(int wartość)
  35.         {
  36.             int i = Wielkość++;
  37.             int rodzic = (i - 1) / 2;
  38.             while (i > 0 && dane[rodzic] > wartość) // tutaj sie sypie przy zmianie znaku
  39.             {
  40.                 dane[i] = dane[rodzic];
  41.                 i = rodzic;
  42.                 rodzic = (i - 1) / 2;
  43.             }
  44.             dane[i] = wartość;
  45.         }
  46.  
  47.         public int Usun()
  48.         {
  49.             int doUsuniecia = dane[0];
  50.             if (Wielkość > 0)
  51.             {
  52.                 int wartość = dane[Wielkość];
  53.                 int i = 0;
  54.                 int rodzic = 1;
  55.                 while (rodzic < Wielkość)
  56.                 {
  57.                     if (rodzic + 1 < Wielkość && dane[rodzic + 1] > dane[rodzic])
  58.                     {
  59.                         rodzic++;
  60.                     }
  61.                     if (wartość >= dane[rodzic])
  62.                     {
  63.                         break;
  64.                     }
  65.                     dane[i] = dane[rodzic];
  66.                     i = rodzic;
  67.                     rodzic = 2 * rodzic + 1;
  68.                 }
  69.                 dane[i] = wartość;
  70.             }
  71.             return doUsuniecia;
  72.         }
  73.  
  74.         public void Wyswietl()
  75.         {
  76.             for (int i = 0; i <= Wielkość-1; i++)
  77.             {
  78.                 Console.WriteLine(dane[i]);
  79.             }
  80.             Console.WriteLine();
  81.         }
  82.  
  83.         public bool CzyKopiec()
  84.         {
  85.             bool b = true;
  86.             for (int i = 0; i < dane.Length / 2; i++)
  87.             {
  88.                 if (dane[2 * i + 1] > dane[i])
  89.                 {
  90.                     b = false;
  91.                 }
  92.                 if (2 * i + 2 < dane.Length && dane[2 * i + 2] > dane[i])
  93.                 {
  94.                     b = false;
  95.                 }
  96.             }
  97.             return b;
  98.         }
  99.     }
  100.  
  101.     class Program
  102.     {
  103.         static void Main(string[] args)
  104.         {
  105.             int[] dane = new int[20];
  106.             KolejkaPriorytetowaMin kolejka = new KolejkaPriorytetowaMin(dane);
  107.             kolejka.Wstaw(20);
  108.             kolejka.Wstaw(15);
  109.             kolejka.Wstaw(8);
  110.             kolejka.Wstaw(10);
  111.             kolejka.Wstaw(5);
  112.             kolejka.Wstaw(7);
  113.             kolejka.Wstaw(6);
  114.             kolejka.Wstaw(2);
  115.             kolejka.Wstaw(9);
  116.             kolejka.Wstaw(1);
  117.             Console.WriteLine(kolejka.CzyKopiec());
  118.             kolejka.Wyswietl();
  119.             Console.ReadKey();
  120.         }
  121.     }
  122. }
  123.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement