• 11-07-2023, 09:31:07
    #1
    Çözüm yapılmıştır.
  • 13-07-2023, 00:28:01
    #2
    Merhaba ulaşabilirsiniz
  • 13-07-2023, 00:52:56
    #3
    using System; using System.Collections.Generic; using System.Windows.Forms; namespace BellekOrganizasyonu {    public partial class Form1 : Form    {        private const int MemorySize = 16; // Bellek boyutu (MB)        private bool[] memoryBlocks; // Belleği temsil eden dizi        private List<int> programNumbers; // Program numaralarını tutan liste        public Form1()        {            InitializeComponent();            memoryBlocks = new bool[MemorySize];            programNumbers = new List<int>();        }         private void btnGoster_Click(object sender, EventArgs e)        {            lbBellek.Items.Clear();            for (int i = 0; i < MemorySize; i++)            {                if (memoryBlocks[i])                    lbBellek.Items.Add("X");                else                    lbBellek.Items.Add("");            }        }         private void btnEkle_Click(object sender, EventArgs e)        {            int uzunluk, pozisyon;            if (int.TryParse(tbxUzun.Text, out uzunluk) && int.TryParse(tbxPoz.Text, out pozisyon))            {                if (uzunluk <= 0 || uzunluk % 1 != 0)                {                    MessageBox.Show("Geçersiz uzunluk değeri!");                    return;                }                 if (pozisyon < 0 || pozisyon >= MemorySize)                {                    MessageBox.Show("Geçersiz pozisyon değeri!");                    return;                }                 if (pozisyon + uzunluk > MemorySize)                {                    MessageBox.Show("Uygun değil. Yeterli boş alan yok!");                    return;                }                 for (int i = pozisyon; i < pozisyon + uzunluk; i++)                {                    if (memoryBlocks[i])                    {                        MessageBox.Show("Uygun değil. Yeterli boş alan yok!");                        return;                    }                }                 for (int i = pozisyon; i < pozisyon + uzunluk; i++)                {                    memoryBlocks[i] = true;                }                 int programNumber = programNumbers.Count + 1;                programNumbers.Add(programNumber);                cmbProgram.Items.Add(programNumber);                MessageBox.Show("Bellek tahsisi yapıldı.");            }            else            {                MessageBox.Show("Geçersiz giriş değerleri!");            }        }         private void btnBestfit_Click(object sender, EventArgs e)        {            int uzunluk;            if (int.TryParse(tbxUzun.Text, out uzunluk))            {                if (uzunluk <= 0 || uzunluk % 1 != 0)                {                    MessageBox.Show("Geçersiz uzunluk değeri!");                    return;                }                 int bestFitPosition = -1;                int bestFitSize = int.MaxValue;                int currentSize = 0;                int bestFitIndex = -1;                 for (int i = 0; i < MemorySize; i++)                {                    if (memoryBlocks[i])                    {                        currentSize = 0;                    }                    else                    {                        currentSize++;                        if (currentSize >= uzunluk && currentSize < bestFitSize)                        {                            bestFitSize = currentSize;                            bestFitPosition = i - currentSize + 1;                            bestFitIndex = i;                        }                    }                }                 if (bestFitPosition == -1)                {                    MessageBox.Show("Uygun değil. Yeterli boş alan yok!");                    return;                }                 for (int i = bestFitPosition; i < bestFitPosition + uzunluk; i++)                {                    memoryBlocks[i] = true;                }                 int programNumber = programNumbers.Count + 1;                programNumbers.Add(programNumber);                cmbProgram.Items.Add(programNumber);                MessageBox.Show($"Bellek tahsisi yapıldı. En uygun pozisyon: {bestFitIndex + 1}");            }            else            {                MessageBox.Show("Geçersiz giriş değeri!");            }        }    } }