Güzel bir algoritma (vize sorusu)

Ege BÖTE2'lerin c# vize sorusu: bir textboxa girilen 10 adet isimi listboxta aşağıdaki formatta yazan programı yazın.
format: örneğin 2 adet efa 3 adet ali ve 5 adet tuğçe girdiyse listboxa şu şekilde yazılacak:
efa 2
ali 3
tuğçe 5

ben 2 farklı algoritma kurdum;
Algoritma1*:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
const int isim_sayisi = 10;
string[] isim = new string[isim_sayisi];
int sayac = 0;
bool daha_once_sayildi;

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
button2.Enabled = false;
}

private void button2_Click(object sender, EventArgs e)
{
int sayac1, sayac2, sayac3, adet = 0;

for (sayac1 = 0; sayac1 <>
{
daha_once_sayildi = false;
for (sayac2 = 0; sayac2 <>
{
if (isim[sayac1] == isim[sayac2])
{
daha_once_sayildi = true;
}
}

if (daha_once_sayildi != true)
{
for (sayac3 = sayac1; sayac3 <>
{
if (isim[sayac1] == isim[sayac3])
{
adet++;
}

}
listBox1.Items.Add(isim[sayac1] + " " + adet);
adet = 0;
}
}
button1.Enabled = true;
button2.Enabled = false;
sayac = 0;
textBox1.Focus();
}

private void button1_Click(object sender, EventArgs e)
{
isim[sayac] = textBox1.Text;
textBox1.Text = "";
sayac++;
if (sayac == isim_sayisi)
{
button1.Enabled = false;
button2.Enabled = true;
}
textBox1.Focus();
}
}
}
*NOT: Bu algoritmayı çözümleyip anlatabilene helal olsun :)

Algoritma2:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
const int isim_sayisi = 10;
string[] isim = new string[isim_sayisi];
int sayac = 0;
bool[] daha_once_sayildi=new bool[isim_sayisi];

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
isim[sayac] = textBox1.Text;
textBox1.Text = "";
sayac++;
if (sayac == isim_sayisi)
{
button1.Enabled = false;
button2.Enabled = true;
}
textBox1.Focus();
}

private void button2_Click(object sender, EventArgs e)
{
int sayac1, sayac2, sayac3, adet = 0;

//önce tüm sayıların boolean halini sıfırlıyoruz
//yani daha önce kontrol edilmedi diyoruz
for (sayac3 = 0; sayac3 <>
daha_once_sayildi[sayac3] = false;

for (sayac1 = 0; sayac1 <>
{
for (sayac2 = sayac1; sayac2 <>
{
if ((daha_once_sayildi[sayac2]==false) && (isim[sayac1]==isim[sayac2]))
{
daha_once_sayildi[sayac2] = true;
adet++;
}
}
if (adet!=0)
{
listBox1.Items.Add(isim[sayac1] + " " + adet);
}
adet = 0;
}
button1.Enabled = true;
button2.Enabled = false;
sayac = 0;
textBox1.Focus();
}

private void Form1_Load(object sender, EventArgs e)
{
button2.Enabled = false;
}


}
}

Hiç yorum yok:

Yorum Gönder