You are on page 1of 12

SEMINAR 4

Zgjidhje
Ushtrimi 1.

Nderto nje klase Drejkendeshi qe permban:


- Dy fusha te dhenash double me emra gjeresia dhe gjatesia me vlera default 1.
- Nje konstruktor pa argumenta qe krijon nje drejkendesh default.
- Nje konstruktor qe krijon nje drejkendesh me gjeresi dhe gjatesi te dhene.
- Nje metode siperfaqja() qe kthen siperfaqen e drejkendeshit.
- Nje metode perimetri() qe kthen perimetrin.

Zgjidhje

Klasa Drejtkendeshi:
public class Drejtkendeshi {
double gjeresia;
double gjatesia;

// konstruktori pa parametra inicializon gjeresine dhe gjatesia me 1


public Drejtkendeshi() {
// TODO Auto-generated constructor stub

gjeresia = 1;
gjatesia = 1;
}

// konstruktori me parametra gjeresine dhe gjatesine


public Drejtkendeshi(double gjeresiERe, double gjatesiERe) {
gjeresia = gjeresiERe;
gjatesia = gjatesiERe;
}

// metoda qe llogarit siperfaqen e drejkendeshit


double siperfaqja() {
return gjeresia * gjatesia;
}

// metoda qe llogarit perimetrin e drejkendeshit


double perimetri() {
return 2 * (gjeresia + gjatesia);
}

Testimi i klases Drejtkendeshi:

public class Ushtrimi5_1 {

public static void main(String[] args) {


// TODO Auto-generated method stub
// krijimi i nje objekti Drejtkendeshi duke thirrur konstruktorin pa
// argumenta
Drejtkendeshi drejkendeshi1 = new Drejtkendeshi();
// krijimi i nje objekti Drejtkendeshi me gjeresi 3.5 dhe gjatesi 35.9
Drejtkendeshi drejkendeshi2 = new Drejtkendeshi(3.5, 35.9);

System.out.println("\n Drejtkendeshi 1");


System.out.println(" ------------ ");
System.out.println("Gjeresia: " + drejkendeshi1.gjeresia);
System.out.println("Gjatesia: " + drejkendeshi1.gjatesia);
System.out.println("Siperfaqja: " + drejkendeshi1.siperfaqja());
System.out.println("Perimetri: " + drejkendeshi1.perimetri());

System.out.println("\n Drejtkendeshi 2");


System.out.println(" ------------ ");
System.out.println("Gjeresia: " + drejkendeshi2.gjeresia);
System.out.println("Gjatesia: " + drejkendeshi2.gjatesia);
System.out.println("Siperfaqja: " + drejkendeshi2.siperfaqja());
System.out.println("Perimetri: " + drejkendeshi2.perimetri());
}

Ushtrimi 2.

Nderto nje klase te quajtur Vendndodhja per te ruajtur vleren maksimale dhe vendodhjen e saj ne nje
vektor 2-dimensional. Klasa ka fushat e te dhenave rreshti, kolona dhe vleraMax qe ruan vleren
maksimale dhe vendndodhjen e saj me rreshti dhe kolona si int dhe vleraMax si double.

Shkruaj metoden e meposhtme qe kthen vendndodhjen e elementit me te madh ne nje matrice 2-


dimensionale.
public static Vendndodhja gjejElementin(double[][] a)

Vlera e kthyer eshte nje instance Vendndodhja. Shkruaj nje program test qe shfaq vendndodhjen e
elementit me te madh ne nje matrice te dhene.

Zgjidhje

Klasa Vendndodhja:
public class Vendndodhja {
int rreshti;
int kolona;
double vleraMax;
//konstruktori i klases Vendndodhja me parameter matricen
Vendndodhja(double[][] a) {
vleraMax = a[0][0];
rreshti = 0;
kolona = 0;
//me dy cikle for gjendet vendndodhja e vleres max
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
if (a[i][j] > vleraMax) {
vleraMax = a[i][j];
rreshti = i;
kolona = j;
}
}
}
}

Testimi i klases Vendndodhja:


import java.util.Scanner;

public class Ushtrimi5_2 {

public static void main(String[] args) {


// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);

System.out.print("Fut numrin e rreshtave dhe kolonave te matrices: ");


int rreshta = input.nextInt();
int kolona = input.nextInt();

double[][] array = new double[rreshta][kolona];


System.out.println("Fut elementet e matrices: ");
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
array[i][j] = input.nextDouble();
}
}

Vendndodhja max = gjejElementin(array);

System.out.println("Vendndodhja e elementit me te madh eshte: " +


max.vleraMax + " at (" + max.rreshti + ", "
+ max.kolona + ")");
}

