yaztasarla.com gir algoritma bölümünü incelemeni tavsiye ederim.
Basit bir Algoritma Sorusu
Cevaplar
Selam. aslina bakarsan cok güzel bir soru sormussun. Hocanin verdigi örnek dogru!mcb77 dedi: ↑Algoritmalar benim kafamı çok karıştırıyor. Mantıksız gelen kısımları var. Soracağım soruda bunlardan bir tanesi. Derste hocanın gösterdiği bana mantıksız geldi bende kendim yazdım. Sizce doğrusu nasıl olmalı.
Soru : Girilen 3 değerden en büyüğünü bulduran algoritmayı yazınız.
Hocanın cevabı:
1) Başla
2) A,B,C değerlerini gir.
3) A>B ise Enb=A
4) B>C ise Enb=A
5)Değilse A>C Enb=A
6)Değilse Enb=C
7)Ekrana yaz Enb
8)Bitir
Hocanın verdiği cevap bu. Bana mantıksız gelen kısım, en büyük değerin hiçbir zaman B çıkmaması. Bende bu yanlışı şu şekilde düzeltmeye çalıştım.
Benim cevabım.
1)Başla
2)A>B ve A>C ise Enb=A ise 7. adıma git
3)Değilse 4.adıma git
4)B>A ve B>C ise Enb=B ise 7.adıma
5)Değilse 6.adıma git
6)C>A ve C>B ise Enb=C ise 7. adıma git
7)Enb Ekrana yaz
8)Bitir
Bu şekilde yazılması bana mantıklı geliyor. Sınavımız var ona çalışıyoruz .
Sizce nasıl olması gerekiyor. Şimdiden cevaplar için teşekkürler.
Neden dogru diyecek olursan, A,B,C sayilarindan en büyügünü bulmaya calisan bu algoritmanin asil ama A ile C sayilarini karsilastirmak. B ise bu iki sayinin ortalamasi durumunda oldugundan en büyük sayi asla olamayacaktir.
yani aslinda bu algoritmanin amaci sizlere siralamanin iki sayinin baz alinarak nasil yapilabilecegini , daha dogrusu cok ünlü bir siralama yönteminde kullanilan mantigi kavramanizi istiyor.
elinizde siralamaniz gereken sadece üc degilde üc yüz bin adet sayi olsaydi if ler ile basa cikabilirmiydiniz?? MySQL basa cikiyor ama degil mi :) o halde kesinlikle bütün sayilari karsilastirirken sadece if kullanmiyor :)
Su ünlü Algoritmanin mantigi su, tüm sayilarin ortalamasi alinir. bu ortalamadan büyük sayilar bir tarafta, kücük olanlarda diger tarafta tutulur. simdi bu iki taraftaki her sayi dizisi icin ayni islem tekrar uygulanir, taa ki eleman sayisi ikiye inene kadar. bu yöntem de sadece recursive uygulanabildigi icin en son iki eleman icinde tekrarlanir ve islem son bulur. elindeki her parcalanmis sayi dizisi kendi icinde siralanmis ikililere dönüsür. ve bu islem üc yüz bin sayi dizisi icin bile saniyeler icinde yapilir.
Bence hocanin dedigini dinle, size anlatmak istedigi seylere hazirliyor sizi.
bence hoca ne diyosa onu yap bak ben açık kaynak sınavına girdin hoca sormuş aşağıdakilerden hangisi yanlışdır doğru şık panel kaldırılabilir.Hocaya pardus açılış cdsiyle gösterdim kaldırılabildiğini adam kabul etmedi ve bunun gibi bir sürü saçma soru vardı.mcb77 dedi: ↑Programlamaya giriş ve algoritma konusu . "Sözde" kod yazma mantığını öğrenmemiz gerekiyor ancak mantık hatalı. Bir programlama dili değil. Ancak "C" dilini görmeye başladık.
Sınavda böyle bir soruda benim cevabımı versem acaba hoca doğru kabul edermi.
Birde bu algoritma maddelerini , akış şemasında gösterme durumu var. İlginç....