Umut D.

Umut D.

Powered by Jekyll & Github

  • Coding-Challenges

  • Soru

    Bir öğrencinin, bir hafta içerisinde okuduğu kitap sayfa sayıları (okunanSayfaSayisi) programcıya veriliyor. Programcıdan ise, bu öğrencinin kitap okuma performansını hem ortalama (ortalama), hem de standart sapma (standartSapma) olarak değerlendiren bir program yazması isteniyor.

    Örnek

    Girdi Çıktı
    okunanSayfaSayisi: 10, 25, 15, 20, 10 Ortalama: 16
    Standart Sapma: 6,51920240520265
    okunanSayfaSayisi: 15, 10, 35, 5, 15 Ortalama: 16
    Standart Sapma: 11,4017542509914

    Çözüm - C#

    internal class Program
    {
        private static void Main(string[] args)
        {
            // Öğrencinin hafta içinde okuduğu sayfa sayısı
            double[] okunanSayfaSayisi = new double[] { 15, 10, 35, 5, 15};
     
            // 1. Öğrencinin sayfa ortalamasını hesapla
            double sayfaOrtalamasi = OrtalamaHesapla(okunanSayfaSayisi);
     
            // 2. Öğrencinin standart sapma değerini fonksiyonla hesapla
            double standartSapma = StandartSapmaHesapla(okunanSayfaSayisi);
     
            Console.WriteLine("Günlük Ortalama Okunan Sayfa: " + sayfaOrtalamasi);
            Console.WriteLine("Standart Sapma: " + standartSapma);
     
            Console.Read();
        }
     
        // Öğrencilerin ortalamasını hesaplayan fonksiyon
        public static double OrtalamaHesapla(params double[] gelenDegerler)
        {
            int toplam = 0;
            double ortalama = 0;
     
            foreach (int sayi in gelenDegerler)
            {
                toplam += sayi;
                ortalama = toplam/(double) gelenDegerler.Length;
            }
     
            return ortalama;
        }
     
        // Öğrencilerin standart sapmasını hesaplayan fonksiyon
        private static double StandartSapmaHesapla(params double[] gelenDegerler)
        {
            // Ortalama fonksiyonundan gelen değeri al
            double ortalama = OrtalamaHesapla(gelenDegerler);
            double payToplami = 0;
     
            // Gelen dizi değerlerini tek tek hesapla
            // Her bir veriden, ortalamayı çıkararak mutlak değeri al. Negatifsiz hale gelen verinin karesini al. (Örn. |16-10|^2)
            // Mevcut işlemi her bir veri için tekrar tekrar gerçekleştir
            foreach (double sayi in gelenDegerler)
            {
                payToplami += Math.Pow(Math.Abs((sayi - ortalama)), 2);
            }
     
            // Paydadaki sayı, dizinin uzunluğu-1 formülü ile hesaplanıyor (Örn. 5-1)
            int paydaSayisi = gelenDegerler.Length - 1;
     
            // Pay ve paydadaki değerleri bölerek, bölümün karekökünü al
            double sonuc = Math.Sqrt((payToplami/paydaSayisi));
     
            return sonuc;
        }
    }
    

    Çözüm - Java

    public class Main {
        public static void main(String[] args) {
            // Öğrencinin hafta içinde okuduğu sayfa sayısı
            double[] okunanSayfaSayisi = new double[]{10, 25, 15, 20, 10};
     
            // 1. Öğrencinin sayfa ortalamasını hesapla
            double sayfaOrtalamasi = OrtalamaHesapla(okunanSayfaSayisi);
     
            // 2. Öğrencinin standart sapma değerini fonksiyonla hesapla
            double standartSapma = StandartSapmaHesapla(okunanSayfaSayisi);
     
            System.out.println("Günlük Ortalama Okunan Sayfa: " + sayfaOrtalamasi);
            System.out.println("Standart Sapma: " + standartSapma);
     
        }
     
        // Öğrencilerin ortalamasını hesaplayan fonksiyon
        private static double OrtalamaHesapla(double[] gelenDegerler) {
            int toplam = 0;
            double ortalama = 0;
     
            for (double sayi : gelenDegerler) {
                toplam += sayi;
                ortalama = toplam / (double) gelenDegerler.length;
            }
     
            return ortalama;
        }
     
        // Öğrencilerin standart sapmasını hesaplayan fonksiyon
        private static double StandartSapmaHesapla(double[] gelenDegerler) {
            // Ortalama fonksiyonundan gelen değeri al
            double ortalama = OrtalamaHesapla(gelenDegerler);
            double payToplami = 0;
     
            // Gelen dizi değerlerini tek tek hesapla
            // Her bir veriden, ortalamayı çıkararak mutlak değeri al. Negatifsiz hale gelen verinin karesini al. (Örn. |16-10|^2)
            // Mevcut işlemi her bir veri için tekrar tekrar gerçekleştir
            for (double sayi : gelenDegerler) {
                payToplami += Math.pow(Math.abs((sayi - ortalama)), 2);
            }
     
            // Paydadaki sayı, dizinin uzunluğu-1 formülü ile hesaplanıyor (Örn. 5-1)
            int paydaSayisi = gelenDegerler.length - 1;
     
            // Pay ve paydadaki değerleri bölerek, bölümün karekökünü al
            double sonuc = Math.sqrt((payToplami / paydaSayisi));
     
            return sonuc;
        }
    }