public static Vendndodhja gjejElementin(double[][] a) {


return new Vendndodhja(a);
}

Ushtrimi 3.

-Ne nje vektor 2 dimensional ruhen rezultatet e detyrave per N studente ne M lende. Per te dhenat e studenteve
do te perdoret nje klase ekzistuese me emrin Student dhe per lendet nje klase me emrin Lenda. Nese nje student
nuk ka marre pjese ne dorezimin e nje detyre shenohet me -1, ne te kundert vendoset nota.

a) Ndertoni programin qe lexon te dhenat dhe afishon studentin qe ka dorezuar me shume detyra.

b) Ndertoni nje funksion qe gjen per nje lende qe merret nga tastiera numrin e detyrave te dorezuara
Zgjidhje

Klasa Student:

public class Student {


private String emri;

public Student(String e) {
// TODO Auto-generated constructor stub
emri = e;
}

public String getEmri() {


return emri;
}

public void setEmri(String e) {


emri = e;
}

Klasa Lenda:
public class Lenda {
private String emri_lendes;

public Lenda(String l) {
// TODO Auto-generated constructor stub
emri_lendes = l;
}

public String getLenda() {


return emri_lendes;
}

public void setLenda(String l) {


emri_lendes = l;
}

Zgjidhja e kerkesave:
import java.util.Scanner;

public class Ushtrimi5_3 {

public static void main(String[] args) {


// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);

System.out.println("Jep numrin e studenteve: ");


int n = in.nextInt();
System.out.println("Jep numrin e lendeve: ");
int m = in.nextInt();
// krijimi i dy vektoreve per te ruajtur studentet dhe lendet si Objekte
Student[] studentet = new Student[n];
Lenda[] lendet = new Lenda[m];

int[][] notat = new int[n][m];

// marrja e te dhenave per studentet


for (int i = 0; i < n; i++) {
System.out.println("Emri i studentit " + (i + 1) + " :");
studentet[i] = new Student(in.next());
}
// marrja e te dhenave per lendet
for (int i = 0; i < m; i++) {
System.out.println("Emri i lendes " + (i + 1) + " :");
lendet[i] = new Lenda(in.next());
}
// marrja e notave
for (int i = 0; i < n; i++) {
System.out.println("Studenti " + studentet[i].getEmri() + " :");
for (int j = 0; j < m; j++) {
System.out.print(lendet[j].getLenda() + " :");
notat[i][j] = in.nextInt();

int[] totals = afishoStudent(notat);


int index = getMax(totals);
System.out.println("Studenti qe ka dorezuar me shume detyra eshte: "
+ studentet[index].getEmri());

int indexLende = gjejLende(lendet);


int nrDetyrash = getNrDetyrave(indexLende, notat);
System.out.println("Numri i detyrave te dorezuara per lenden "
+ lendet[indexLende].getLenda() + "eshte: " + nrDetyrash);

// krijon nje vektor qe mban numrin e detyrave te dorezuara per cdo student
public static int[] afishoStudent(int[][] n) {
int[] totals = new int[n.length];
for (int i = 0; i < n.length; i++) {
for (int j = 0; j < n[i].length; j++) {
// nese nota nuk eshte -1 inkrementohet me nje numri i
detyrave
// te dorezuara per nje student
if (n[i][j] != -1)
totals[i] += 1;
}
}

return totals;
}

// gjen maksimumin e detyrave te dorezuara nga studentet dhe kthen indeksin


// e ketij studenti
public static int getMax(int[] totals) {
int max = totals[0];
int maxIndex = 0;
for (int i = 1; i < totals.length; i++) {
if (totals[i] > max) {
max = totals[i];
maxIndex = i;
}
}
return maxIndex;
}

// gjen numrin e detyrave te dorezuara per lenden me indeks i


public static int getNrDetyrave(int i, int[][] notat) {
System.out.println(i);
int nrDetyrash = 0;
for (int j = 0; j < notat.length; j++) {
if (notat[j][i] > 0)
nrDetyrash++;
}
return nrDetyrash;
}

// kthen indeksin e lendes qe merret si input


public static int gjejLende(Lenda[] lendet) {
System.out.print("Jep nje lende: ");
Scanner input = new Scanner(System.in);
String lenda = input.nextLine();

int indexLende = -1;


for (int i = 0; i < lendet.length; i++) {
if (lendet[i].getLenda().equals(lenda))
indexLende = i;
}
return indexLende;
}

Ushtrimi 4.

Te ndertohet nje klase Kompjuter qe permban :

Fusha: firma_prodhimit, viti_prodhimit, cmimi, shpejtesia_procesorit.

Konstruktori: public Kompjuter (String f, int v, int c, double s)

Metoda get/set per aksesimin e kater fushave.

public Boolean krahaso (Kompjuter k) kthen true nese dy kompjutera jane te njejte duke u bazuar vetem tek firma
dhe shpejtesia e procesorit.
public Kompjuter krahaso1 (Kompjuter k) kthen kompjuterin me te shpejte duke u bazuar tek
shpejtesia e procesorit.

public String toString() kthen nje paraqitje te Kompjuter si String : [“HP”, 2015, 500, 2.4GH]

Zgjidhje

Klasa Kompjuter:

public class Kompjuter {


private String firma_prodhimit;
private int viti_prodhimit;
private int cmimi;
private double shpejtesia_procesorit;

// konstruktori me 4 argumenta
public Kompjuter(String f, int v, int c, double s) {
// TODO Auto-generated constructor stub
firma_prodhimit = f;
viti_prodhimit = v;
cmimi = c;
shpejtesia_procesorit = s;
}

// metodat get dhe set per cdo fushe


public String getFirma() {
return firma_prodhimit;
}

public void setFirma(String f) {


firma_prodhimit = f;
}

public int getViti() {


return viti_prodhimit;
}

public void setViti(int v) {


viti_prodhimit = v;
}

public int getCmimi() {


return cmimi;
}

public void setCmimi(int c) {


cmimi = c;
}

public double getShpejtesia() {


return shpejtesia_procesorit;
}

public void setShpejtesia(double s) {


shpejtesia_procesorit = s;
}

public boolean krahaso(Kompjuter k) {


// krahason firmen e prodhimit dhe shpejtesine e procesorit te objektit
// qe therret metoden me objektin qe kalon si parameter
if (this.firma_prodhimit.equals(k.firma_prodhimit)
&& this.shpejtesia_procesorit == k.shpejtesia_procesorit)
return true;
else
return false;

public Kompjuter krahaso1(Kompjuter k) {


// krahason shpejtesine e procesorit te objektit qe therret metoden me
// objektin qe kalon si parameter
if (this.shpejtesia_procesorit > k.shpejtesia_procesorit)
return this;
else
return k;
}

// jep paraqitjen e te dhenave si procesorit si String


public String toString() {
String str = "[\"" + firma_prodhimit + "\", " + viti_prodhimit + ","
+ cmimi + "," + shpejtesia_procesorit + "GH]";
return str;
}
}

Testimi i klases Kompjuter:


public class Ushtrimi5_4 {

public Ushtrimi5_4() {
// TODO Auto-generated constructor stub
}

public static void main(String[] args) {


// TODO Auto-generated method stub

// krijohen dy objekte Kompjuter


Kompjuter k1 = new Kompjuter("HP", 2016, 500, 4);
Kompjuter k2 = new Kompjuter("Dell", 2018, 1000, 8);
// shfaq te dhenat e kompjuterit te pare
System.out.println("Kompjuteri i pare:");
System.out.println("Firma e prodhimit:" + k1.getFirma());
System.out.println("Viti i prodhimit:" + k1.getViti());
System.out.println("Cmimi:" + k1.getCmimi());
System.out.println("Shpejtesia e procesorit:" + k1.getShpejtesia());

System.out.println();

// shfaq te dhenat e kompjuterit te dyte para se te ndryshohen


System.out.println("Kompjuteri i dyte para ndyshimit:");
System.out.println(k2.toString());
// ndryshohet te dhenat e kompjuterit te dyte
k2.setFirma("HP");
k2.setViti(2019);
k2.setCmimi(1500);
k2.setShpejtesia(4);
System.out.println();
// shfaq te dhenat e kompjuterit te dyte pas ndryshimit
System.out.println("Kompjuteri i dyte pas ndyshimit:");
System.out.println(k2.toString());
// krijon nje objekt Kompjuter te trete
Kompjuter k3 = new Kompjuter("Dell", 2018, 1000, 8);
System.out.println();
// krahason kompjuterin e pare me te dytin bazuar ne firmen e prodhimit
// dhe shpejtesine e procesorit dhe shfaq nese jane ose jo te njejte
System.out.println("Kompjuterat "
+ (k1.krahaso(k2) ? " jane" : "nuk jane")
+ " te njejte bazuar ne firmen e prodhimit dhe
shpejtesine e procesorit");
System.out.println();
// krahason kompjuterin e pare me te tretin dhe kthen kompjuterin
// me te shpejte
System.out.println("Kompjuteri me i shpejte eshte "
+ k1.krahaso1(k3).toString());

Ushtrimi 5.

Te ndertohet nje klase Vija qe perfaqeson nje segment midis dy pikave. (Supozojme se klasa Pika ekziston dhe
permban 2 fusha dhe 4 metoda:

Fusha : double x dhe double y.

Metoda : setX, setY, getX, getY ).

Metodat e klases Vija jane:

public Vija (Pika p1, Pika p2) Nderton nje vije qe permban keto dy Pika.

public Vija (int x1, int y1, int x2, int y2)

public Pika getP1() Kthen fillimin e vijes.

public Pika getP2 () Kthen fundin e vijes.

public String toString () Kthen nje paraqitje ne forme Stringe te Vija si: “[(11,12),(6,9)]”

public double pjerresia () Kthen pjerresine evijes. Pjerresia midis dy pikave (x1,y1) dhe (x2,y2)
llogaritet me formulen (y2-y1)/(x2-x1).

Zgjidhje
Klasa Pika:

public class Pika {


private double x;
private double y;

public void setX(double x) {


this.x = x;
}

public void setY(double y) {


this.y = y;
}

public double getX() {


return x;

public double getY() {


return y;

}
}

Klasa Vija:

public class Vija {


Pika p1;
Pika p2;

// konstruktori me parametra dy objekte pika qe paraqesin piken e fillimit


// dhe mbarimit
public Vija(Pika p1, Pika p2) {
// TODO Auto-generated constructor stub
this.p1 = p1;
this.p2 = p2;
}

// konstruktori me parametra koordinatat e pikes se fillimit dhe mbarimit


public Vija(int x1, int y1, int x2, int y2) {
// TODO Auto-generated constructor stub
p1 = new Pika();
p2 = new Pika();
p1.setX(x1);
p1.setY(y1);
p2.setX(x2);
p2.setY(y2);
}

// metoda qe kthen piken e fillimit


public Pika getP1() {
return p1;
}
// metoda qe kthen piken e mbarimit
public Pika getP2() {
return p2;
}

public String toString() {


return "[(" + p1.getX() + "," + p1.getY() + "),(" + p2.getX() + ","
+ p2.getY() + ")]";
}

// metoda qe kthen pjerresine e vijes


public double pjerresia() {
return (p2.getY() - p1.getY()) / (p2.getX() - p1.getX());
}
}

Testimi i klases Vija:

public class Ushtrimi5_5 {

public Ushtrimi5_5() {
// TODO Auto-generated constructor stub
}

public static void main(String[] args) {


// TODO Auto-generated method stub
// krijon nje objekt Vija duke thirrur konstruktorin me 4 parametra
Vija v1 = new Vija(2, 3, 5, 5);
// krijon 2 objekte pika qe perfaqesojne piken e fillimit dhe mbarimit
// te nje vije
Pika p1 = new Pika();
p1.setX(4);
p1.setY(5);
Pika p2 = new Pika();
p2.setX(8);
p2.setY(8);
// nderton nje objekt Vija duke thirrut konstruktorin me parametra dy
// pika
Vija v2 = new Vija(p1, p2);
// shfaq vijen e pare dhe te dyte si String
System.out.println("Vija e pare: " + v1.toString());

System.out.println("Vija e dyte: " + v2.toString());


// perdorimi i metodave get
System.out.println();
System.out.println("Fillimi i vijes se pare : (" + v1.getP1().getX()
+ "," + v1.getP1().getY() + ")");
System.out.println("Fundi i vijes se pare : (" + v1.getP2().getX()
+ "," + v1.getP2().getY() + ")");
System.out.println();
// shfaq pjerresine e vijes se dyte
System.out
.println("Pjerresia e vijes se dyte eshte: " +
v2.pjerresia());
}
}

You might also like