/ DERS NOTLARI
  1. Ders Notları
  2. C# Console 1'den 63'e kadar sayılar arasındaki bir sayıyı maksimum 6 seferde bulma

C# Console 1'den 63'e kadar sayılar arasındaki bir sayıyı maksimum 6 seferde bulma

Algoritma

  1. Başla
  2. alt = 1, ust = 63,tutulan(rastgele) tahmin, sayac = 0 değişkenlerini al
  3. tahmin değerini gir
  4. tahmin = ( alt + ust ) / 2 işlemini yap
  5. sayacı arttır
  6. Eğer tahmin = tutulan ise 8. adıma git,değilse devam et
  7. Eğer tahmin > tutulan ise ust = tahmin 3. adıma git,değilse alt = tahmin, 3. adıma git
  8. Yazdır sayac, tahmin
  9. 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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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();

        }

    }

}