Nesne Tabanlı Programlama-1 (Güz-2017) Hafta-13
package bagildegerlendirme; import bagildegerlendirme.ortaklar.*; import bagildegerlendirme.hesaplamalar.*; public class calistir extends ortak { public calistir() { int notlar[] = { 30,40,50,30,30, 10,01,32,33,29, 25,12,32,29,28, 23,23,32,38,69, 23,10,53,29,32, 30,35,10,64,32, 48,32,32,5,64, 36,64,34,67,32 }; ortalamahesapla(notlar); String tip="tablo2"; if(ortalama<29.5 || ortalama >=59.5) { tip="tablo1"; }else if(ogrsay<30) tip="tablo1"; System.out.println("Bagil Icin Ogr Say:"+ogrsay+" Ort:"+ortalama); ortak t; System.out.println("Tablo-1"); new tablo1(notlar).histogramgoster(); if(tip.equals("tablo1")) { System.out.println("Tablo-1 Calisacak!"); //t = new tablo1(notlar); } else { System.out.println("Tablo-2"); t = new tablo2(notlar,ortalama,ogrsay); t.histogramgoster(); } } public static void main(String[] args) { new calistir(); } }
package bagildegerlendirme.ortaklar; public class ortak { public int ogrsay; public double ortalama; public int histogram[]= new int[9]; public void ortalamahesapla(int[] notlar) { double toplam=0; for(int i=0;i<notlar.length;i++) { if(notlar[i]>14 && notlar[i]<86) { toplam+=notlar[i]; ogrsay++; } if(ogrsay>0 && toplam>0) { ortalama=yuvarla(toplam/ogrsay); } } } public double yuvarla(double sayi) { double sonuc = Math.round(sayi*100); sonuc/=100; return sonuc; } public void histogramgoster() { String[] harfler= {"AA","BA","BB","CB","CC","DC","DD","FD","FF"}; for(int i=0;i< harfler.length;i++) { System.out.println(harfler[i] + "::" + histogram[i]); } } }
package bagildegerlendirme.hesaplamalar; import bagildegerlendirme.ortaklar.*; public class tablo1 extends ortak{ public tablo1(int[] notlar) { for(int i=0;i<notlar.length;i++) { int hesap=hesapla(notlar[i]); histogram[hesap]++; } } private int hesapla(int not) { int deger[]= {90,80,70,65,60,55,50,40}; for(int i=0;i<deger.length;i++) if(not>=deger[i]) return i; return 8; } }
package bagildegerlendirme.hesaplamalar; import bagildegerlendirme.ortaklar.*; public class tablo2 extends ortak { public tablo2(int[] notlar, double ortalama, int ogrsay) { double sapma= standartsapma(notlar, ortalama); System.out.println("sapma:"+sapma); for(int ogr=0;ogr<notlar.length;ogr++) { if(notlar[ogr]>29 && notlar[ogr]<86) { double z= zdeger(sapma,ortalama,notlar[ogr]); double t= tdeger(z); int indis=hesap(ortalama,t); histogram[indis]++; } else { if(notlar[ogr]<30) { histogram[8]++; } else { //>85 histogram[0]++; } } } } private int hesap(double ortalama,double t) { double degerler[]= new double[0]; /*double iyi[]= {66,62,58,54,50,46,42,30}; double orta[]= {70,66,62,58,53,49,44,34}; double zayif[]= {74,70,66,62,57,51,47,36}; */ if(ortalama>49.5) degerler = new double[] {66,62,58,54,50,46,42,30}; else if(ortalama>39.5) degerler = new double[] {70,66,62,58,53,49,44,34}; else if(ortalama>29.5) degerler = new double[] {74,70,66,62,57,51,47,36}; for(int i=0;i<degerler.length;i++) if(t>=degerler[i]) return i; return 8; // FF } private double standartsapma(int[] notlar, double ortalama) { int sayac=0; double toplam=0; for(int i=0;i<notlar.length;i++) { if(notlar[i]>14 && notlar[i]<86) { toplam+=Math.pow((notlar[i]-ortalama),2); sayac++; } } if(sayac>0 && toplam>0) { toplam/=sayac; toplam=Math.sqrt(toplam); } // sapma 0 olamaz if(toplam==0.0) toplam=1.0; return toplam; } private double zdeger(double sapma, double ortalama, int not) { double sonuc=(not-ortalama)/sapma; return sonuc; } private double tdeger(double zdeger) { double sonuc= yuvarla(50+10*zdeger); return sonuc; } }