Exemple #1
0
        public void MoveToDown(int index)
        {
            int        largerChild;
            HeapDugumu top = heapArray[index];

            while (index < currentSize / 2)
            {
                int leftChild  = 2 * index + 1;
                int rightChild = leftChild + 1;
                //Find larger child
                if (rightChild < currentSize && heapArray[leftChild].urun.SatisFiyati > heapArray[rightChild].urun.SatisFiyati)
                {
                    largerChild = rightChild;
                }
                else
                {
                    largerChild = leftChild;
                }
                if (top.urun.SatisFiyati <= heapArray[largerChild].urun.SatisFiyati)
                {
                    break;
                }
                heapArray[index] = heapArray[largerChild];
                index            = largerChild;
            }
            heapArray[index] = top;
        }
Exemple #2
0
        public HeapDugumu RemoveMax() // Remove maximum value HeapDugumu
        {
            HeapDugumu root = heapArray[0];

            heapArray[0] = heapArray[--currentSize];
            MoveToDown(0);
            return(root);
        }
Exemple #3
0
        public bool Insert(Urun u)
        {
            if (currentSize == maxSize)
            {
                return(false);
            }
            HeapDugumu newHeapDugumu = new HeapDugumu(u);

            heapArray[currentSize] = newHeapDugumu;
            MoveToUp(currentSize++);
            return(true);
        }
Exemple #4
0
        public void MoveToUp(int index)
        {
            int        parent = (index - 1) / 2;
            HeapDugumu bottom = heapArray[index];

            while (index > 0 && heapArray[parent].urun.SatisFiyati > bottom.urun.SatisFiyati)
            {
                heapArray[index] = heapArray[parent];
                index            = parent;
                parent           = (parent - 1) / 2;
            }
            heapArray[index] = bottom;
        }
Exemple #5
0
        public bool Insert(Urun yeniUrun)
        {
            if (currentSize == maxSize)
            {
                return(false);
            }
            HeapDugumu newHeapDugumu = new HeapDugumu(yeniUrun);

            heapArray[currentSize] = newHeapDugumu;
            currentSize++;
            siftUp(currentSize - 1);

            return(true);
        }
Exemple #6
0
        public HeapDugumu RemoveMin()
        {
            HeapDugumu yeniHP = new HeapDugumu();

            if (currentSize == 0)
            {
                return(null);

                throw new Exception("Heap boş!");
            }
            else
            {
                yeniHP       = heapArray[0];
                heapArray[0] = heapArray[currentSize - 1];
                currentSize--;
                if (currentSize > 0)
                {
                    siftDown(0);
                }
            }

            return(yeniHP);
        }
        private void button12_Click(object sender, EventArgs e)
        {
            listUcuzUrun.Items.Clear();
            listUcuzUrun.View = View.Details;
            double     tutar = 0;
            Heap       h     = new Heap(1000);
            HeapDugumu heap  = new HeapDugumu();

            foreach (Kategori k in Form1.market.Kategoriler)
            {
                if (k.KategoriIsmi == cmbUcuzKategori.Text)
                {
                    k.Agac.InOrder();
                    foreach (İkiliAramaAgacDugumu d in k.Agac.dugumler)
                    {
                        foreach (Urun u in d.Urunler)
                        {
                            for (int j = 0; j < u.Miktar; j++)
                            {
                                h.Insert(u);
                            }
                        }
                    }
                }
            }
            foreach (Musteri m in Form1.market.Musteriler)
            {
                if (m.KullaniciAdi == must.KullaniciAdi)
                {
                    if (h.currentSize >= Convert.ToUInt32(txtAdet.Text))
                    {
                        for (int i = 0; i < Convert.ToUInt32(txtAdet.Text); i++)
                        {
                            heap = h.RemoveMax();
                            if ((heap.urun.Miktar - 1) == 0)
                            {
                                foreach (Kategori k in Form1.market.Kategoriler)
                                {
                                    if (cmbUcuzKategori.Text == k.KategoriIsmi)
                                    {
                                        k.Agac.InOrder();
                                        foreach (İkiliAramaAgacDugumu d in k.Agac.dugumler)
                                        {
                                            foreach (Urun u in d.Urunler)
                                            {
                                                if (heap.urun.Marka == u.Marka && heap.urun.Model == u.Model)
                                                {
                                                    foreach (Urun u3 in m.Siparis)
                                                    {
                                                        if (u3.UrunAdi == u.UrunAdi && u3.Marka == u.Marka && u3.Model == u.Model)
                                                        {
                                                            m.Siparis.Remove(u3);
                                                            break;
                                                        }
                                                    }
                                                    m.Gecmis.Add(u);
                                                    Form1.gelir += u.SatisFiyati;
                                                    Form1.gider += u.Maliyet;
                                                    d.Urunler.Remove(u);
                                                    break;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                            else
                            {
                                foreach (Kategori k in Form1.market.Kategoriler)
                                {
                                    if (cmbUcuzKategori.Text == k.KategoriIsmi)
                                    {
                                        k.Agac.InOrder();
                                        foreach (İkiliAramaAgacDugumu d in k.Agac.dugumler)
                                        {
                                            foreach (Urun u in d.Urunler)
                                            {
                                                if (heap.urun.Marka == u.Marka && heap.urun.Model == u.Model)
                                                {
                                                    Urun u2 = new Urun();
                                                    u2.Maliyet     = u.Maliyet;
                                                    u2.Marka       = u.Marka;
                                                    u2.Miktar      = 1;
                                                    u2.Model       = u.Model;
                                                    u2.SatisFiyati = u.SatisFiyati;
                                                    u2.UrunAdi     = u.UrunAdi;
                                                    u2.Aciklaması  = u.Aciklaması;
                                                    u2.Miktar      = 1;
                                                    u.Miktar--;
                                                    m.Gecmis.Add(u2);
                                                    Form1.gelir += u.SatisFiyati;
                                                    Form1.gider += u.Maliyet;

                                                    break;
                                                }
                                            }
                                        }
                                    }
                                }
                            }

                            tutar += heap.urun.SatisFiyati;
                            listUcuzUrun.Items.Add(heap.urun.UrunAdi);
                            listUcuzUrun.Items[i].SubItems.Add(heap.urun.Marka);
                            listUcuzUrun.Items[i].SubItems.Add(heap.urun.Model);
                            listUcuzUrun.Items[i].SubItems.Add(1.ToString());
                            listUcuzUrun.Items[i].SubItems.Add(heap.urun.SatisFiyati.ToString());
                            listUcuzUrun.Items[i].SubItems.Add(heap.urun.Aciklaması);
                        }
                        lblUcuzTutar.Text = tutar.ToString();
                        MessageBox.Show("Listedeki Ürünler Başarı ile Alındı.!!");
                    }
                    else
                    {
                        MessageBox.Show("Bu kategoride bu kadar ürün mevcut değil..!");
                    }
                }
            }
        }