Meydan okuma 1 - Birleşik program
- Go kursu
- Başlangıç
- Ders 87/90
- 8 dk
Değişken, döngü ve fonksiyonu birleştiren bir program yazarsın.
Meydan okuma: not istatistikleri
Değişkenler, döngüler ve fonksiyonları birleştireceksin. Bir not listesinin ortalamasını, en yüksek notunu ve geçen öğrenci sayısını (60 ve üzeri) bulan istatistik(notlar []int) (float64, int, int) fonksiyonunu yaz.
ort, enYuksek, gecen := istatistik([]int{45, 72, 90, 60, 38})
// 61 90 3Boş liste için üç değer de 0 olmalı; sıfıra bölmeyi unutma.
Plan
1) len(notlar) == 0 ise 0, 0, 0 döndür. 2) toplam, enYuksek := notlar[0], gecen değişkenlerini tanımla. 3) range ile gez: topla, en yüksek notu güncelle, 60 ve üzerini say. 4) float64(toplam) / float64(len(notlar)) ile ortalamayı hesaplayıp üç değeri döndür.
Uygulama İstatistik fonksiyonu
Plana göre istatistik fonksiyonunu yaz. []int{45, 72, 90, 60, 38} ve boş dilim için sonuçları ayrı satırlarda yazdır.
Başlangıç kodu
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
package main
import "fmt"
func istatistik(notlar []int) (float64, int, int) {
if len(notlar) == 0 {
return 0, 0, 0
}
toplam, enYuksek, gecen := 0, notlar[0], 0
for _, n := range notlar {
toplam += n
if n > enYuksek {
enYuksek = n
}
if n >= 60 {
gecen++
}
}
return float64(toplam) / float64(len(notlar)), enYuksek, gecen
}
func main() {
fmt.Println(istatistik([]int{45, 72, 90, 60, 38}))
fmt.Println(istatistik(nil))
}Beklenen çıktı
61 90 3 0 0 0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Boş liste kontrolü neden fonksiyonun en başında yapılır?
- Ortalamada len(notlar) ile bölünür; 0 ile bölme NaN üretir Doğru cevap
- Daha kısa olduğu için
- Go bunu zorunlu tutar
- Gerek yoktur
Açıklama: float64(0)/float64(0) NaN verir; erken dönüş bu kenar durumunu temizce ele alır.
2 En yüksek notu güncelle
for _, n := range notlar {
if n ____ enYuksek {
enYuksek = n
}
}
for _, n := range notlar {
if n > enYuksek {
enYuksek = n
}
}
Açıklama: Daha büyük bir not görülünce en yüksek değer güncellenir.
3 Girdi ve sonuç
| Kavram | Anlamı |
|---|---|
[45 72 90 60 38] |
61 90 3 |
[] |
0 0 0 |
[100] |
100 100 1 |
[59 59] |
59 59 0 |