/*
 * CARLOS PIARPUEZAN
*/
//Applet que multiplica dos matrices y calcula el tiempo por operacion

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JApplet;
import java.util.*;

public class matrixMultp extends JApplet implements ActionListener
{
    
    private JLabel tam;
    private JButton calcular;
    private JTextField size;
    private double operTime;
    private double cont = 0;
    
    public void init()
    {
        
        resize(300,50);
        this.setLayout(new FlowLayout());
        
        tam = new JLabel("Tamaņo= ");
        calcular = new JButton("Multiplicar");
        size = new JTextField(11);
        
        calcular.addActionListener(this);
        
        add(tam);
        add(size);
        add(calcular);
        
    }
    
    public double multiply(int size){
		
        long start, stop;
	double elapsed;
        Random s = new Random();       
		
	double A[][] = new double[size][size];
	double B[][] = new double[size][size];
	double AN[][] = new double[size][size];
		
	start = System.currentTimeMillis();
        System.out.println("Inicio:"+start);
        for(int i=0; i<size; i++)
            for(int j=0; j<size; j++)
                 A[i][j] = s.nextInt();
                 
	for(int i=0; i<size; i++)
            for(int j=0; j<size; j++)
		 B[i][j]= s.nextInt();
        
        
        for(int i = 0; i < size; i++)
            for(int j = 0; j < size; j++)
                for(int k = 0; k < size; k++){
                    AN[i][k] += A[i][j] * B[j][k];
                    cont += 2;
                }
        
        stop = System.currentTimeMillis();
        elapsed = stop - start;
               
        return elapsed;
        
	}
    public void actionPerformed(ActionEvent e) 
    {
        
        cont = 0;
        double time = multiply(Integer.parseInt(size.getText()));
        JOptionPane.showMessageDialog(matrixMultp.this,"Numero de operaciones: "+cont+
                "\nTiempo para la multiplicacion: " + time+
                "\nTiempo por operacion: " + time/(cont), "OPERACIONES",
                JOptionPane.INFORMATION_MESSAGE);
        
        
    }
    
}
