29 Mayıs 2012 Salı

Öğrenci not programı

Elektrik-Elektronik Mühendisliğinde okuyan bir arkadaşımın Bilgisayar Programlama dersi final projesi için yaptığım basit bir öğrenci otomasyon programı.Bu program maksimum 50 kişilik bir sınıftaki notları kullanıcıdan alarak öğrencilerin notunu, harf notunu, sınıfın ortalamasını, standart sapmasını hesaplayan ve daha sonra bu değerleri ekranda görüntüleyen bir programdır.

16 Mart 2012 Cuma

JavaScript ile Basit Hesap Makinesi

Okulda ödev olarak hazırladığım basit bir hesap makinesi.Çok fazla işlevi yok maalesef ancak hesap makinesi yapmak isteyenler için yeterli bir kaynak olabileceğini düşünüyorum.Umarım işinize yarar.



Kaynak kod devamındadır.


28 Şubat 2012 Salı

Üst Üçgen Matris

  Asal köşegenin altında kalan elemanlarının hepsi 0 olan matrise üst üçgen matris veya üst üçgensel matris denir.Aşağıdaki kodda 3x3 lük bir matrisin içini rasgele değerlerle dolduran ve daha sonra onu üst üçgensel matrise çeviren bir program bulunmaktadır.

import java.util.Random;

public class Ustucgen {
      
    public static void main(String[] args) 
    {
        
        Random r=new Random();
        double [][]m=new double[3][3];
        double m2[][]=new double[3][3];
        
        for(int i=0;i<3;i++)
        {
            for(int j=0;j<3;j++)
            {
                m[i][j]=1+r.nextInt(9);
                m2[i][j]=0;

               
            }
        }

        System.out.println("Matris");
        for(int i=0;i<3;i++)
        {
            for(int j=0;j<3;j++)
            {
                System.out.print(m[i][j]+" ");
                
            }
            System.out.println();
        }


        for(int i=0;i<3;i++)
        {
            m[1][i]=m[1][i]/m[1][0];
        }
            
        for(int i=0;i<3;i++)
        {
            m[1][i]=(m[1][i]*m[0][0])-(m[0][i]);
        }
        
        for(int i=0;i<3;i++)
        {
            m[2][i]=m[2][i]/m[2][0];
        }
        for(int i=0;i<3;i++)
        {
            m[2][i]=(m[2][i]*m[0][0])-(m[0][i]);
        }

        for(int i=0;i<3;i++)
        {
            m[2][i]=m[2][i]/m[2][1];
        }

        for(int i=0;i<3;i++)
        {
            m[2][i]=(m[2][i]*m[1][1])-(m[1][i]);
        }
       

        
        
        System.out.println("Ust Ucgen Matris");
        for(int i=0;i<3;i++)
        {
            for(int j=0;j<3;j++)
            {
                System.out.print(m[i][j]+" ");

            }
            System.out.println();
        }
        
    }

}

25 Şubat 2012 Cumartesi

Sıralı İkili Ağaçlar

Ağaçların özel bir hali olan ikili ağaçların daha da özel hali sıralı ikili ağaçlarda aynı atası ikili ağaçlar gibi en fazla 2  çocuk düğüme sahiptir.Bu tip ağaçlarda kök düğümün solundaki değerler kökten küçük sağındaki değerler ise kökten büyük olmak zorundadır.Bu durum tam tersi şekilde de işleyebilir.Aşağıda bir sıralı iki ağaca ekleme işlemi yapan Java program kodu bulunmktadır.Dugum ve Agac adında iki sınıf bulunmaktadır.


Kaynak kod devamındadır.

Gri-ölçekli görüntünün histogramı

Bu program gri ölçekli (grey-scale) bir görüntünün histogramını görüntülemektedir.Arayüz olarak Swing JFrame kullanılmıştır.Gri-ölçekli görüntüler dışındaki görüntülerde program hata verecektir.


