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;
	}


}

 

Share