CodeBlanks Logo Icon CodeBlanks

Meydan okuma 1 - Birleşik program

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 3

Boş 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

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
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

Soru
for _, n := range notlar {
    if n ____ enYuksek {
        enYuksek = n
    }
}
Cevap
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

Başlangıç bölümündeki tüm dersler