Öncelikle görüntü JFileChooser ile seçilir.Seçilen görüntü Raster (ızgara) sınıfı ile görüntünün pikselleri alınır ve piksel dizisine atanır.Daha sonra görüntünün histogramı piksel dizisi kullanılarak histogram dizisine atanır.Histogram dizisindeki değerler çok yüksek çıkabileceği için, öncelikle histogram dizisinin en yüksek değerli elemanı (max) bulunur daha sonra histogram dizisindeki her eleman max elemanına bölünür ve 255 ile çarpılır.Bu sayede histogram dizisi 0-255 arası değerlere çekilmiş olur.Şimdi elimizdeki histogram dizisi 256 boyutlu bir tamsayı dizisi ve değerleri 0-255 arasında değişkenlik gösteriyor.Ben histogramı ekrana çizdirmek için Graphics sınıfının drawLine yöntemini kullandım.Ancak koordinat sistemi pencerenin sol üst köşesinden başladığı için çizdirirken ayarlama yapmak gerekiyor.a ve b adlı değişkenleri burada ayarlama yapmak için kullandık.Histogramımızı çizdikten sonra bunu JLabel değişkenimize aktarıyoruz ve bu sayede histogramı ekranda yazdırmış oluyoruz.













import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.DirectColorModel;
import java.awt.image.Raster;
import java.io.File;
import java.io.IOException;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class GrayScale extends JFrame implements ActionListener {

    private BufferedImage goruntum;
    static int genislik,yukseklik;
    static JLabel hist;
    static int piksel[],histogram[];

    public GrayScale(){

        super("Histogram");
        JPanel main=new JPanel();
        main.setLayout(new BorderLayout());
        this.setContentPane(main);

        hist=new JLabel();
        main.add(hist,BorderLayout.CENTER);

        JButton dugme=new JButton("Resim Aç");
        main.add(dugme,BorderLayout.SOUTH);    
        dugme.addActionListener(this);

        this.setResizable(false);
        this.pack();
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }

    public void actionPerformed(ActionEvent e) {


        String filename=File.separator+"tmp";
        JFileChooser fc=new JFileChooser(new File(filename));
        fc.showOpenDialog(fc);
        File file=fc.getSelectedFile();
        try {
            goruntum = javax.imageio.ImageIO.read(file);
        } catch (IOException ex) {

        }
        genislik=goruntum.getWidth();
        yukseklik=goruntum.getHeight();
        piksel=new int[genislik*yukseklik];
        histogram=new int[256];
        Raster raster = goruntum.getData();
        raster.getPixels(0, 0, genislik, yukseklik, piksel);
        for(int i=0;i<piksel.length;i++){
            ++histogram[piksel[i]];
        }
        int max=0;
        for(int i=0;i<histogram.length;i++){
            if(histogram[i]>max)
                max=histogram[i];
        }
        for(int i = 0;i < histogram.length;i++){
        histogram[i] = 255 * histogram[i]/max;
        }
       BufferedImage bi=new BufferedImage(320,360,BufferedImage.TYPE_INT_RGB);
       Graphics g=bi.getGraphics();
       g.setColor(Color.white);
       final int a = 300;
       final int b = 5;
       for(int i = 0; i < histogram.length ; i++){
       g.drawLine(i + b,a ,i + b, a - histogram[i]);
       ImageIcon im=new ImageIcon(bi);
       GrayScale.setLabel(im);
       }      
    }

    public static void setLabel(ImageIcon im){
        hist.setIcon(im);
    }

    public static void main(String []args){
        GrayScale gs=new GrayScale();
        gs.setBounds(20,20,330,370);
    }
}

Matris Çarpımı

İki matrisin çarpımını hesaplar.Matrislerin çarpıma uygun olup olmadığını kontrol etmez.Kontrolün kullanıcı tarafından yapılması gerekir.Örnek olarak 3x3 lük iki matris çarpılmakta ve sonuç ekrana yazdırılmaktadır.




public class MatrisCarpimi {


    public static void carpim(int[][] a,int[][] b){

        //Sonuç matrisi yaratılıyor.
        int[][] c=new int[a.length][b[0].length];

        //Çarpma işlemi yapılıyor.
        for(int i=0;i<a.length;i++){
            for(int j=0;j<b[0].length;j++){
                for(int k=0;k<b.length;k++){
                    c[i][j]=c[i][j]+a[i][k]*b[k][j];
                }
            }
        }

        //Sonuç ekrana yazdırılıyor.
        for(int i=0;i<c.length;i++){
            for(int j=0;j<c[0].length;j++){
                System.out.print(c[i][j]+" ");
            }
            System.out.println();
        }

      
    }

    public static void main(String []args){
        //Örnek olarak iki 3x3 lük iki matris yaratiliyor.
        int[][] a=new int[][]{{1,2,3},{3,3,3},{5,6,2}};
        int[][] b=new int[][]{{1,5,3},{2,9,6},{7,8,5}};
        carpim(a,b);        
      
    }
}