Professional Documents
Culture Documents
OSNOVE PROGRAMSKOG JEZIKA JAVA-Zadaca1
OSNOVE PROGRAMSKOG JEZIKA JAVA-Zadaca1
Elektrotehnika
Informatika
Asistent:
Adnan Ramaki, mr.ra. i inf.
Student:
Hasan Bapi 748
Biha, Decembar 2014.
package MatricaPaket;
import java.util.*;
import java.lang.String;
public class Matrica{
public static int red1;
public static int kolona1;
public static int red2;
public static int kolona2;
public static float sum=0;
public static float sum1=0;
public static float sum2=0;
public static float br=0;
public static float sorting=0;
float sumamatrica[][]=new float [red1][kolona1];
float razlikamatrica[][]=new float [red1][kolona1];
float matricamnozenje [][]=new float [red1][kolona2];
public static float sm[][]=new float [red1][kolona1];
public static float rm[][]=new float [red1][kolona1];
public static float mm[][]=new float [red1][kolona2];
//konstruktor klase Matrica sluzi za unos broja redova i kolona za nase dvije matrice
public Matrica(){
Scanner in=new Scanner(System.in);
System.out.println("Unesite broj redova prve matrice!");
red1=in.nextInt();
System.out.println("Unesite broj kolona prve matrice!");
kolona1=in.nextInt();
catch(MatricaIzuzetak e){
System.out.println("Greska u dimenzijama.");// ispis nakon sto smo dobili izuzetak
System.exit(0); } }
//kreiranje nove metode za oduzimanje matrica
public void matricaOduzimanje()
{Scanner in=new Scanner(System.in);
try{
if(red1==red2 && kolona1==kolona2){
float mat1 [][]=new float [red1][kolona1];
System.out.println("Unesite elemente prve matrice!");
for(int i=0; i<red1; i++){
for(int j=0; j<kolona1; j++){
mat1[i][j]=in.nextInt(); }}
float mat2 [][]=new float [red2][kolona2];
System.out.println("Unesite elemente druge matrice!");
for(int i=0; i<red2; i++){
for(int j=0; j<kolona2; j++){
mat2[i][j]=in.nextInt(); }}
float razlikamatrica[][]=new float [red1][kolona1];
for(int i=0; i< red1; i++){
for(int j=0; j< kolona1; j++){
razlikamatrica[i][j]=mat1[i][j]-mat2[i][j];
sum1=sum1+razlikamatrica[i][j]; }}
rm=razlikamatrica; }
else{
throw new MatricaIzuzetak();}}
catch(MatricaIzuzetak e){
System.out.println("Greska u dimenzijama.");
System.exit(0); }}
//kreiranje metode za mnozenje dvije matrice
public void matricaMnoenje() {
Scanner in=new Scanner(System.in);
try{
if(kolona1==red2){
float mat1 [][]=new float [red1][kolona1];
System.out.println("Unesite elemente prve matrice!");
for(int i=0; i<red1; i++){
for(int j=0; j<kolona1; j++){
mat1[i][j]=in.nextInt(); }}
float mat2 [][]=new float [red2][kolona2];
System.out.println("Unesite elemente druge matrice!");
for(int i=0; i<red2; i++){
for(int j=0; j<kolona2; j++){
mat2[i][j]=in.nextInt(); }}
float suma=0;
float matricamnozenje [][]=new float [red1][kolona2];
for(int i=0; i<red1; i++){
for(int j=0; j<kolona2; j++){
suma=0;
for(int k=0; k<red2; k++) {
suma=suma+ mat1[i][k]*mat2[k][j]; }
matricamnozenje[i][j]=suma;
sum2=sum2+matricamnozenje[i][j];}}
mm=matricamnozenje;}
else{
throw new MatricaIzuzetak();}}
catch(MatricaIzuzetak e){
System.out.println("Greska u dimenzijama.");
System.exit(0); }}
//metoda za sumiranje svih elemenata rezultantne matrice
public void matricaSuma(float br) {
if(br==1) {
System.out.println("Suma elemenata je: " +sum);}
else if(br==2){
System.out.println("Suma elemenata je: " +sum1); }
if(br==3){
System.out.println("Suma elemenata je: " +sum2); }}
//kreiranje metode za sortiranje rezultantne matrice
public void sortiranjeMatrice(float sorting){
System.out.println("Kako elite da sortirate matricu?");
System.out.println("1. Od najmanjeg ka najveem ");
System.out.println("2. Od najveeg ka najmanjem ");
Scanner in=new Scanner(System.in);
int sort=in.nextInt();
float sumamatrica[][]=new float [red1][kolona1];
if(sorting==1){
sumamatrica=sm;
if(sort== 1){
float niz[]=new float[red1*kolona1];
for(int j=0; j<(red1*kolona1)-i-1; j++){ //odgovara broju provjera unutar jednog prolaza
if(niz[j]>niz[j+1]) {
float t=niz[j];
niz[j]=niz[j+1];
niz[j+1]=t; }}}
//pretvaranje niza u matricu
int l=0;
for(int i=0; i<red1; i ++){
for(int j=0; j<kolona1; j++){
sumamatrica[i][j]=niz[l];
l++; }}
for(int i=0; i< red1; i++){
for(int j=0; j< kolona1; j++){
System.out.print(sumamatrica[i][j]);
System.out.print(" ") ;}
System.out.println(); }}
else if(sort== 2){
float niz[]=new float[red1*kolona1];
if(sort== 1){
float niz[]=new float[red1*kolona1];
//pretvaranje matrice u niz
int k=0;
for(int i=0; i<red1; i ++){
for(int j=0; j<kolona1; j++){
niz[k]=sumamatrica[i][j];
k++; }}
//bubble sort
for(int i=0;i<red1*kolona1; i++){//broj iteracija odgovara broju prolaza
for(int j=0; j<(red1*kolona1)-i-1; j++){//odgovara broju provjera unutar jednog prolaza
if(niz[j]>niz[j+1]) {
float t=niz[j];
niz[j]=niz[j+1];
niz[j+1]=t; }}}
//pretvaranje niza u matricu
int l=0;
for(int i=0; i<red1; i ++){
for(int j=0; j<kolona1; j++){
sumamatrica[i][j]=niz[l];
l++; }}
for(int i=0; i< red1; i++){
for(int j=0; j< kolona1; j++){
System.out.print(sumamatrica[i][j]);
System.out.print(" ") ;}
System.out.println();}}
else if(sorting==3){
sumamatrica=mm;
if(sort== 1) {
float niz[]=new float[red1*kolona1];
//pretvaranje matrice u niz
int k=0;
for(int i=0; i<red1; i ++){
for(int j=0; j<kolona2; j++){
niz[k]=sumamatrica[i][j];
k++; }}
//bubble sort
for(int i=0;i<red1*kolona2; i++){//broj iteracija odgovara broju prolaza
for(int j=0; j<(red1*kolona2)-i-1; j++){//odgovara broju provjera unutar jednog prolaza
if(niz[j]>niz[j+1]){
float t=niz[j];
niz[j]=niz[j+1];
niz[j+1]=t; }}}
//pretvaranje niza u matricu
int l=0;
for(int i=0; i<red1; i ++){
for(int j=0; j<kolona2; j++) {
sumamatrica[i][j]=niz[l];
l++; }}
for(int i=0; i< red1; i++){
for(int j=0; j< kolona2; j++){
System.out.print(sumamatrica[i][j]);
System.out.print(" ") ;}
System.out.println();}}
else if(sort== 2){
float niz[]=new float[red1*kolona2];
//pretvaranje matrice u niz
int k=0;
for(int i=0; i<red1; i ++){
for(int j=0; j<kolona2; j++){
niz[k]=sumamatrica[i][j];
k++; }}
//bubble sort
for(int i=0;i<red1*kolona2; i++){//broj iteracija odgovara broju prolaza
for(int j=0; j<(red1*kolona2)-i-1; j++){//odgovara broju provjera unutar jednog prolaza
if(niz[j]<niz[j+1]){
float t=niz[j];
niz[j]=niz[j+1];
niz[j+1]=t; }}}
//pretvaranje niza u matricu
int l=0;
for(int i=0; i<red1; i ++){
for(int j=0; j<kolona2; j++){
sumamatrica[i][j]=niz[l];
l++; }}
for(int i=0; i< red1; i++){
for(int j=0; j< kolona2; j++){
System.out.print(sumamatrica[i][j]);
System.out.print(" ") ;}
System.out.println(); }}}}}
else{
throw new MatricaIzuzetak(); }}// izbacivanje izuzetka
catch(MatricaIzuzetak e){
System.out.println("Greska u dimenzijama.");// ispis nakon sto smo dobili izuzetak
System.exit(0);}
return x;}
// Metoda za provoenje Gausove metode eliminacije sa djelimicnim okretanjem
// Ovdje index[] sprema poredak pivota.
public static void gaussian(float a[][], int index[]) {
int n = index.length;
float c[] = new float[n];
// Inicijalizacija index-a
for (int i=0; i<n; ++i)
index[i] = i;
// Pronalazak faktora za reskaliranje, po jedan iz svakog reda
for (int i=0; i<n; ++i) {
float c1 = 0;
for (int j=0; j<n; ++j) {
float c0 = Math.abs(a[i][j]);
if (c0 > c1) c1 = c0; }
c[i] = c1; }
// Potraznja pivota iz svake kolone
int k = 0;
for (int j=0; j<n-1; ++j) {
float pi1 = 0;
for (int i=j; i<n; ++i) {
float pi0 = Math.abs(a[index[i]][j]);
pi0 /= c[index[i]];
if (pi0 > pi1) {
pi1 = pi0;
k = i; }}
// Zamjena redova po redu pivota
int itmp = index[j];
index[j] = index[k];
index[k] = itmp;
for (int i=j+1; i<n; ++i) {
float pj = a[index[i]][j]/a[index[j]][j];
// Spremanje vrijednosti pivota ispod dijagonale
a[index[i]][j] = pj;
// Izmjena i drugih elemenata u skladu stim
for (int l=j+1; l<n; ++l)
a[index[i]][l] -= pj*a[index[j]][l]; }}}}
_______________________________________________________________
package PaketTest;
import java.util.*;
import MatricaPaket.*;
public class TestMatrica {
public static void main(String []argv){
Matrica unos=new Matrica();
System.out.println("Odaberite opciju: ");
System.out.println("1. Sabiranje ");
System.out.println("2. Oduzimanje ");
System.out.println("3. Mnoenje ");
Scanner in=new Scanner(System.in);
int odabir=in.nextInt();
if( odabir ==1){
System.out.println("Odabrali ste sabiranje dvije matrice. ");
unos.matricaSabiranje();
unos.br=1;
unos.sorting=1;
System.out.println("Da li elite neto od ponuenog: ");
System.out.println("1. Ispis sume svih elemenata rezultantne matrice ");
System.out.println("2. Ispis rezultantne sortirane matrice po nekom od kriterija ");
System.out.println("3. Ispis inverzne matrice rezultantne matrice");
System.out.println("Ukoliko elite neto da odradite odgovorite sa 'da' ili 'yes', a ukoliko
neelite odgovorite sa 'ne' ili 'no'");
String odgovor;
Scanner odgo=new Scanner(System.in);
odgovor=odgo.nextLine();
if("da".equals(odgovor) || "yes".equals(odgovor)) {
int broj;
System.out.println("Odaberite broj ispred gore navedenih operacija:");
broj=in.nextInt();
if(broj==1){
unos.matricaSuma(unos.br); }
if(broj==2){
unos.sortiranjeMatrice(unos.sorting);}
if(broj==3){
float a[][]=new float[unos.red1][unos.kolona1];
a=unos.sm;
float d[][] =unos.invMatrica(a);
int n=a.length;
System.out.println("Inverzna matrica je : ");
for (int i=0; i<n; ++i) {
for (int j=0; j<n; ++j){
System.out.print(d[i][j]+" "); }
System.out.println(); }}}
else if("ne".equals(odgovor) || "no".equals(odgovor)){
System.exit(0);
}}
unos.matricaSuma(unos.br);}
if(broj==2) {
unos.sortiranjeMatrice(unos.sorting); }
if(broj==3){
float a[][]=new float[unos.red1][unos.kolona1];
a=unos.rm;
float d[][] =unos.invMatrica(a);
int n=a.length;
System.out.println("Inverzna matrica je : ");
for (int i=0; i<n; ++i) {
for (int j=0; j<n; ++j){
System.out.print(d[i][j]+" "); }
System.out.println(); }}}
else if("ne".equals(odgovor) || "no".equals(odgovor)){
System.exit(0);
}}
}}}}
___________________________________________________________
package MatricaPaket;
public class MatricaIzuzetak extends Exception {
public void poruka(){
System.out.println("Izuzetak");}}