C# Console 1’den 63’e kadar sayılar arasındaki bir sayıyı maksimum 6 seferde bulma
Algoritma
- Başla
- alt = 1, ust = 63,tutulan(rastgele) tahmin, sayac = 0 değişkenlerini al
- tahmin değerini gir
- tahmin = ( alt + ust ) / 2 işlemini yap
- sayacı arttır
- Eğer tahmin = tutulan ise 8. adıma git,değilse devam et
- Eğer tahmin > tutulan ise ust = tahmin 3. adıma git,değilse alt = tahmin, 3. adıma git
- Yazdır sayac, tahmin
- Bitir
Bu soru matematik olimpiyatlarında sorulmuş bir sorudur ve ileride dizi sorularında binary(ikili) arama konusunda anlatacağımız olan algoritmayı kullanan bir sorudur. Bu sorularda 1 – 63 arası… dendiğinde alt ve ust değer olarak en düşük ve en yuksek değerleri alır, dolayısıyla bu soruda alt = 1 ve ust = 63 olacaktır. Bir de bu seride arayacağımız sayımız olacaktır.
Bu soruda sayı rastgele oluşturulmaktadır.Tutulan sayıyı bulana kadar seriyi her defasında tutulan sayının büyük ya da küçük olmasına göre böle böle küçülteceğiz.
Kod Yapısı
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace dmg
{
class Program
{
static void Main(string[] args)
{
int alt = 1;
int ust = 63;
int tahmin;
int sayac = 0;
Random rnd = new Random();
int tutulan = rnd.Next(63) + 1;
dnz:
tahmin = ( alt + ust ) / 2;
sayac++;
if( tahmin == tutulan )
{
Console.WriteLine("Tutulan = " + tutulan + " sayac = " + sayac);
}
else
{
if( tahmin > tutulan )
{
ust = tahmin;
}
else
{
alt = tahmin;
}
goto dnz;
}
Console.ReadKey();
}
}
}
23 Aralık 2017