Programlama temellerinden sınavda çözülen sorularla yüksek alınır mı?

Soruyu yazarken hocanın aklı karışmış olabilir mi? Benim beynim en büyük değere negatif değişken verme işini yemedi.
Muhtemelen yanlış anlamadıysam bir listedeki en büyük değeri bulmak için vermiş. Daha sonrasında;
C++:
for(int i = 0; i < liste.size(); i++) { //sizeını alabildiğimiz bir container olduğunu varsaydım
    enb = max(enb, liste[i]);
}

//enb = -999 liste[0] = 19 | enb artık 19
//enb = 19 liste[1] = 3 | enb hala 19
//enb = 19 liste[2] = 27 | enb artık 27
gibi bir şey yapacak ve böylece en yüksek sıcaklığı bulmuş olacak full iterasyon sonrasında. Max'ı bulduğu günleri de her yeni maxla kaydederse, sıkıntı yaşamadan elde eder mevzuyu.
 
Muhtemelen yanlış anlamadıysam bir listedeki en büyük değeri bulmak için vermiş. Daha sonrasında;
C++:
for(int i = 0; i < liste.size(); i++) { //sizeını alabildiğimiz bir container olduğunu varsaydım
    enb = max(enb, liste[i]);
}

//enb = -999 liste[0] = 19 | enb artık 19
//enb = 19 liste[1] = 3 | enb hala 19
//enb = 19 liste[2] = 27 | enb artık 27
gibi bir şey yapacak ve böylece en yüksek sıcaklığı bulmuş olacak full iterasyon sonrasında. Max'ı bulduğu günleri de her yeni maxla kaydederse, sıkıntı yaşamadan elde eder mevzuyu.

Bu min ve max olayının algoritmasını böyle çizmiştim. Aynı algoritma içinde büyük ve küçük değerleri aynı anda böylece bulunabilir.

2.png
 
Bu min ve max olayının algoritmasını böyle çizmiştim. Aynı algoritma içinde büyük ve küçük değerleri aynı anda böylece bulunabilir.

Eki Görüntüle 2023151
0'dan küçük bir değer yoksa en küçük değerin sıfır olacağı için yanlış bilgi dönecek.

Listenin { 4, 8, 16, 2, 19, 10 } olduğunu varsayalım. min > GunSıcaklıkları[ i } hiç bir zaman doğru gelmeyecek çünkü min = 0;

Listenin { -4, -8, -16, -2, -19, -10 } olduğunu varsayalım max hiç gelmeyecek bu durumda da. Bu yüzden max = INT_MIN, min = INT_MAX kullanılır genelde.

Yukarıda verdiğim kod tek iterasyonda maxı da bulur, mini de. Aynı yere kontrolü koy yeterli.
 
0'dan küçük bir değer yoksa en küçük değerin sıfır olacağı için yanlış bilgi dönecek.

Listenin { 4, 8, 16, 2, 19, 10 } olduğunu varsayalım. min > GunSıcaklıkları[ i } hiç bir zaman doğru gelmeyecek çünkü min = 0;

Listenin { -4, -8, -16, -2, -19, -10 } olduğunu varsayalım max hiç gelmeyecek bu durumda da. Bu yüzden max = INT_MIN, min = INT_MAX kullanılır genelde.

Yukarıda verdiğim kod tek iterasyonda maxı da bulur, mini de. Aynı yere kontrolü koy yeterli.
Aaa doğru nasıl gözümden kaçmış... Süper yakalamışsınız tebrikler. Evet, min ve max predefined olmamalı.
 
Hocalarım afedersiniz ama biz böyle yapmadığımız için bir şey anlamadım.
 
Hocam biz nasıl yaptığımızı fotoğraf ile gösterdim bize böyle anlatılmadı min max şeklinde
Kod kısmına takılma. Hocanız size algoritmada bir listede minimum ve maksimum almanın yollarını göstermiş. Önce program başlamış sonrasında EnK ve EnB (En küçük ve En büyük) adlı iki değişken oluşturmuş. Bunlar işimiz bittiğinde en büyük ve en küçük değerleri gösteriyor olacaklar. Başta -999 vermesinin sebebi en büyük değere gidebilmek için sayıyı kıyaslaman gerekecek. Bu sebeple bir değer vermek gerekiyor.

-999 verdiğinde, listedeki her bir sayıyı (liste burada Muğla'nın sıcaklıkları) kıyaslıyor, eğer gelen sayı -999'dan büyükse onu seçiyor. En ideal yöntem bu değil ama işe yarar bu contextte. Örnek yapalım daha iyi anlarsın.

EnB = -999 şu an, değil mi? Listemizde de sıcaklıklar 12, 15, 8, 3, 8, 15, 16, 20 olsun. Tüm listeyi EnB ile kıyaslayıp EnB'yi her zaman büyük olan yapalım.

-999 ve 12 arasından hangisi daha büyük? 12. O yüzden artık EnB = 12 diyeceğiz.
12 ve 15 arasından hangisi daha büyük? 15. Artık EnB = 15;
15 ve 8 arasından hangisi daha büyük? 15. Hala EnB = 15;
15 ve 3 arasından hangisi daha büyük? 15. Hala EnB = 15;
15 ve 15 arasından hangisi daha büyük? 15. Hala EnB = 15; (Eşitler dolayısıyla büyüklük kıyaslamasına gerek yok aslında ama birinden birini seçmemiz gerek. :D)
15 ve 16 arasından hangisi daha büyük? 16. Artık EnB = 16;
16 ve 20 arasından hangisi daha büyük? 20. Artık EnB = 20.

Listemiz bitti. Bittikten sonra en büyük değer 20 bulduk. Tam tersini de en küçük için yapacaksın. 999 ile kıyaslamaya başlayıp hep en küçüğü seçeceksin.
 

Technopat Haberler

Yeni konular

Geri
Yukarı