+ All Categories

TEMA IP

Date post: 24-Oct-2015
Category:
Upload: nogy-arpad
View: 445 times
Download: 2 times
Share this document with a friend
Description:
3333
75
TEMA 2 1.Scrieti o aplicatie Java care defineste o variabila de tip String care este initializata cu un text predefinit. Aplicatia afiseaza o statistica reprezentand numarul de propozitii din text, numarul totalde cuvinte, caracterele care apar in intreg textul si procentul pe care il reprezinta din total.import java.util.StringTokenizer; public class prob1 { public static void main(String args[]){ String sir; sir=("Ana are mere. Maria are pere?"); int p=0; int i,j; int c=1; int l; for(i=0;i<sir.length();i++){ if(sir.charAt(i)=='.'|| sir.charAt(i)=='?'|| sir.charAt(i)=='!') p++; if(sir.charAt(i)==' ') c++; } String alfa; alfa=("AanreMmip"); for(i=0;i<alfa.length();i++){ l=0; for(j=0;j<sir.length();j++) if(alfa.charAt(i)==sir.charAt(j) ) l++; System.out.println("Caracterul "+alfa.charAt(i)+" apare de "+l+" si reprezinta "+ ((((float)l)/sir.length())*100)) ; } System.out.println("Numarul de propozitii:"+p); System.out.println("Numarul de cuvinte:"+c); } } 2.Se defineste un sir de valori intregi. Sa sa completeze un alt sir format din elementele primului sir,dupa cum urmeaza: se ia elementul de pe prima pozitie, apoi cel aflat la un numar distanta, la doua numere distanta, etc. Daca se ajunge in capatul sirului, se continua numaratoarea de la inceput. public class main { public static boolean exista0(int [] pozitii){ int i; for (i=0;i<pozitii.length;i++) if (pozitii[i]==0) return true; return false; } public static void main (String[] args){ int[] vector= {1, 2, 3, 4}; int [] pozitii={0,0,0,0}; int [] sir_final;int i,v,n=0,c; sir_final=new int[2000]; c=0; int pas=0,ii=0; while (exista0(pozitii)==true) { //la pasul 0 pornesc de la pozitia 0
Transcript
Page 1: TEMA IP

TEMA 2

1.Scrieti o aplicatie Java care defineste o variabila de tip String care este initializata cu un textpredefinit. Aplicatia afiseaza o statistica reprezentand numarul de propozitii din text, numarul totalde cuvinte, caracterele care apar in intreg textul si procentul pe care il reprezinta din total.import java.util.StringTokenizer;public class prob1 { public static void main(String args[]){ String sir; sir=("Ana are mere. Maria are pere?"); int p=0; int i,j; int c=1; int l; for(i=0;i<sir.length();i++){ if(sir.charAt(i)=='.'||sir.charAt(i)=='?'||sir.charAt(i)=='!') p++; if(sir.charAt(i)==' ') c++; } String alfa; alfa=("AanreMmip"); for(i=0;i<alfa.length();i++){ l=0; for(j=0;j<sir.length();j++) if(alfa.charAt(i)==sir.charAt(j)) l++; System.out.println("Caracterul "+alfa.charAt(i)+" apare de "+l+" si reprezinta "+((((float)l)/sir.length())*100)); } System.out.println("Numarul de propozitii:"+p); System.out.println("Numarul de cuvinte:"+c); }}2.Se defineste un sir de valori intregi. Sa sa completeze un alt sir format din elementele primului sir,dupa cum urmeaza: se ia elementul de pe prima pozitie, apoi cel aflat la un numar distanta, la doua numere distanta, etc. Daca se ajunge in capatul sirului, se

continua numaratoarea de la inceput.public class main { public static boolean exista0(int [] pozitii){int i; for (i=0;i<pozitii.length;i++) if (pozitii[i]==0) return true; return false; }public static void main(String[] args){ int[] vector= {1, 2, 3, 4}; int [] pozitii={0,0,0,0}; int [] sir_final;int i,v,n=0,c; sir_final=new int[2000]; c=0; int pas=0,ii=0; while (exista0(pozitii)==true){//la pasul 0 pornesc de la pozitia 0 if(pas == 0) ii=0;//parcurg sirul din c in c pozitii for (i=ii;i<vector.length;i=i+c+1){ pozitii[i]=1;//c creste la fiecare citire a unui numar c++; sir_final[n]=vector[i]; n++; } v=i; if (v>vector.length) {//daca valoarea lui c este > decat lungimea vectorului, pozitia de pe care citesc//trebuie reinitializata corespunzator v=v % vector.length; ii = v; } pas++; } System.out.print("Sirul final este: "); for(i=0;i<sir_final.length;i++) System.out.print( sir_final[i]+" "); }}3.Scrieti o aplicatie Java care defineste o valoare intreaga si apoi calculeaza si afiseaza reprezentarea ei binara.public class prob3 {

Page 2: TEMA IP

public static void main(String args[]){ int nr=200; int r=0; int rest; int i=1; while(nr>0){ rest=nr%2; nr=nr/2; r=r+rest*i; i=i*10; } System.out.println("Numarul convertit in binar este: "+r); }}4.Doua fete se hotarasc sa-?i scrie bile?ele folosind un cod secret. Codul este urmatorul: înlocuiesc fiecare vocala cu grupul „'vocala' p 'vocala'”. Dupa ce rescriu astfel bile?elul, îl trimit. Scrie?i un program care sa realizeze aceasta conversie.Exemplu: Am vazut 2 pisicute dragute. -> Apam vapazuput 2 pipisipicuputepe drapaguputepe.public class Problema4Lab2Function { public static void main(String[] args) { String text = new String("Am vazut 2 pisicute dragute."); System.out.println("Sirul original este: \""+text+"\""); System.out.print("Sirul prelucrat este: "); new Problema4Lab2Function(text); } private char[] orig; private String modified=""; public Problema4Lab2Function(String getorig) { this.orig=getorig.toCharArray(); this.prelucrare(); this.afisare(); } private boolean ifvowel(char v){ boolean ok=false; char[] vocale= {'a','A','e','E','i','I','o','O','u','U'}; for(int i=0;i<vocale.length;i++) { if(v == vocale[i]) { ok=true; } } return ok;

} private void prelucrare() { int i; for(i=0;i<this.orig.length;i++) { if(this.ifvowel(this.orig[i])) { this.modified=this.modified+this.orig[i]+'p'+this.orig[i]; } else { this.modified=this.modified+this.orig[i]; } } } private void afisare() { System.out.println(this.modified); } }5.Un magazin de suveniruri ofera 14 gravuri diferite cu Turnul Eiffel. O gravura costa 25 de Eurocen?iiar suvenirurile sunt ob?inute aleator. De ce suma este nevoie pentru a ob?ine cel pu?in câte o gravura diferita de fiecare tip?Indiciu: Folosi?i un generator de numere aleatoare. Suma de bani introdusa ar trebui sa varieze la fiecare execu?ie a programului.import java.util.Random;public class Main {public static boolean exista0(int [] pozitii){int i; for (i=0;i<pozitii.length;i++) if (pozitii[i]==0) return true; return false;}public static void main(String []args){ String [] sir={"g1","g2","g3","g4","g5","g6","g7","g8","g9","g10","g11","g12","g13","g14"};//in vectorul pozitii retin elementele care au fost generate deja: 1-generat, 0-negenerat int []pozitii = {0,0,0,0,0,0,0,0,0,0,0,0,0,0}; int suma=0,p=0;

Page 3: TEMA IP

Random generator = new Random();//cat timp mai am gravuri necitite, generez cate o pozitie a unei gravuri while(exista0(pozitii)==true) {//imi generez un numar aleator intre 0 si 14 exclusiv (pozitie gravurii) p=generator.nextInt(14); pozitii[p]=1; suma = suma + 25; } System.out.println("Suma este: "+suma+" Eurocenti");}}6.Ca sa re?ina mai u?or numerele de telefon ale prietenilor, Alex s-a gândit sa asocieze fiecarei cifre un set de litere, ca mai jos:Se da un numar de telefon de maxim 12 cifre, un numar n reprezentând numarul de cuvinte ce trebuie verificate ?i apoi cele n cuvinte. Specifica?i daca exista o combina?ie de cuvinte care sa se potriveasca perfect pentru numarul de telefon. Daca nu exista solu?ie se va afi?a: -N-Exemplu:7325189087 5 it your reality real our Solution: reality our 4294967296 5 it your reality realour Solution: -N-public class Problema6Lab2{ public static void main(String args[]) { StringBuffer sb = new StringBuffer("reality our");// o noua instanta de tip StringBuffer() String newString = sb.toString(); //convertire StringBuffer in String System.out.println("Cuvantul ce trebuie verificat :\"" + newString + "\""); String Final= newString //folosim functia .replaceAll() pentru inlocuirea literelor cu cifra corespunzatoare .replaceAll("i", "1").replaceAll("j", "1") .replaceAll("a", "2").replaceAll("b", "2").replaceAll("c", "2") .replaceAll("d", "3").replaceAll("e", "3").replaceAll("f", "3") .replaceAll("g", "4").replaceAll("h", "4") .replaceAll("k", "5").replaceAll("l", "5") .replaceAll("m", "6").replaceAll("n", "6")

.replaceAll("p", "7").replaceAll("r", "7").replaceAll("s", "7") .replaceAll("t", "8").replaceAll("u", "8").replaceAll("v", "8") .replaceAll("w", "9").replaceAll("x", "9").replaceAll("y", "9") .replaceAll("o", "0").replaceAll("q", "0").replaceAll("z", "0"); //afisare System.out.println("Numar asociat numarului este: \"" + Final + "\""); }}Tema31.Scrieti o aplicatie Java care defineste intr-o clasa doua variabile intregi. Definiti metodele care aduna variabilele, extrag radical din diferenta lor, le convertesc in String, le concateneaza si inverseaza sirul astfel obtinut. Toate metodele returneaza valori care vor fi afisate in functia main, prin intermediul unei instante a clasei.public class Test { public static void main(String[] args) { System.out.println("Suma este: "+Metode.aduna()); System.out.println("Radicalul din diferenta este: "+Metode.radical()); System.out.println("Sirul convertit in String este: "+Metode.convet()+" "+Metode.convert2()); System.out.println("Sirul concatenat si inversat este: "+Metode.concatenare()); }}public class Metode { static int x=10,y=7; public static int aduna(){ return x+y; } public static float radical(){ return (float) Math.sqrt(x-y); } public static String convet(){ return Integer.toString(x); //converteste un intreg in string }

Page 4: TEMA IP

public static String convert2(){ return Integer.toString(y); } public static StringBuffer concatenare(){ String sir = Integer.toString(x).concat(Integer.toString(y)); //concateneaza return new StringBuffer(sir).reverse(); //inversarea sirului }}2.Scrieti o aplicatie Java care defineste intr-o clasa o matrice de valori float. Aplicatia va afisa atat numarul de elemente nule care sunt inconjurate de elemente nenule cat si pozitia lor in matricepublic class Main { public static void main(String []args){ Matrice mat = new Matrice();//inintializam un nou obiect mat de tipul matrice int c; c = mat.NrElemNule();//prin mat.NrElemNule apelam functia iar c ii un contor System.out.println("Numarul de elemente nule este: "+c); mat.afiseazaPozitii(); }}import java.util.ArrayList;import java.util.List;public class Matrice { private float matrice[][] = new float[][] {{1.78f, 2.01f, 3.90f, 4.54f }, {5.24f, 6.00f, 7.24f, 8.52f}, {1.10f, 0.00f, 4.87f, 5.45f}, {7.19f, 4.76f, 9.53f, 0.00f}}; private int n = 4; private int m = 4; private List<Pozitie> pozitii = new ArrayList<Pozitie>();//formam o lista cu pozitiile gasite public Matrice() { } public int NrElemNule() { int c, i, j; c = 0;//contorul il initializa cu 0 dupa care daca

o sa gasim un 0 in matrice crestem cu 1 contorul for (i=0;i<n; i++) for (j=0;j<m;j++) { if(i==0 && matrice[i][j]==0 && j!=0 && j!=m-1)//verificam elementele de pe prima linie diferite de colturi if (matrice[i][j-1] != 0 && matrice[i+1][j] != 0 && matrice[i][j+1]!=0 && matrice[i+1][j+1]!=0 && matrice[i+1][j-1] !=0) { c++; Pozitie p = new Pozitie(i,j);//daca am gasit un element retinem pozitia lui pozitii.add(p);//adauga la pozitii p } if(i==0 && j==m-1 && matrice[i][j]==0)//verificam elementul de pe prima linie din colt dreapta if (matrice[i][j-1] != 0 && matrice[i+1][j-1] != 0 && matrice[i+1][j]!=0) { c++; Pozitie p = new Pozitie(i,j); pozitii.add(p); } if(i!=0 && i!=n-1 && j==m-1 && matrice[i][j]==0)//verificam elementele de pe ultima coloana diferite de colturi if (matrice[i-1][j] != 0 && matrice[i-1][j-1] != 0 && matrice[i][j-1]!=0 && matrice[i+1][j-1]!=0 && matrice[i+1][j]!=0 ) { c++; Pozitie p = new Pozitie(i,j); pozitii.add(p); } if(i==n-1 && j==m-1 && matrice[i][j]==0)//verificam elementul de pe ultima coloana din colt jos if (matrice[i-1][j] != 0 && matrice[i-1][j-1] != 0 && matrice[i][j-1]!=0) { c++; Pozitie p = new Pozitie(i,j); pozitii.add(p); } if(i==n-1 && j!=0 && j!=m-1 && matrice[i]

Page 5: TEMA IP

[j]==0)//verificam elementele de pe ultima linie diferite de colturi if (matrice[i][j+1] != 0 && matrice[i-1][j+1] != 0 && matrice[i-1][j]!=0 && matrice[i-1][j-1]!=0 && matrice[i][j-1]!=0 ) { c++; Pozitie p = new Pozitie(i,j); pozitii.add(p); } if(i==n-1 && j==0 && matrice[i][j]==0)//verificam elementul de pe prima linie din colt jos if (matrice[i][j+1] != 0 && matrice[i-1][j+1] != 0 && matrice[i-1][j]!=0) { c++; Pozitie p = new Pozitie(i,j); pozitii.add(p); } if(j==0 && i!=0 && i!=m-1 && matrice[i][j]==0)//verificam elementele de pe prima coloana diferite de colturi if (matrice[i+1][j] != 0 && matrice[i+1][j+1] != 0 && matrice[i][j+1]!=0 && matrice[i-1][j+1]!=0 && matrice[i-1][j]!=0 ) { c++; Pozitie p = new Pozitie(i,j); pozitii.add(p); } if(i==0 && j==0 && matrice[i][j]==0)//verificam primul element if (matrice[i+1][j] != 0 && matrice[i+1][j+1] != 0 && matrice[i][j+1]!=0) { c++; Pozitie p = new Pozitie(i,j); pozitii.add(p); } if(i!=0 && i!=n-1 && j!=0 && j!=m-1 && matrice[i][j]==0)//verficam elementele din mijlocul matricii if (matrice[i-1][j] != 0 && matrice[i-1][j+1] != 0 && matrice[i][j+1]!=0 && matrice[i+1][j+1]!=0 && matrice[i+1][j]!=0 && matrice[i+1][j-1]!=0 && matrice[i][j-1]!=0 && matrice[i-1][j-1]!=0) {

c++; Pozitie p = new Pozitie(i,j); pozitii.add(p); } } return c; } public void afiseazaPozitii()//parcugem pozitiile si le afisam { int i; for (i=0;i<pozitii.size();i++) pozitii.get(i).afiseaza(); }}public class Pozitie {//retine positiile elementelor nule din matrice private int i; private int j; public Pozitie(int v1,int v2) { i = v1; j = v2; } public void afiseaza() { i++; j++; System.out.println("("+i+","+j+")"); }}3.Se defineste o clasa care are drept atribut un sir de valori intregi. Sa se scrie metodele care creaza si afiseaza un alt sir format din elementele din sirul initial, luate o singura data, ordonate crescator. Instantiati clasa si folositi metodele create.public class Main { public static void main(String[] args){ Sir e;//am declarat o clasa de tip Sir e=new Sir();//o noua instanta a clasei Sir e.multime();//apelam metoda multime e.ordonare(); e.afisare(); }}public class Sir { private int sir[]=new int[] {1,2,3,1,5,4,6};

Page 6: TEMA IP

private int sir2[]=new int[10]; public Sir(){ } public boolean exista(int a){//ferificam daca mai avem in sir2 elementul din sir boolean b;int i; b=false; for (i=0;i<sir2.length;i++){ if (sir2[i]==a){ b=true; return b; } } return b; } public void multime()//eliminam sin sir elementele care se repeta { int n,i; n=0; for (i=0;i<sir.length;i++) { if (exista(sir[i])==false){ sir2[n]=sir[i]; n++; } } } public void ordonare()//ordonam sirul { int i,aux,j; for(i=0;i<=sir2.length/2;i++)//parcurgem sirul pana la jumate for(j=sir2.length-1;j>sir2.length/2;j--)//parcurgem sirul de la sfarsit pana la jumate if(sir2[i]>sir2[j]){ aux=sir2[i]; sir2[i]=sir2[j]; sir2[j]=aux; } } public void afisare(){ int i; for (i=0;i<sir2.length;i++) System.out.print(sir2[i]+" "); } }4.Un restaurant vrea sa-?i pastreze mereu clien?ii mul?umi?i. Pentru a realiza acest lucru,

fiecarecomanda este prioritizata dupa cum urmeaza:? comanda doar cu ceva de baut – prioritate 3 ? comanda cu ceva de baut ?i ceva de mâncat – prioritate 2? comanda din meniu – prioritate 1 Comenzile cu aceea?i prioritate se diferen?iaza în plus, în func?ie de numarul de persoane de la masa,iar apoi în func?ie de suma totala de pe comanda.Pentru un set de comenzi, stabili?i ordinea în care trebuiesc servi?i clien?ii.Exemplu:Comanda 1: de baut, 10 persoane, 70 RON => prioritate 3Comanda 2: de baut, 5 persoane, 80 RON => prioritate 3Comanda 3: de baut ?i de mâncat, 2 persoane, 100 RON => prioritate 2Comanda 4: comanda din meniu, 1 persoana, 60 RON => prioritate 1Comanda 5: de baut ?i de mâncat, 2 persoane, 90 RON => prioritate 2Ordinea servirii: Comanda 4, Comanda 3 (are valoare mai mare, acela?i nr pers), Comanda 5,Comanda 1 (are numar mai mare de persoane), Comanda 2.import java.util.*;public class Problema4 { public static void main(String[] args) { Random rn=new Random(); Comanda [] comenzi=new Comanda [16]; int nrcomenzi = 15; System.out.println("Comenzi nesortate:"); for(int i =1;i<=nrcomenzi;i++) { comenzi[i]=new Comanda(); comenzi[i].prioritate=rn.nextInt(3) +1; comenzi[i].nrpersoane=rn.nextInt(9) +1; comenzi[i].suma= (rn.nextInt(10)+1)*10; System.out.println("Comanda nr : "+ i+" "+ comenzi[i].afisare()); } //sortare dupa prioritate 1 2 3 for(int i=1;i<=nrcomenzi;i++) for(int j=i+1;j<=nrcomenzi;j++) { if(comenzi[i].prioritate > comenzi[j].prioritate) { Comanda copie = comenzi[i]; comenzi[i]=comenzi[j];

Page 7: TEMA IP

comenzi[j]=copie; } } //sortare dupa nr persoane for(int i=1;i<=nrcomenzi;i++) for(int j=i+1;j<=nrcomenzi;j++) { if(comenzi[i].prioritate == comenzi[j].prioritate) if(comenzi[i].nrpersoane < comenzi[j].nrpersoane) { Comanda copie = comenzi[i]; comenzi[i]=comenzi[j]; comenzi[j]=copie; } } //sortare dupa suma for(int i=1;i<=nrcomenzi;i++) for(int j=i+1;j<=nrcomenzi;j++) { if(comenzi[i].prioritate == comenzi[j].prioritate && comenzi[i].nrpersoane == comenzi[j].nrpersoane ) if(comenzi[i].suma < comenzi[j].suma) { Comanda copie = comenzi[i]; comenzi[i]=comenzi[j]; comenzi[j]=copie; } } System.out.println("Sortate dupa prioritate:"); for(int i=1;i<=nrcomenzi;i++)System.out.println("Comanda nr : "+ i+" "+ comenzi[i].afisare()); }}public class Comanda { int prioritate=0; int nrpersoane=0; int suma=0; public String afisare() { return "are prioritatea "+ this.prioritate +" numar persoane: "+this.nrpersoane + " suma comanda :" +this.suma; } }

5.Sudoku: Se da o matrice 6x6, ce poate con?ine numere de la 1 la 6. Matricea ini?iala este împar?ita în 6 submatrici de dimensiuni 2x3. Pentru a matrice de intrare, gasi?i numerele lipsa.Reguli:? Pe fiecare linie sau coloane trebuie sa apara o singura data toate numerele de la 1 la 6.? În fiecare dreptunghi trebuie sa apara toate numerele de la 1 la 6.Indiciu:Numerele sunt trecute astfel încât sa existe o singura solu?ie.public class Sudoku { public static void main(String[] args) { int[][] matrice ={ { 0, 0, 2, 0, 0, 5 }, { 1, 5, 3, 4, 2, 6 }, { 0, 1, 0, 0, 3, 0 }, { 0, 0, 6, 0, 0, 4 }, { 4, 3, 5, 2, 6, 1 }, { 0, 6, 0, 0, 4, 0 }}; System.out.println("Your puzzle:"); afiseazamatricea(matrice); System.out.println(); solve(matrice, 0, 0); } public static void afiseazamatricea(int[][] array)//afiseaza matricea initiala { System.out.println(); for(int j=0; j<array.length;j++) { for(int i=0;i<array.length;i++) { if(i==5) { System.out.println(" "+array[j][i]); } else { System.out.print(" "+array[j][i]); } } } } public static boolean verificarand(int[][] matrice, int rand, int num )//verifica radurile pentru prezenta numarului nul

Page 8: TEMA IP

{ for(int col =0; col<6; col++) if(matrice[rand][col] == num) return false ; return true ; } public static boolean verificacoloana(int[][] grid, int col, int num)//verifica coloanele pentru a vedea daca avem numar pus sau trebuie sa complectam { for(int rand = 0; rand < 6; rand++) if(grid[rand][col] == num) return false ; return true ; } public static boolean verificacutia(int[][] grid, int row, int col, int num)//verifca daca avem in matricea de 2x3 avem numar nul { row = (row / 2) * 2 ;//facem patratele de 2x3 col = (col / 3) * 3 ; for( int r = 0; r < 2; r++ ) { for( int c = 0; c < 3; c++ ) { if(grid[row+r][col+c] == num )//verifica coloanele si randurile din cutie return false ; } } return true ; } public static void next(int[][] puzzle, int row, int col) { if(col<=4) solve(puzzle,row,col+1);//apeleaza functia solve else solve(puzzle,row+1,0); } public static int solve(int[][] puzzle, int rand, int col) { if(rand>5) { System.out.println("Solutia gasita:");

afiseazamatricea(puzzle); return 0; } if(puzzle[rand][col] != 0) { next(puzzle,rand,col);//recursivitate apeleaza functia next } else { for(int num = 1;num<7;num++)//parcurge numerele care trebuie puse { if(verificarand(puzzle,rand,num) && verificacoloana(puzzle,col,num) && verificacutia(puzzle,rand,col,num)) { //daca avem numar pe pozitie atunci trecem la elementul urmator cu functia next //daca nu avem numar pe pozitie atunci apelam functia solve si punem un numar care nu a mai fots pus puzzle[rand][col] = num; next(puzzle,rand,col); } } puzzle[rand][col] = 0; } return 0; }}6.Toate comunica?iile între ora?e au cazut. Pentru a putea comunica, supravie?uitorii folosesc cod morse. Scrie?i un program care transforma o propozi?ie în cod morse.Despar?irea între litere se face cu caracterul „/”. Despar?irea între propozi?ii se face cu caracterul „//”.Exemplu:SOS => ... / --- /...public class Main {public static void main(String[] args) { String propozitie = null; System.out.println("Sirul initial este: \"" +Codmorse.prop(propozitie)+"\""); System.out.print("Sirul convertit in codul Morse este: \""); Codmorse.converteste("sos . SOS"); System.out.print("\"");

Page 9: TEMA IP

}}public class Codmorse {static String prop(String propozitie){ String sentence = new String("sos. SOS");//declararea sirului return sentence; //returneaza stringul ce contine propozitia } static String converteste(String sentence){ //declarare vector ce contine literele convertite in codul morse String[] morse = {".-/","-.../","-.-./","-../","./","..-./","--./","..../","../", ".---/","-.- /",".-../","--/","-./","---/",".--./","--.-/",".-./",".../","-/","..-/", "...-/",".--/","-..-/","-.--/","--../","//"," \ //parcurgerea propozitiei for(int x = 0; x<sentence.length(); x++){ char ch = sentence.charAt(x);//ch reprezinta pozitia fiecarui element din sentence//switch case switch(ch){//cazul in care avem in sentence 'a' sau 'A' inlocuim litera cu ce se afla pe prima pozitie in codul morse case 'a': case 'A': System.out.print(morse[0]); break; case 'b': case 'B': System.out.print(morse[1]); break; case 'c': case 'C': System.out.print(morse[2]); break case 'd': case 'D': System.out.print(morse[3]); break; case 'e': case 'E': System.out.print(morse[4]); break; case 'f': case 'F': System.out.print(morse[5]); break; case 'g': case 'G': System.out.print(morse[6]); break;

case 'h': case 'H': System.out.print(morse[7]); break; case 'i': case 'I': System.out.print(morse[8]); break; case 'j': case 'J': System.out.print(morse[9]); break; case 'k': case 'K': System.out.print(morse[10]); break case 'l': case 'L': System.out.print(morse[11]); break; case 'm': case 'M': System.out.print(morse[12]); break; case 'n': case 'N': System.out.print(morse[13]); break; case 'o': case 'O': System.out.print(morse[14]); break; case 'p': case 'P': System.out.print(morse[15]); break; case 'q': case 'Q': System.out.print(morse[16]); break; case 'r': case 'R': System.out.print(morse[17]); break; case 's': case 'S': System.out.print(morse[18]); break; case 't': case 'T': System.out.print(morse[19]); break; case 'u': case 'U': System.out.print(morse[20]); break; case 'v': case 'V': System.out.print(morse[21]); break; case 'w': case 'W': System.out.print(morse[22]); break;

Page 10: TEMA IP

case 'x': case 'X': System.out.print(morse[23]); break; case 'y': case 'Y': System.out.print(morse[24]); break; case 'z': case 'Z': System.out.print(morse[25]); break; case '.': System.out.print(morse[26]); break; case ' ': System.out.print(morse[27]); break; } } return sentence; }}Tema41. Scrieti un program Java care defineste o clasa numita Persoana cu urmatoarele atribute: nume o variabila de tip String, protected si x si y variabile intregi, protected. Clasa contine un constructor explicit fara parametric care initializeaza x si y cu 0 si nume cu null. O metoda finalize() va fi folosita pe post de destructor in acceptiunea C++ si va afisa un mesaj. Doua metode mutator setNume() si setXY() vor fi definite pentru a reinitializa variabilele din clasa. Instantiati 2 obiecte, setati atributele potrivit unor valori predefinite si afisati proprietatile obiectelor.public class Persoana { protected String nume;  protected int x;  protected int y;

public Persoana(){  x=0;  y=0;  nume=null;  } protected void finalize(){ x=0;  y=0;  nume=null;  System.out.println("Destructorul ruleaza acum...");  System.gc(); //Garbace Collection  } public void setNume(String nume){    this.nume = nume;  }  public void setXY(int x, int y){    this.x = x; //this face referire la

instanta curent  this.y = y; //this face referire la instanta curent  }}public class Main {    public static void main(String[] args){

 Persoana nume1 = new Persoana();  Persoana nume2 = new Persoana();  nume1.setNume("Cociota Florentina");  nume1.setXY(2, 3);    nume2.setNume("Cociota Florentina");  nume2.setXY(4, 4);    System.out.println("Numele este: "+nume1.nume+" si coordonatele sunt: "+nume1.x+" "+nume1.y);  System.out.println("Numele este: "+nume2.nume+" si coordonatele sunt: "+nume2.x+" "+nume2.y);    nume1.finalize();  nume2.finalize();   System.out.println("Numele este: "+nume1.nume+" si coordonatele sunt: "+nume1.x+" "+nume1.y);  System.out.println("Numele este: "+nume2.nume+" si coordonatele sunt: "+nume2.x+" "+nume2.y);    }}

2. Definiti o clasa Circle cu 3 atribute double public numite x, y, r. Un constructor explicit va initializa cele 3 atribute considerand valorile unor parametri formali care au nume identice cu ale atributelor echivalente. Un alt constructor va modifica doar variabila r si apoi va apela primul constructor definit. Pentru definirea unui constructor de copiere se va folosi un obiect Circle trimis ca parametru si un alt constructor vid va initializa cu 0.0, x si y cu 1.0, r. Instantiati cel putin 2 obiecte Circle folosind constructorii definiti in clasa. Afisati atributele obiectelor.

 class Circle  {  public double x,y,r;  Circle(double x,double y, double r)  {  this.x=x;  this.y=y;  this.r=r;  }

Page 11: TEMA IP

 Circle(double r)  {  this(1.0,2,r);  }    Circle(Circle ext)  {  this(ext.x,ext.y,ext.r);  }  Circle()  {  x=0;  y=0;  r=1;  }   }public class Main {  public static void main(String args[])  {  Circle cerc1=new Circle(3,13,23);//se creeaza obiectul  //afisam caracteristicile obiectului creeat  System.out.println("Constructor explicit");  System.out.println("x="+cerc1.x);  System.out.println("y="+cerc1.y);  System.out.println("r="+cerc1.r);    Circle cerc2=new Circle(5.8);    System.out.println("Constructor cu parametru:");  System.out.println("x="+cerc2.x);  System.out.println("y="+cerc2.y);  System.out.println("r="+cerc2.r); Circle cerc3=new Circle();  Circle cerc4;  cerc4=cerc3;//se copiaza cerc3 in cerc4  System.out.println("Constructor copiere:");  System.out.println("x="+cerc4.x);  System.out.println("y="+cerc4.y);  System.out.println("r="+cerc4.r);  }  }3. Scrieti o clasa numita 2DCoordinates care are 2 variabile protected int x si y. Un constructor explicit cu 2 parametri va initializa atributele si metodele accesor getX(), getY()vor returna valorile lui x, respectiv y. O clasa numita 3DCoordinates, derivata din prima, va defini o noua variabila protected int z. Constructorul explicit cu 3 parametri va apela constructorul clasei 2DCoordinates folosind metoda super(). O noua metoda getZ() va fi definita. In clasa care contine metoda main() instantiati

un obiect 2DCoordinates si doua obiecte 3DCoordinates, folosind niste valori predefinite. Afisati atributele obiectelor create.

class D2Coordinates{protected int x,y;D2Coordinates(int x, int y)  {  this.x=x;  this.y=y;  }  void getX()  {  System.out.println("Valoare lui x este: "+x);  }  void getY()  {  System.out.println("Valoare lui y este: "+y);  }}class D3Coordinates extends D2Coordinates{protected int z;  D3Coordinates(int x, int y, int z)  {  super(x,y);  this.z=z;  }  void getZ()  {  System.out.println("Val. lui z:"+z);  }  }//clasa ce instantiaza clasa D2Coordinatespublic class Main{public static void main(String a[])  {  D2Coordinates ob1=new D2Coordinates(7,4);  D3Coordinates ob2=new D3Coordinates(4,5,8);    System.out.println("Coordonatele obiectului 1 sunt: ");  ob1.getX();    ob1.getY();    System.out.println("Coordonatele obiectului 2 siunt: ");  ob2.getX();  ob2.getY();  ob2.getZ();  }}4. Definiti o interfata numita Skills care defineste prototipurile

Page 12: TEMA IP

functiilor int  getRunningTime(int laps), int getSwimmingTime(int pool_lengths) si String getTimeFormat(int milliseconds). Interfata mai contine constantele int timePerLap si int timePerPoolLength. Toate valorile intregi mentionate mai sus reprezinta un numar de milisecunde. Definiti 2 clase Runner si Swimmer care implementeaza interfata Skills. fiecare clasa stocheaza in niste variabile specifice numarul de ture de pista sau de lungimi de bazin precum si numele sportivului. Clasele vor oferi implementari specifice metodelor mostenite din interfata. Creati cateva instante ale claselor definite si ordonati alergatorii si inotatorii dupa timpii obtinuti. La afisare timpii vor respecta formatul: mm:ss:ms.*/

public interface Skills {  public int getRunningTime(int laps);  public int getSwimmingTime(int pool_lengths);  public String getTimeFormat(int milliseconds);    public int timePerLap = 247050;  public int timePerPoolLength = 189305;  }public class Runner implements Skills {

 int numarul_de_ture = 0;  String sportiv_nume= null; int timpul_total;    public int getRunningTime(int ture){  numarul_de_ture = numarul_de_ture + ture;  int timpul_total = number_of_laps * timePerLap;  return timpul_total;    }    public String setName(String nume_sportiv){  sportiv_nume = nume_sportiv;  return sportiv_nume;  }    public String getTimeFormat(int milliseconds) { milliseconds=getRunningTime(timpul_total);   String format = String.format("%%0%dd", 2);   milliseconds = milliseconds / 1000;   String ms = String.format(format,

(milliseconds /10) % 100); String seconds = String.format(format, milliseconds % 60);   String minutes = String.format(format, (milliseconds % 3600) / 60);   String time = minutes + ":" + seconds + ":" + ms;   return time;   }  public int getSwimmingTime(int lungime_bazin) {  return 0;  }  }public class Swimmer implements Skills{  int numarul_de_lungime_bazin = 0;  String sportiv_nume; int timpul_total;    public int getSwimmingTime(int lungime_bazin){  numarul_de_lungime_bazin = numarul_de_lungime_bazin + lungime_bazin;  int timpul_total = numarul_de_lungime_bazin* timePerPoolLength;  return timpul_total;    }    public String setName(String nume_sportiv){  sportive_name = nume_sportiv;  return sportive_name;  }    public String getTimeFormat(int milliseconds) { milliseconds=getSwimmingTime(timpul_total);   String format = String.format("%%0%dd", 2);   milliseconds = milliseconds / 1000;   String ms = String.format(format, (milliseconds /10) % 100); String seconds = String.format(format, milliseconds % 60);   String minutes = String.format(format, (milliseconds % 3600) / 60);   String time = minutes + ":" + seconds + ":" + ms;   return time;   }  public int getRunningTime(int ture) {  return 0;  } }public class Main {    public static void main(String[] args){

Page 13: TEMA IP

 Runner[] run = new Runner[4];  int nr_alergatori = 4;  for(int i=0;i<nr_alergatori;i++)  {  run[i]=new Runner();  }  System.out.println("");  System.out.println("Alergatori");  System.out.println("Sportivul "+run[0].setName("Cociota Florentina")+" a alergat intr-un timp de "+run[0].getTimeFormat(run[0].getRunningTime(4))+" [mm:ss:ms] si a facut "+run[0].numarul_de_ture+" ture.");  System.out.println("Sportivul "+run[1].setName("Marin Marius")+" a alergat intr-un timp de "+run[1].getTimeFormat(run[1].getRunningTime(4))+" [mm:ss:ms] si a facut "+run[1].numarul_de_ture+" ture.");  System.out.println("Sportivul "+run[2].setName("Petresc Ovidiu")+" a alergat intr-un timp de "+run[2].getTimeFormat(run[2].getRunningTime(4))+" [mm:ss:ms] si a facut "+run[2].numarul_de_ture+" ture.");  System.out.println("Sportivul "+run[3].setName("Ion Gheorghe")+" a alergat intr-un timp de "+run[3].getTimeFormat(run[3].getRunningTime(4))+" [mm:ss:ms] si a facut "+run[3].numarul_de_ture+" ture.");    System.out.println("");  System.out.println("Dupa ordonare:");  for(int i=0;i<nr_alergatori;i++) for(int j=i+1;j<nr_alergatori;j++)  { int laps = 0; if(run[i].getRunningTime(laps) > run[j].getRunningTime((laps))) { Runner x = run[i]; run[i]=run[j]; run[j]=x; } System.out.println("Sportivul "+run[i].setName(run[i].sportiv_nume)+" a alergat intr-un timp de "+run[i].getTimeFormat(run[i].getRunningTime(ture))+" [mm:ss:ms] si a facut "+run[i].numarul_de_ture+" ture.");  }    Swimmer[] swim = new Swimmer[3];  int nr_innotatori = 4;  for (int l=0;l<nr_innotatori;l++)  { swim[l]=new Swimmer();  }

 System.out.println("");  System.out.println("Innotatori");  System.out.println("Sportivul "+swim[0].setName("Popovici Vasile")+" a innotat intr-un timp de "+swim[0].getTimeFormat(swim[0].getSwimmingTime(2))+" [mm:ss:ms] si a facut "+swim[0].numarul_de_lungime_bazin+" lungimi de bazin.");  System.out.println("Sportivul "+swim[1].setName("Stef Stefan")+" a innotat intr-un timp de "+swim[1].getTimeFormat(swim[1].getSwimmingTime(4))+" [mm:ss:ms] si a facut "+swim[1].numarul_de_lungime_bazin+" lungimi de bazin.");  System.out.println("Sportivul "+swim[2].setName("Radu Ioan")+" a innotat intr-un timp de "+swim[2].getTimeFormat(swim[2].getSwimmingTime(7))+" [mm:ss:ms] si a facut "+swim[2].numarul_de_lungime_bazin+" lungimi de bazin.");  System.out.println("Sportivul "+swim[3].setName("Radu Ioan")+" a innotat intr-un timp de "+swim[3].getTimeFormat(swim[3].getSwimmingTime(10))+" [mm:ss:ms] si a facut "+swim[3].numarul_de_lungime_bazin+" lungimi de bazin.");    System.out.println("");  System.out.println("Dupa ordonare:");  for(int i=0;i<nr_innotatori;i++) for(int j=i+1;j<nr_innotatori;j++)  { int lungime_bazin = 0; if(swim[i].getSwimmingTime(lungime_bazin) > swim[j].getSwimmingTime(lungime_bazin)) { Swimmer x = swim[i]; swim[i]=swim[j]; swim[j]=x; } System.out.println("Sportivul "+swim[i].setName(swim[i].sportiv_nume)+" a innotat intr-un timp de "+swim[i].getTimeFormat(swim[i].getSwimmingTime(lungime_bazin))+" [mm:ss:ms] si a facut "+swim[i].numarul_de_lungime_bazin+" lumgimi de bazin.");  }  }}

Page 14: TEMA IP

5. Definiti o clasa abstracta numita Coder care declara prototipurile metodelor care codeaza si decodeaza o variabila de tip String si integer potrivit unei chei primite ca parametru. O a doua clasa numita ExplicitCoder este derivata din prima si defineste metodele abstracte. O a treia clasa numita ExplicitCoderExtended redefineste metodele.Instantiati ambele clase ne-abstracte si utilizati metodele create. Studiati mecanismele de upcasting si downcasting.

public abstract class Coder {  abstract public String CodareString(String key);  abstract public int CodareInteger(int key);  abstract public String DecodareString(String key);  abstract public int DecodareInteger(int key);}public class ExplicitCoder extends Coder {    int integer = 201;  String str = new String("Azi este frumos afara");    public String CodareString(String key){  String str_codat = str.replaceAll("a",key);  return str_codat;  }    public int CodareInteger(int key){  int int_codat = integer * key;  return int_codat;    }    public String DecodareString(String key){  String str_decodat = str.replaceAll(key, "a");  return str_decodat;  }    public int DecodareInteger(int key){  int int_decodat = (integer * key) / key;  return int_decodat;    }  }public class ExplicitCoderExtended extends Coder {    int integer = 201;  String str = new String("Azi este frumos afara");    public String CodareString(String key){  String str_codat = str.replaceAll("i",key);  return str_codat;

 }    public int CodareInteger(int key){  int int_codat = integer + key;  return int_codat;    }    public String DecodareString(String key){  String str_decodat = str.replaceAll(key, "i");  return str_decodat;  }    public int DecodareInteger(int key){  int int_decodat = (integer + key) - key;  return int_decodat;    } }public class MainClass {     public static void main (String[] args){    Coder a = new ExplicitCoder();  System.out.println("String-ul codat este: [" + a.CodareString("xxx") + "], iar string-ul decodat este ["+ a.DecodareString("xxx")+ "].");  System.out.println("Intregul codat este: [" + a.CodareInteger(3) + "], iar intregul decodat este [" + a.DecodareInteger(3) + "].");  Coder b = new ExplicitCoderExtended();  System.out.println("String-ul codat este: [" + b.CodareString("##") + "], iar string-ul decodat este ["+ b.DecodareString("##")+ "].");  System.out.println("Intregul codat este: [" + b.CodareInteger(3) + "], iar intregul decodat este [" + b.DecodareInteger(3) + "].");    System.out.println("Upcasting...");  ExplicitCoder c = new ExplicitCoder();  ExplicitCoderExtended d = new ExplicitCoderExtended();  System.out.println("String-ul codat este: [" + ((Coder)c).CodareString("zzz") + "], iar string-ul decodat este ["+ ((Coder)c).DecodareString("zzz") + "].");  System.out.println("Intregul codat este: [" + ((Coder)c).CodareInteger(12) + "], iar intregul decodat este [" + ((Coder)c).DecodareInteger(12) + "].");  System.out.println("String-ul codat este: [" + ((Coder)d).CodareString(">>>") + "], iar string-ul decodat este ["+ ((Coder)d).DecodareString(">>>") + "].");  System.out.println("Intregul codat este: [" + ((Coder)d).CodareInteger(9)

Page 15: TEMA IP

+ "], iar intregul decodat este [" + ((Coder)d).DecodareInteger(9) + "].");  System.out.println("Downcasting...");  Coder e = new ExplicitCoder();  Coder f = new ExplicitCoderExtended();  System.out.println("String-ul codat este: [" + ((ExplicitCoder)e).CodareString("<><>") + "], iar string-ul decodat este ["+ ((ExplicitCoder)e).DecodareString("<><>") + "].");  System.out.println("Intregul codat este: [" + ((ExplicitCoder)e).CodareInteger(32) + "], iar intregul decodat este [" + ((ExplicitCoder)e).DecodareInteger(32) + "].");  System.out.println("String-ul codat este: [" + ((ExplicitCoderExtended)f).CodareString(":::") + "], iar string-ul decodat este ["+ ((ExplicitCoderExtended)f).DecodareString(":::") + "].");  System.out.println("Intregul codat este: [" + ((ExplicitCoderExtended)f).CodareInteger(87) + "], iar intregul decodat este [" + ((ExplicitCoderExtended)f).DecodareInteger(87) + "].");    } }7. Scrieti o clasa a carei instante reprezinta un întreg pachet de carti. Cartile de joc au doar 2 proprietati: rang si culoare. Verificati daca un set 3 de arti extrase aleator din pachet pot rezulta în 3 carti crescatoare, 3 carti e aceeasi culoare sau 3 carti de acelasi rang. Cartile extrase nu se pun înapoi în achet. Daca programul gaseste astfel de carti, acestea vor fi afisate. Daca nu, programul afiseaza: public class Problema7 {  public static void main(String[] args) {

 Cartejoc pachet=new Cartejoc();    for(int i=1;i<=17;i++)  {  int [] carte1=pachet.extragecarte();  int [] carte2=pachet.extragecarte();  int [] carte3=pachet.extragecarte();    /////verificare 3 carti crescatoare  //System.out.println("Carti in ordine crescatoare dupa rang:");  if(carte1[1]<carte2[1] && carte2[1]<carte3[1])

 { System.out.println("3 carti in ordine crescatoare: "+carte1[0]+"."+carte1[1]+"~~~"+carte2[0]+"."+carte2[1]+"~~~"+carte3[0]+"."+carte3[1]);  }  else  { System.out.println("-N-");  } import java.util.*;public class Cartejoc {  int count=0;  int pachet[][] =new int [5][16];  Random rand =new Random();    public int getCuloare()  {  return this.rand.nextInt(4)+1;  }  public int getRang()  {  return this.rand.nextInt(13)+2;  }    public int[] extragecarte()  {  int culoare=this.getCuloare();  int rang=this.getRang();    if( this.count < 52 )  { while(this.pachet[culoare][rang]==1) { culoare=this.getCuloare(); rang=this.getRang(); } this.pachet[culoare][rang]=1; this.count++;  }  int[] carte=new int[2];  carte[0]=culoare;  carte[1]=rang; return carte;  } }

Tema 5/*1.Folositi pachetul ccj pentru a citi de la tastatura elementele unei matrice de 3x3 numere intregi. Folosind operatorul pe biti &, determinate care sunt pozitiile elementelor impare si afisati numarul lor.*/import java.lang.String;import ccj.*;class Problema1{public static void main(String args[]) { int n=0,i,j;

Page 16: TEMA IP

int m[][]=new int[3][3];//declarare matrice de 3x3 System.out.println("Introduceti elementele matricii:"); for(i=0;i<3;i++){ for(j=0;j<3;j++) m[i][j]=Console.in.readInt();//citire de la tastatura } System.out.print("Matricea introdusa este:"); //afisare matrice for(i=0;i<3;i++) { System.out.print("\n"); for(j=0;j<3;j++) { System.out.print(m[i][j]+" "); if(m[i][j]%2==1)n++;//determinare elemente impare } } if(n!=0){ { System.out.print("\nAti introdus "+n+" elemente impare.\n"); System.out.println(); System.out.print("Elementele impare au urmatoarele pozitii: "); for(i=0;i<3;i++) for(j=0;j<3;j++) if(m[i][j]%2==1)System.out.print("\nElementul ["+m[i][j]+"] pe linia ["+(i+1)+"] si coloana ["+(j+1)+"];"); } else System.out.print("\nNu ati introdus nici un element impar!!!"); }}/*2. Definiti un pachet numit UserPackage care va fi folosit pentru citirea de la tastatura a variabilelor de tip String. Pachetul contine o clasa numita Read care efectueaza operatiunile necesare prin intermediul metodei readKeybd. Importati pachetul UserPackage intr-un alt program si folositi metoda readKeybd pentru a citi o serie de variabile de tip String de la tastatura. Dupa fiecare operatiune de citire, utilizatorul este

intrebat daca doreste sa continue sau nu. Dupa finalizarea procesului de citire, sirurile de caractere introduse vor fi reafisate, ordonate alfabetic. Modificati pachetul UserPackage prin adaugarea urmatoarelor metode in clasa Read: readInt, readFloat si readDouble. Folositi aceste metode ca si in problema anterioara. *///pachetulpackage UserPackage;import java.util.Scanner;public class Read { static public String ReadKeybd(){ //citeste string Scanner input_string = new Scanner(System.in); String option_string = input_string.nextLine(); return option_string; } static public int ReadInt(){ //citeste intreg Scanner input_int = new Scanner(System.in); int option_int = input_int.nextInt(); return option_int; } static public float ReadFloat(){ //citeste float Scanner input_float = new Scanner(System.in); float option_float = input_float.nextFloat(); return option_float; } static public double ReadDouble(){ //citeste double Scanner input_double = new Scanner(System.in); double option_double = input_double.nextDouble(); return option_double;}}//clasa principalaimport java.lang.String;import UserPackage.*;//import packageclass Problema2{

Page 17: TEMA IP

public static void main(String args[]) { String string[]=new String[20];//declarare sir string int intreg[]=new int[20]; float flotant[]=new float[20]; double dublu[]=new double[20]; String continua;//flag int continua2; float continua3; double continua4; int n=0;//contor stringuri do{ System.out.print("Introduceti un sir de la tastatura: "); string[n]=Read.ReadKeybd();//citire in string n++; System.out.print("Doriti sa mai introduceti un sir? [Da/Nu] "); continua=Read.ReadKeybd();//citire in flag }while(continua.equalsIgnoreCase("da")); System.out.println("Sirurile introduse afisate in ordine alfabetica sunt:"); for(int i=0;i<n-1;i++) for(int j=i+1;j<n;j++) { if(string[i].compareTo(string[j])>0) { String aux=string[i]; string[i]=string[j]; string[j]=aux; } }//sortarea alfabetica a sirurilor for(int i=0;i<n;i++){ System.out.println(string[i]);//afisarea sirurilor introduse } //pentru intregi do{ System.out.print("Introduceti un intreg de la tastatura: "); intreg[n]=Read.ReadInt();//citire in string n++; System.out.print("Doriti sa mai introduceti un intreg? [Da/Nu] "); continua2=Read.ReadInt();//citire in flag }while(continua.equalsIgnoreCase("da"));

System.out.println("Intregii introdusi afisati in ordine crescatoare sunt:"); for(int i=0;i<n-1;i++) { if(intreg[i]>intreg[i+1]) { int aux=intreg[i]; intreg[i]=intreg[i+1]; intreg[i+1]=aux; } } for(int i=0;i<n;i++){ System.out.println(intreg[i]);//afisarea intregilor introdusi } //pentru float do{ System.out.print("Introduceti un float de la tastatura: "); flotant[n]=Read.ReadFloat();//citire in string n++; System.out.print("Doriti sa mai introduceti un float? [Da/Nu] "); continua3=Read.ReadFloat();//citire in flag }while(continua.equalsIgnoreCase("da"));System.out.println("Flotantii introdusi afisati in ordine crescatoare sunt:");for(int i=0;i<n-1;i++){if(flotant[i]>flotant[i+1]){float aux=flotant[i];flotant[i]=flotant[i+1];flotant[i+1]=aux; }}for(int i=0;i<n;i++){ System.out.println(flotant[i]);//afisarea flotantilor introdusi}//pentru doubledo{ System.out.print("Introduceti un double de la tastatura: "); dublu[n]=Read.ReadDouble();//citire in string n++; System.out.print("Doriti sa mai introduceti un float? [Da/Nu] ");

Page 18: TEMA IP

continua4=Read.ReadDouble();//citire in flag }while(continua.equalsIgnoreCase("da"));System.out.println("Doubles introdusi afisati in ordine crescatoare sunt:");for(int i=0;i<n-1;i++){if(dublu[i]>dublu[i+1]){double aux=dublu[i];dublu[i]=dublu[i+1];dublu[i+1]=aux; }}for(int i=0;i<n;i++){System.out.println(dublu[i]);//afisarea doubles introdusi} }}/*3. Definiti un pachet care declara interfata Int1 (2 variabile intregi si o metoda numita sum) si implementeaza clasa Class1 (2 variabile protected de tip float, constructor, metode accesor si mutator pentru variabilele din clasa). Implementati un alt fisier sursa care adauga in acelasi pachet o noua interfata numita Int2 (2 variabile de tip double si o metoda numita product). ntr-un fisier sursa distinct, importati tot ce contine pachetul definit anterior si definite o clasa numita Class2 care este derivata din Class1 si care foloseste ambele interfete Int1 si Int2. Implementarile metodelor din interfete returneaza rezultatul corespunzator prin aplicarea asupra variabilelor din Class1 si din ambele interfete. Instantiati Class2 si aplicati metodele disponibile asupra unor variabile citite de la tastatura.*///Interfata Int1package P5;public interface Int1 { int a=4; int b=5; int sum(int x,int y); }//clasa Class1import P5.*;

public class Class1 implements Int1 { float c; float d; Class1() { c=(float)2.3432; d=(float)7.0339; } public Class1(float c,float d) { this.c=c; this.d=d; } public void display() { System.out.println("Ati introdus numerele reale: "+c+" si +d); } public void set(float x,float y) { c=x; d=y; } public int sum(int x,int y) { return a+b; } }//Interfata Int2package P5;public interface Int2 { double e=9.3; double f=8.1; double product(double x, double y); }//Class2 derivara din Class1 implementeaza Int2import java.lang.String;import UserPackage.*;import P5.*;public class Class2 extends Class1 implements Int2{Class2(){ super(); }

Page 19: TEMA IP

public static void main(String args[]) { Class2 ob1= new Class2(); System.out.println("Introduceti doua numere reale:"); float a,b; System.out.print("a="); a=(float)Read.ReadDouble(); System.out.print("b="); b=(float)Read.ReadDouble(); ob1.set(a,b); System.out.println("Prelucrare numere float din Class1 introduse de la tastatura!"); ob1.display(); System.out.println("Prelucrarea numerelor "+Class1.a+" si "+Class1.b+" de tip intreg din Int1 implementata cu Class1!"); System.out.println("Suma lor este: "+ob1.sum(Class1.a,Class1.b)); System.out.println("Prelucrarea numerelor "+Class2.e+" si "+Class2.f+" de tip double din Int2 implementata cu Class2!"); System.out.println("Produsul lor este: "+ob1.product(Class2.e,Class2.f)); }public double product(double x, double y) { return x*y; } } /*5. Definiti un pachet Java numit operator care contine clasa Operations. In clasa exista metode care ilustreaza functionarea operatorilor binari si unari +, -, *, /, &, |, <<, >>, >>>, ++, -- atunci cand sunt aplicati asupra unor variabile primite ca parametri. Metodele afiseaza operanzii si rezultatul in binar si returneaza rezultatul ca valoare intreaga. Utilizati pachetul creat pentru a prelucra doua valori intregi predefinite. *///pachetulpackage Operator;public class Operations { public int Plus(int a, int b) { //operatorul + System.out.println("Operanzii sunt "+a+" si "+b);

System.out.println("Operandul este +, iar suma lor in binar este: "+Integer.toBinaryString(a+b)); return a+b; } public int Minus(int a, int b) { //operatorul - System.out.println("Operanzii sunt "+a+" si "+b); System.out.println("Operandul este -, iar diferenta lor in binar este: "+Integer.toBinaryString(a-b)); return a-b; } public int Ori(int a, int b) { //operatorul * System.out.println("Operanzii sunt "+a+" si "+b); System.out.println("Operandul este *, iar produsul lor in binar este: "+Integer.toBinaryString(a*b)); return a*b; } public float Impartire(int a, int b) { //operatorul / System.out.println("Operanzii sunt "+a+" si "+b); System.out.println("Operandul este /, iar catul lor in binar este: "); return a/b; } public int Si(int a, int b) { //operatorul & System.out.println("Operanzii sunt "+a+" si "+b); System.out.println("Operandul este &, iar & lor in binar este: "); return a&b; } public int Sau(int a, int b ) { //operatorul |

Page 20: TEMA IP

System.out.println("Operanzii sunt "+a+" si "+b); System.out.println("Operandul este |, iar | lor in binar este: "); return a|b; } public int DeplStanga(int a, int b ) { //operatorul << System.out.println("Operanzii sunt "+a+" si "+b); System.out.println("Operandul este <<, iar << lor in binar este: "); return a<<b; } public int DeplDreapta(int a, int b) { //operatorul >> System.out.println("Operanzii sunt "+a+" si "+b); System.out.println("Operandul este >>, iar >> lor in binar este: "); return a>>b; } public int Shiftare(int a, int b) { //operatorul >>> System.out.println("Operanzii sunt "+a+" si "+b); System.out.println("Operandul este >>, iar >>> lor in binar este: "); return a>>>b; } public int Inc(int a, int b) { //operatorul ++ System.out.println("Operanzii sunt "+a+" si "+b); System.out.println("Operandul este ++, iar ++ lui "+a+" in binar este: "); return ++a; } public int Dec(int a, int b) { //operatorul -- System.out.println("Operanzii sunt "+a+" si "+b);

System.out.println("Operandul este --, iar -- lui "+b+" in binar este: "); return --b; }}//clasa principalaimport Operator.*;public class MainClass { public static void main(String[] args){ int a = 4; int b = 6; Operations ob = new Operations(); System.out.println("Suma in intreg: "+ob.Plus(a, b)); System.out.println("Diferenta in intreg: "+ob.Minus(a, b)); System.out.println("Produsul in intreg: "+ob.Ori(a, b)); System.out.println("Impartirea in intreg: "+ob.Impartire(a, b)); System.out.println("Si in intreg: "+ob.Si(a, b)); System.out.println("Sau in intreg: "+ob.Sau(a, b)); System.out.println("<< in intreg: "+ob.DeplStanga(a, b)); System.out.println(">> in intreg: "+ob.DeplDreapta(a, b)); System.out.println(">>> in intreg: "+ob.Shiftare(a, b)); System.out.println("++ in intreg: "+ob.Inc(a, b)); System.out.println("-- in intreg: "+ob.Dec(a, b)); }}/*6. Definiti un pachet anotimpuri. Creati in pachet o noua interfata, anotimp, care defineste metodele void Culoare(), void Temperatura() si void Afiseaza(). Definiti 4 clase Primavara, Vara, Toamna si Iarna, care sa implementeze interfata anotimp si apoi sa suprascrie metodele din interfata cu metodele Culoare(string culoare) si Temperatura(string temperatura). Creati un nou fisier, in pachetul default, importati pachetul anotimpuri si creati cate un obiect de tipul Primavara, Vara, Toamna si Iarna.

Page 21: TEMA IP

Setati temperatura si culoarea pentru fiecare anotimp si afisati rezultatele obtinute. *///pachetpackage Anotimpuri;public interface Anotimp { void Culoare(); void Temperatura(); void Afiseaza();}//clasa Primavara, implementeaza Anotimppackage Anotimpuri;public class Primavara implements Anotimp { String culoare = null; String temperatura = null; public void Culoare(String culoare) { System.out.println("Culoarea anotimpului este: "+culoare+"."); } public void Temperatura(String temperatura) { System.out.println("Temperatura este de: "+temperatura+" grade Celsius."); } public void Afiseaza() { System.out.println("Anotimpul este Primavara, cu urmatoarele caracteristici:"); } @Override public void Culoare() { // TODO Auto-generated method stub } @Override public void Temperatura() { // TODO Auto-generated method stub }//clasa Vara, implementeaza Anotimppackage Anotimpuri;public class Vara implements Anotimp { String culoare = null; String temperatura = null; public void Culoare(String culoare) { System.out.println("Culoarea anotimpului este: "+culoare+".");

} public void Temperatura(String temperatura) { System.out.println("Temperatura este de: "+temperatura+" grade Celsius."); } public void Afiseaza() { System.out.println("Anotimpul este Vara, cu urmatoarele caracteristici:"); } @Override public void Culoare() { // TODO Auto-generated method stub } @Override public void Temperatura() { // TODO Auto-generated method stub }}//clasa Toamna, implementeaza Anotimppackage Anotimpuri;public class Toamna implements Anotimp { String culoare = null; String temperatura = null; public void Culoare(String culoare) { System.out.println("Culoarea anotimpului este: "+culoare+"."); } public void Temperatura(String temperatura) { System.out.println("Temperatura este de: "+temperatura+" grade Celsius."); } public void Afiseaza() { System.out.println("Anotimpul este Toamna, cu urmatoarele caracteristici:"); } @Override public void Culoare() { // TODO Auto-generated method stub } @Override public void Temperatura() { // TODO Auto-generated method stub }

Page 22: TEMA IP

}//clasa Iarna, implementeaza Anotimppackage Anotimpuri;public class Iarna implements Anotimp { String culoare = null; String temperatura = null; public void Culoare(String culoare) { System.out.println("Culoarea anotimpului este: "+culoare+"."); } public void Temperatura(String temperatura) { System.out.println("Temperatura este de: "+temperatura+" grade Celsius."); } public void Afiseaza() { System.out.println("Anotimpul este Iarna, cu urmatoarele caracteristici:"); } @Override public void Culoare() { // TODO Auto-generated method stub } @Override public void Temperatura() { // TODO Auto-generated method stub }}//clasa principalaimport Anotimpuri.*;public class MainClass { public static void main(String[] args){ //declarare obiecte de tip Primavara, Vara, Toamna, Iarna si setarea lor. Primavara ob1 = new Primavara(); ob1.Afiseaza(); ob1.Culoare("Verde deschis"); ob1.Temperatura("20"); System.out.println(); Vara ob2 = new Vara(); ob2.Afiseaza(); ob2.Culoare("Verde"); ob2.Temperatura("35"); System.out.println(); Toamna ob3 = new Toamna(); ob3.Afiseaza();

ob3.Culoare("Maro"); ob3.Temperatura("15"); System.out.println(); Iarna ob4 = new Iarna(); ob4.Afiseaza(); ob4.Culoare("Verde"); ob4.Temperatura("35"); }}Tema61. Cititi de la tastatura o serie de perechi de numere (int, float, etc.) si incercati sa obtineti catul impartirii lor. Afisati rezultatul.Tratati exceptia de tip ArithmeticException data de incercarea de a imparti un numar la 0.*In modulul catch aferent, dati impartitorului o valoare predefinita si apoi afisati rezultatul impartirii.*Rescrieti codul de mai sus folosind o metoda numita divide() care semnalizeaza exceptia de tip ArithmeticException. *In functia main(), tratati exceptia semnalizata de metoda.import java.io.DataInputStream;import java.lang.String;import java.io.IOException;public class Tema2 { public static void main(String args[]) { int n,m; float p,q; String numStr1=null; String numStr2=null; try { System.out.flush(); DataInputStream dis=new DataInputStream(System.in); System.out.println("Introduceti doua numere intregi:"); numStr1=dis.readLine(); numStr2=dis.readLine(); n=Integer.parseInt(numStr1); m=Integer.parseInt(numStr2); try { int rez=n/m;

Page 23: TEMA IP

System.out.println(n+" : "+m+" = "+rez); } catch(ArithmeticException e) { System.out.println("Impartitor 0!"); } } catch (IOException ioe) { System.out.println(ioe.toString()); System.exit(1); } //incercare pentru float try { System.out.flush(); DataInputStream dis=new DataInputStream(System.in); System.out.println("Introduceti doua numere reale:"); numStr1=dis.readLine(); numStr2=dis.readLine(); p=Float.parseFloat(numStr1); q=Float.parseFloat(numStr2); try { if(q==0)System.out.println("Impartitor 0!"); else { float rez=p/q; System.out.println(p+" : "+q+" = "+rez); } } catch(ArithmeticException e) { System.out.println("Impartitor 0!"); } } catch (IOException ioe) { System.out.println(ioe.toString()); System.exit(1); }

} }*Rescrieti codul problemei anterioare folosind o metoda numita divide() care semnalizeaza exceptia de tip ArithmeticException. In functia main(), tratati exceptia semnalizata de metoda.*/import java.io.DataInputStream;import java.lang.String;import java.io.IOException;public class Tema3 { public double Divide(double x,int j)throws ArithmeticException,Exception { x=x/j; if(j==0)throw new Exception("din Divide"); return x; } public static void main (String[] args) { double y; Tema cls=new Tema(); int n,m; String numStr1=null; String numStr2=null; try { for(int i=0;i<4;i++) { System.out.flush(); DataInputStream dis=new DataInputStream(System.in); System.out.println("Numerele intregi sunt :"); numStr1=dis.readLine(); numStr2=dis.readLine(); n=Integer.parseInt(numStr1); m=Integer.parseInt(numStr2); try { y=cls.Divide(n,m); System.out.println("Impartitorul este: "+m);

Page 24: TEMA IP

System.out.println("Catul este: "+y); } catch(ArithmeticException e) { System.out.println("Impartire cu zero!!!(geniule)"); m=1; } catch(Exception e) { e.printStackTrace(); } } } catch (IOException ioe) { System.out.println(ioe.toString()); System.exit(1); } } }/*2.Definiti o clasa de tip exceptie derivata dintr-o clasa specifica, responsabila cu tratarea exceptiilor *care apar la incercarea de a converti in valori numerice anumite variabile de tip String care contin date non-numerice. *Folositi aceasta clasa pentru a monitoriza o secventa de cod care apartine functiei main(), citeste de la tastatura valoarea *non-numerica a unei variabile de tip String si apoi incearca sa o converteasca intr-un numar intreg. Afisati continutul stivei *program din zona exceptiei aparute.import javax.swing.JOptionPane;class derivata_NFE extends NumberFormatException //clasa derivata din clasa NumberFormatException { public String read() //metoda pt citirea string-ului { String s=JOptionPane.showInputDialog("Introduceti un string: ");

return s; }//end read public void convert(String s) throws NumberFormatException//metoda pentru conversia din string in numar { String v=new String(); v=("01234567890"); boolean b; b=false; for (int i=0;i<s.length();i++) { for (int k=0;k<v.length();k++) { if (s.charAt(i)==v.charAt(k)) //compara daca un element din string este numar { for (int u=i;u<s.length();u++) if (((int)s.charAt(u)<47)||((int)s.charAt(u)>=58))//compara daca un element din string nu este numar break; b=true; } else if (((int)s.charAt(i)<47)||((int)s.charAt(i)>=58))//compara daca un element din string nu este numar break; } } if (b==true) { int j=Integer.parseInt(s); JOptionPane.showMessageDialog(null, "Ati introdus numarul integer: "+j); } else throw new NumberFormatException("Stringul nu este numar, nu poate fi convertit!"); }//end convert }//end class derivata_NFEclass Tema4//clasa Tema4, contine main {

Page 25: TEMA IP

public static void main(String args[])//metoda main { derivata_NFE x=new derivata_NFE();//obiect nou al clasei definite String st=x.read();//apelam metoda de citire try//se incearca conversia { x.convert(st); } catch (NumberFormatException e)//daca nu a reusit conversia, se da mesaj de exceptie { e.printStackTrace();//se afiseasa stack trace JOptionPane.showMessageDialog(null, e.getMessage()); System.exit(0); } System.exit(0); }//end main }//end class Tema/* 3.Scrieti o aplicatie Java care implementeaza un bloc de cod care poate sa genereze exceptii * aritmetice, de tip I/O, de depasire a indecsilor de accesare a elementelor dintr-un sir sau de orice * alt tip. Afisati mesaje semnificative in fiecare bloc catch aferent. Atentie la ordinea in care sunt * mentionate blocurile de tratare a exceptiilor. Mutati intr-o metoda blocul de cod care poate genera * exceptii si apoi rescrieti modalitatile de tratare.*/import java.io.*;import javax.swing.JOptionPane;import java.io.IOException;class exc extends Exception //clasa exc este derivata din clasa Exception { public int i; public double d,j; public void read()//metoda pentru citire { System.out.print("Introduceti un numar intreg: ");

try//se incearca citirea { DataInputStream data=new DataInputStream(System.in); i=Integer.parseInt(data.readLine()); }//end try catch(IOException ww)//daca nu a reusit citirea, se da mesaj de exceptie { System.out.print("Exceptie la citirea numarului intreg!"); }//end catch System.out.print("Introduceti un double: "); try//se incearca citirea { DataInputStream data=new DataInputStream(System.in); d=Double.parseDouble(data.readLine()); }//end try catch(IOException ww)//daca nu a reusit citirea, se da mesaj de exceptie { System.out.print("Exceptie la citirea numarului double!"); }//end catch }//end read public void div() throws Exception//metoda de divizare { if (d==0) throw new Exception ("Eroare la diviziune cu 0!");//exceptie daca se incearca diviziune cu 0 else { j=i/d; System.out.print(i+" : "+d+" = "+j);//daca diviziunea este corecta, se afiseaza mesaj } }//end div }//end class excclass Tema5 //class Tema5, contine main { public static void main(String args[])//metoda main

Page 26: TEMA IP

{ exc b1=new exc();//se creeaza un obiect nou ce apartine clasei exc b1.read();//se apeleaza metoda de citire try//se incearca divizarea { b1.div(); }//end try catch (Exception e)//daca divizarea nu a reusit, se afiseaza mesaj de exceptie { System.out.print(e.getMessage()); System.exit(0); }//end catch System.exit(0); }//end main }//end class Tema /*4. Scrieti o aplicatie Java care defineste o clasa care are ca atribut privat un sir de *tring-uri reprezentand numele unor studenti. Numarul inregistrarilor este predefinit si are valoarea 20. *Numarul real de variabile este determinat prin citirea lor de la tastatura, cu confirmare. Implementati *un algoritm de sortare alfabetica a elementelor din sir (20 de pozitii) si tratati exceptiile produse de accesarea *elementelor inexistente.public class Testproblema4 { public static void main(String[] args) throws Exception { Studenti STD =new Studenti(); for(int i=0;i<5;i++) { try { STD.read(i); }catch(Exception e){ System.out.print(e.getMessage()); } } STD.sortare(); STD.afisare(); }}import java.io.BufferedReader;

import java.io.InputStreamReader;import java.lang.String;public class Studenti { public int limit=20; private String[]studenti=new String[20]; public void read(int i) throws Exception//metoda pentru citire { String sample = null; BufferedReader br = new BufferedReader(new InputStreamReader(System.in) ); System.out.print("Introduceti numele celui deal "+i+" student:"); sample = br.readLine(); if(sample.length()==0) { this.studenti[i]= new String(); throw new Exception("Numele nu a fost setat"); } else { this.studenti[i]=sample; } } public void interschimbare(int i,int j) throws Exception { if(this.studenti[i].length()==0 || this.studenti[j].length()==0 ) throw new Exception("Se compara cu sir null"); else if(this.studenti[i].compareTo(this.studenti[j]) > 0) { String copie=this.studenti[i]; this.studenti[i]=this.studenti[j]; this.studenti[j]=copie; } } public void sortare(){ for(int i=0;i<this.limit;i++)

Page 27: TEMA IP

{ for(int j=i+1;j<this.limit;j++) { try{ this.interschimbare(i,j); }catch(Exception e) { System.out.println(e.getMessage()); } } } } public void afisare(){ for(int i=0;i<limit;i++) { if(this.studenti[i].length()>0)System.out.println(this.studenti[i]); } }}/*7. Un dreptunghi este definit de 2 puncte: coordonatele col?ului din stânga, sus ?i cele ale col?ului din dreapta, jos. *Clasa dreptunghi implementeaza ?i o metoda pentru calcularea ariei sale. *Cititi de la tastatura coordonatele unui dreptunghi ?i verifica?i daca 10 dreptunghiuri *generate aleator au macar 15% din arie în comun cu aria dreptunghiului ini?ial. *Daca un dreptunghi nu verifica aceasta condi?ie se va declan?a IllegalArgumentException ?i se vor fi *afi?ate coordonatele dreptunghiul eronat. Dreptunghiurile generate trebuie plasate de la început doar *într-o arie de 150% în jurul dreptunghiului ini?ial.public class Problema7test { public static void main(String[] args) { Dreptunghi drept=new Dreptunghi(); drept.citirecoordonate(); ///System.out.println(drept.arie()); Dreptunghi[] dreptunghiuri=new Dreptunghi[10]; for(int i=0;i<dreptunghiuri.length;i++)

{ dreptunghiuri[i]= new Dreptunghi(); dreptunghiuri[i].generare(); System.out.println(dreptunghiuri[i].arie()); } }}import java.io.BufferedReader;import java.io.DataInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.util.Random;public class Dreptunghi { Random rd=new Random(); private int x1; private int y1; private int x2; private int y2; static int xinitial1; static int yinitial1; static int xinitial2; static int yinitial2; public int generare150(int x){ return x*150/100; } public void afisarec(){ System.out.println("x1"+this.x1+"y1"+this.y1+"x2"+this.x2+"y2"+this.y2); } public void generare() { System.out.println(Dreptunghi.xinitial1); this.x1=this.rd.nextInt(Dreptunghi.xinitial1)+this.generare150(Dreptunghi.xinitial1); this.y1=this.rd.nextInt(Dreptunghi.yinitial1)+this.generare150(Dreptunghi.yinitial1); this.x2=this.rd.nextInt(Dreptunghi.xinitial2)+this.generare150(Dreptunghi.xinitial2); this.y2=this.rd.nextInt(Dreptunghi.yinitial2)+this.generare150(Dreptunghi.yinitial2);

Page 28: TEMA IP

} public float arie() { return Math.abs((this.x2-this.x1)*(this.y1-this.y2)); } public void citirecoordonate(){ try{ System.out.print("Colt Stanga Sus x1:"); DataInputStream data=new DataInputStream(System.in); Dreptunghi.xinitial1=Integer.parseInt(data.readLine()); }catch(IOException ww){ System.out.print("Exceptie la citire"); } try{ System.out.print("Colt Stanga Sus y1:"); DataInputStream data=new DataInputStream(System.in); Dreptunghi.yinitial1=Integer.parseInt(data.readLine()); }catch(IOException ww){ System.out.print("Exceptie la citire"); } try{ System.out.print("Colt Stanga Sus x2:"); DataInputStream data=new DataInputStream(System.in); Dreptunghi.xinitial2=Integer.parseInt(data.readLine()); }catch(IOException ww){ System.out.print("Exceptie la citire"); } try{ System.out.print("Colt Stanga Sus y2:"); DataInputStream data=new DataInputStream(System.in);

Dreptunghi.yinitial2=Integer.parseInt(data.readLine()); }catch(IOException ww){ System.out.print("Exceptie la citire"); } } }Tema 71. Scrieti un applet Java care preia 4 parametri (int, float) din fisierul HTML atasat. Folositi acesti parametri pentrr a desena un dreptunghi rotunjit umplut cu o anumita culoare (verde, albastru, etc.). Definiti culoarea conturului si culoarea de umplere folosind componentele RGB. import java.applet.*;import java.awt.*;import java.lang.*;public class RoundRectangle extends Applet{int x,y,w,h;public void init(){x=Integer.parseInt(getParameter("x"));y=Integer.parseInt(getParameter("y"));w=Integer.parseInt(getParameter("w"));h=Integer.parseInt(getParameter("h"));}public void paint(Graphics g){Color c=new Color(190,30,70); g.setColor(c); g.fillRoundRect(x,y,w,h,10,10);}}2. Scrieti un program Java (appletcation) care, in cazul in care este rulat ca aplicatie independenta, citeste un sir de caractere de la tastatura si inlocuieste primul si ultimul caracter cu '*'. Daca este rulat ca applet, programul afiseaza un mesaj. import java.applet.*;import java.awt.*;import java.io.*;public class Appletcation extends Applet {public void paint(Graphics g){g.drawString("mesaj...",25,25);}public static void main(String[] args){String s=new String();DataInputStream in=new DataInputStream(System.in);

Page 29: TEMA IP

System.out.println("Introduceti sirul de caractere: ");try{s=in.readLine(); }catch(IOException e){}String a="*";System.out.println("Noul sir este: ");System.out.println(a+s.substring(1,s.length()-1)+a);}}3. Scrieti un applet Java care afiseaza pe ecran o imagine (se folosesc metodele getImage() si drawImage()). Completati fisierul sursa cu liniile de cod care redau o secventa sonora (getAudioClip()). import java.applet.*;import java.awt.*;public class image extends Applet { Image img; AudioClip aud; public void init() {img=getImage(getCodeBase(),"winter.gif"); aud=getAudioClip(getCodeBase(),"lala.au"); } public void paint(Graphics g) {g.drawImage(img,0,0,this); aud.loop();}}4. Scrieti un applet Java care preia din fisierul HTML un numar intreg numit n. Aplicatia deseneaza o tabla de joc cu nxn patrate colorate alternativ in doua culori preluate tot ca intreg din fisierul HTMLimport java . awt .*;import java.applet.Applet;public class p4 extends Applet{ int n,r,v,b; String s; public void start() {s=getParameter("n"); n=Integer.parseInt(s); s=getParameter("r"); r=Integer.parseInt(s); s=getParameter("v"); v=Integer.parseInt(s); s=getParameter("b");

b=Integer.parseInt(s); } public void paint(Graphics g) { Color col1=new Color(r,v,b); Color col2=new Color(22,100,50); int i,j; for( i=0;i<n;i++) for(j=0;j<n;j++) if(i%2==0) if(j%2==0) {g.setColor(col1); g.fillRect(i*10,j*10,10,10); } else {g.setColor(col2); g.fillRect(i*10,j*10,10,10); } else if(j%2==0) {g.setColor(col2); g.fillRect(i*10,j*10,10,10); } else {g.setColor(col1); g.fillRect(i*10,j*10,10,10); } }}5. Scrieti un applet Java care deseneaza o banda colorata in toate culorile posibile. Banda incepe de la culoarea rosie iar tranzitiile dintre culori trebuie facute lin. Aplicatia deseneaza (redeseneaza) banda pe masura ce culorile sunt generate.import java . awt .*;import java.applet.Applet;public class rainbow extends Applet{int i,x;public void paint(Graphics g){ for(i=0;i<256;i++) { Color col =new Color(255,i,0);

Page 30: TEMA IP

g.setColor(col); g.fillRect(i,0,1,10); } for(i=255;i>=0;i--){Color col1 =new Color(i,255,0);g.setColor(col1);g.fillRect((511-i),0,1,10);} for(i=0;i<256;i++) {Color col =new Color(0,255,i); g.setColor(col); g.fillRect((512+i),0,1,10); } for(i=255;i>=0;i--) {Color col1 =new Color(0,i,255); g.setColor(col1); g.fillRect((1023-i),0,1,10); } for(i=0;i<256;i++) {Color col =new Color(i,0,255); g.setColor(col); g.fillRect((1024+i),0,1,10); } }}6. Realiza?i un appletcation care, atunci când este rulat ca aplica?ie va afi?a mesajul: Ruleaza-mă ca applet. Când este rulat ca applet va citi ca parametru HTML raza unui cerc. Desena?i un pătrat ?i un triunghi înscrise în interiorulacestui cerc.import java.applet.*;import java.awt.*;public class cerc extends Applet{ int r; public static void main(String[] args) {System.out.println("Ruleaza-ma ca Applet.");} public void init() {r=Integer.parseInt(getParameter("r")); } public void paint(Graphics g) {g.drawOval(0,0,r,r); g.drawRect(29,29,140,140); int[] x={13,100,187}; int[] y={150,0,150}; int n=3; g.drawPolygon(x,y,n);}

}7. Desena?i primele n poligoane care au numărul de diagonale cel pu?in de x ori mai mare decât numărul de laturi. n ?i x sunt citi?i ca parametrii din pagina HTML. Poligoanele sunt umplute cu culori aleatorii.import java.awt.Color;import java.awt.Container;import java.awt.Graphics;import java.awt.Polygon;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.JFrame;import javax.swing.JPanel;public class pol extends JPanel { public void paintComponent(Graphics g) { super.paintComponent(g); int n=5; int x=2; int j=5; int k=1; while(n>0){ if((j-3)/2>=x) { Polygon p = new Polygon(); for (int i = 0; i < j; i++) p.addPoint((int) (k*100+ 50 * Math.cos(i * 2 * Math.PI / j)), (int) (100 + 50 * Math.sin(i * 2 * Math.PI / j))); Color c=new Color(j*12,j*2,0); g.setColor(c); g.fillPolygon(p); k++; j++; n--; } else {j++;} } } public static void main(String[] args) { JFrame frame = new JFrame(); frame.setTitle("DrawPoly"); frame.setSize(350, 250); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {

Page 31: TEMA IP

System.exit(0); } }); Container contentPane = frame.getContentPane(); contentPane.add(new pol()); frame.show(); }}Tema81. Scrieti un applet Java care are 3 componente de tip Checkbox si un buton la apasarea caruia se afiseaza, prin intermediul unei component de tip Label, un text care contine o informare asupra selectiei facute.import java.awt.*;import java.applet.*;import java.awt.event.*;public class CheckboxTest extends Applet { Button btnchoice; Checkbox chk1; Checkbox chk2; Checkbox chk3; Label selection; public void init(){ btnchoice=new Button ("Alege"); add(btnchoice); chk1=new Checkbox ("Suc de mere"); chk2=new Checkbox ("Ceai"); chk3=new Checkbox ("Cafea"); selection= new Label("Ati ales: "); add(chk1); add(chk2); add(chk3); add(selection); } public boolean action (Event evt, Object arg){ String sel=new String("Ati ales: "); if(evt.target==btnchoice){ if(chk1.getState()) sel+=chk1.getLabel()+'*'; if(chk2.getState()) sel+=chk2.getLabel()+'*'; if(chk3.getState()) sel+=chk3.getLabel()+'*';

} selection.setText(sel); return true; }}2. Scrieti un applet Java care contine 2 componente de tip TextField, o componenta de tip TextArea si 4 butoane cu etichetele "+", "-", "*" si "/". La apasarea unui buton se calculeaza rezultatul operatiei aritmetice corespunzatoare, efectuate intre numerele scrise in cele 2 componente de tip TextField. Rezultatul se adauga, pe un rand nou, la sfarsitul textului deja existent in componenta de tip TextArea.import java.applet.*;import java.awt.*;import java.awt.event.*;public class Calculator extends Applet{ Button btnplus; Button btnminus; Button btndivide; Button btnmultiply; TextField txt1; TextField txt2; TextArea txt3; Double a; Double b; public void init(){ btnplus= new Button("+"); btnminus= new Button("-"); btndivide= new Button("/"); btnmultiply= new Button("*"); txt1= new TextField(5); txt2= new TextField(5); txt3= new TextArea(8,10); add(txt1); add(btnplus); add(btnminus); add(btndivide); add(btnmultiply); add(txt2); add(txt3); } public boolean action (Event evt, Object arg){ a=Double.parseDouble(txt1.getText());

Page 32: TEMA IP

b=Double.parseDouble(txt2.getText()); if(evt.target==btnplus) txt3.append(Double.toString(a+b)+"\n"); if(evt.target==btnminus) txt3.append(Double.toString(a-b)+"\n"); if(evt.target==btnmultiply) txt3.append(Double.toString(a*b)+"\n"); if(evt.target==btndivide) txt3.append(Double.toString(a/b)+"\n"); return true; }}3. Scrieti un applet Java care care deseneaza la pozitia (100,100) un dreptunghi verde cu laturile de 100 si 50. La apasarea unui buton cu eticheta "Rosu",dreptunghiul este redesenat cu noua culoare si eticheta butonului este schimbata in "Verde", s.a.m.d.import java.awt.*;import java.awt.event.*;public class ColoredRectangle extends Applet implements ActionListener{ Button btncolor; int x=100; int y=100; int w=100; int h=50; public void init(){ btncolor= new Button("rosu"); btncolor.addActionListener(this); add(btncolor); } public void actionPerformed(ActionEvent e){ if(btncolor.getLabel().equals("rosu")){ btncolor.setLabel("verde"); } else{ btncolor.setLabel("rosu"); repaint(); } } public void paint(Graphics g){

if(btncolor.getLabel().equals("rosu")) g.setColor(Color.GREEN); else g.setColor(Color.RED); g.drawRect(x, y, w, h); }}4. Scrieti un applet Java care detecteaza click-ul butonului stanga al mouse-ului si deseneaza la pozitia respectiva un dreptunghi plin. Culoarea dreptunghiului este schimbata la fiecare click, fiind generata aleator.import java.awt.*;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.MouseMotionListener;import java.applet.*;public class P4 extends Applet implements MouseListener, MouseMotionListener{ int mouseX=0,mouseY=0; public void init(){ addMouseListener(this); addMouseMotionListener(this); } public void mousePressed(MouseEvent me){ mouseX=me.getX(); mouseY=me.getY(); repaint(); } public void paint(Graphics g){ int R=(int) (Math.random() * 255 ); int G=(int) (Math.random() * 255 ); int B=(int) (Math.random() * 255 ); Color myColor=new Color(R,G,B); g.setColor(myColor); g.fillRect( mouseX, mouseY,40,40); } public void mouseDragged(MouseEvent e) {} public void mouseMoved(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) {}

Page 33: TEMA IP

public void mouseExited(MouseEvent e) {} public void mouseReleased(MouseEvent e) {}}5. Scrieti un applet Java care deseneaza pe ecran o tabla de joc (problema 4 din lab. 7). Cand se face click cu mouse-ul pe unul din patrate, culoarea acestuia este schimbata in rosu. Pe ecran sunt afisate in permanenta numarul de click-uri efectuate in patrate si in afara tablei de joc si numarul de patrate disponibile.

import java.awt.*;import java.applet.Applet;public class P5 extends Applet{ private static final int n = 4; private Rectangle rectangles[][] = new Rectangle[n][n]; private boolean inRect[][]= new boolean[n][n]; public void init() { int x = 20; int y = 20; int width = 30; int height =30; for (int i = 0;i<n;i++){ for (int j = 0; j < n; j++) { inRect[i][j] = false; rectangles[i][j] = new Rectangle(x, y, width, height); x +=width; } x=20; y +=height; } } public boolean mouseMove(Event event, int x, int y) { boolean change = false; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) {

if (!inRect[i][j] && rectangles[i][j].inside(x, y)) { inRect[i][j] = true; change = true; } if (inRect[i][j]&& !rectangles[i][j].inside(x, y)) { inRect[i][j] = false; change = true; } } if (change) repaint(); return true; } public void paint(Graphics g){ for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) { if (inRect[i][j] == true){ g.setColor(Color.red); g.fillRect(rectangles[i][j].x, rectangles[i][j] .y, rectangles[i][j] .width, rectangles[i][j] .height); } else{ if(((i+j)%2==1)) g.setColor(Color.BLACK); else g.setColor(Color.YELLOW); g.fillRect(rectangles[i][j] .x, rectangles[i][j] .y, rectangles[i][j] .width, rectangles[i][j] .height); } } }}Tema101. Considerand algoritmul bubble-sort, verificati functionalitatea lui introducand date folosind :- un obiect DataInputStream si citirea unui String cu readLine() -

Page 34: TEMA IP

eprecated- pachetul CCJ sau un pachet propriu care permite I/E- un obiect BufferedReader conectat la un InputStreamReader prin System.in*///DataInputStream import java.io.DataInputStream; import java.io.IOException; public class BubbleSortAlgDataInputStream { public static void main(String args[]) throws IOException { int vector[]=new int[10]; int n,aux; String str=null; DataInputStream dis=new DataInputStream(System.in); System.out.print("Dati numarul de elemente n:"); str=dis.readLine(); n=Integer.parseInt(str); for(int i=0;i<n;i++) { System.out.print("Element["+i+"]:"); str=dis.readLine(); vector[i]=Integer.parseInt(str); boolean ok = true; while (ok) { ok = false; for(int i=0;i<n-1;i++) for(int j=0;j<n-i-1;j++) if( vector[j+1] < vector[j] ) { aux=vector[j]; vector[j]=vector[j+1]; vector[j+1]=aux; ok = true; } } System.out.print("Sirul ordonat este: "); for(int i=0;i<n;i++) {

System.out.print(vector[i]+" "); } } }//CCJ import java.util.*; import java.io.Console; import java.io.DataInputStream; import java.lang.System; import java.io.IOException; import ccj.Console; class BubbleSortAlgCCJ { public static void main(String args[]) throws IOException { boolean ok; int n,aux; int vector[]=new int[10]; System.out.print("Dati numarul de elemente n="); n=Console.in.readInt(); System.out.print("Dati elementele: "); for(int i=0;i<n;i++) { vector[i]=Console.in.readInt(); } do{ ok=true; for(int i=0;i<n-1;i++) { if( vector[i] > vector[i+1] ) { ok=false; aux=vector[i]; vector[i]=vector[i+1]; vector[i+1]=aux; } } } while(!ok); System.out.print("Sirul oradonat crescator este: "); for(int i=0;i<n;i++) System.out.println(vector[i]+" "); }

Page 35: TEMA IP

}//BufferedReaderimport java.io.*;import java.lang.System; public class BubbleSortAlgBufferReader { public static void main(String args[]) throws IOException { BufferedReader scanner=new BufferedReader(new InputStreamReader(System.in)); String str=null; int n,aux; int vector[]=new int[10]; System.out.print("Dati numarul de elemente n:"); str=scanner.readLine(); n=Integer.parseInt(str); //Citirea sirului for(int i=0;i<n;i++) { System.out.print("Elem["+i+"]:"); str=scanner.readLine(); vector[i]=Integer.parseInt(str); } //BubbleSort boolean ok = true; while (ok) { ok = false; for(int i=0;i<n-1;i++) for(int j=0;j<n-i-1;j++) if( vector[j+1] < vector[j] ) { aux=vector[j]; vector[j]=vector[j+1]; vector[j+1]=aux; ok = true; } } System.out.print("Sirul ordonat este: “ ) for(int i=0;i<n;i++) { System.out.print(vector[i]+" "); } }

}/*2. Scrieti o aplicatie Java care concateneaza datele angajatilor unei firme considerand mai multe departamente (Maxd - departamente) avand nume de tip String. Datele angajatilor fiecarui departament sunt stocate in fisiere distincte. Se va genera o secventa cu toti angajatii companieifolosind clasa SequenceInputStream.Afisati angajatii din fiecare departament in parte si apoi angajatii care au salariul mai mare decat un anumit prag citit de la tastatura.*/import java.io.*;import java.util.*;class DateAngajati { public static void main(String args[]) { departamentClass []departament;//se creeaza un sir de departamente String []den=new String[2];//se creeaza un sir de denumiri den[0]="departament1.txt"; den[1]="departament2.txt"; departament=new departamentClass[2]; departament[0]=new departamentClass("dep1",den[0]); departament[1]=new departamentClass("dep2",den[1]); }}class departamentClass{ String name,text; String []nume=new String[3]; String []prenume=new String[3]; int []salariu=new int[3]; int lim; departamentClass(String nm,String file) { name=nm; try { FileInputStream fstream = new FileInputStream(file);

Page 36: TEMA IP

DataInputStream in = new DataInputStream(fstream); BufferedReader br = new BufferedReader(new InputStreamReader(in)); for(int i=0;i<3;i++) { text= br.readLine(); StringTokenizer stk=new StringTokenizer (text," "); nume[i]=stk.nextToken(); prenume[i]=stk.nextToken(); salariu[i]=Integer.parseInt(stk.nextToken()); } } catch(IOException e) { System.exit(1); } System.out.println("Angajatii departamentului "+name+" sunt:"); for(int i=0;i<3;i++) { System.out.println(nume[i]+" "+prenume[i]); } System.out.println("Dati o limita inferioara pt salariu:"); try { DataInputStream data=new DataInputStream(System.in); lim=Integer.parseInt(data.readLine()); } catch(IOException ww) { System.exit(1); } System.out.println("Angajatii departamentului "+name+" care au salariu mai mare decat "+lim+" sunt:"); for(int i=0;i<3;i++) { if(salariu[i]>lim) System.out.println(nume[i]+" "+prenume[i]+" "+salariu[i]); } }}

//*3. Realizati o aplicatie Java care primeste de la intrarea standard siruri de caractere sub formatul"dd.MM.yyyy.HH:mm-autor-subiect", care extrage si tipareste datele pe ecran sub formatul "ddmm-yyyy tor:subiect". Aplicatia iese din executie la apasarea tastei "X".Recomandare : utilizati clasa StringTokenizer.*/import java.util.StringTokenizer;import java.io.*;import java.util.*;public class DayMonthYear { @SuppressWarnings("deprecation") public static void main(String args[]) throws IOException { String str; String zi,luna,an,ora,minute,autor,subiect; DataInputStream din= new DataInputStream(System.in); boolean t = true; String s; do { System.out.println("Dati data in format: dd.MM.yyyy.HH:mm-author-subject."); str=din.readLine(); StringTokenizer s1=new StringTokenizer(str,"."); zi=s1.nextToken();//zi=dd luna=s1.nextToken();//luna=mm an=s1.nextToken();//an=yyyy ora=s1.nextToken(":"); minute=s1.nextToken("-"); autor=s1.nextToken("-"); subiect=s1.nextToken("-"); System.out.println("Data in format: dd-MM-yyyy author:subject."); System.out.println("Data:"+zi+"-"+luna+"-"+an+" "+autor+":"+subiect); System.out.println("Doriti sa mai continuati?(Y/N)"); s=din.readLine(); s=s.toUpperCase(); if (s.charAt(0)=='N') t=false;

Page 37: TEMA IP

else t=true; }while(t==true); } }//class/*4. Implementati aplicatia anterioara folosind un fisier de intrare care contine un anumit numar de inregistrari cu formatul specificat mai sus.*/import java.io.*;import java .util .* ;import javax.swing.JOptionPane;public class DayMonthYearFisier { public static void main(String args[]) { String auth,sub; String d,m,y; String text; String yn = null; try { //se creeaza stream pt a citi din fiserul cu denumirea specificata FileInputStream fstream = new FileInputStream("problema4.txt"); DataInputStream in = new DataInputStream(fstream); BufferedReader br = new BufferedReader(new InputStreamReader(in)); text= br.readLine();//se citeste prima linie din fisier do { System.out.println("text= "+text); StringTokenizer stk=new StringTokenizer (text,".");//se seteaza separatorul //se preiau datele separate de catre separatorul setat anterior d=stk.nextToken(); m=stk.nextToken(); y=stk.nextToken(); stk=new StringTokenizer (text,"-");//se seteaza separatorul //se preiau datele separate de catre separatorul setat anterior stk.nextToken();

auth=stk.nextToken(); sub=stk.nextToken(); //se afiseaza datele in formatul cerut JOptionPane.showMessageDialog(null,d+"-"+m+"-"+y+" "+auth+":"+sub); //se cere confirmarea pt a continua cu preluarea si afisarea datelor yn=JOptionPane.showInputDialog("Doriti sa continuati? (Y/N)"); }while((yn.equalsIgnoreCase("Y"))&&(text = br.readLine()) != null) ; } catch(IOException e) { System.exit(1); } }}

/*5. Creati un fisier de tip CSV care contine pe linii distincte urmatoarele informatii, separate prin caracterul ’#’:- nume student- an- nota_1- ...- nota_5Cititi informatia din fisier si apoi afisati toate datele studentilor care au media mai mare ca 8.Obs.: lista de studenti trebuie ordonata alfabetic.*/import java.io.DataInputStream;import java.io.FileInputStream;import java.io.IOException;import java.util.Arrays; public class Studenti @SuppressWarnings("deprecation")public static void main(String[] args) throws IOException { String fName = "C:\\Java\\Workspace\\Lab10\\Prob5\\date.csv"; String thisLine; int i = 0; float media; FileInputStream fis = new FileInputStream(fName);

Page 38: TEMA IP

DataInputStream myInput = new DataInputStream(fis); while ((thisLine = myInput.readLine()) != null) { String strar[] = thisLine.split("#"); for(int j=0;j<strar.length;j++) { media =((Float.parseFloat(strar[2])+Float.parseFloat(strar[3])+Float.parseFloat(strar[4])+Float.parseFloat(strar[5])+Float.parseFloat(strar[6]))/5); if(i==0){ if(j==0 && media>=8) { String[] names = {strar[j]}; Arrays.sort(names); System.out.print("Studentul: "+names[j]+" din anul de studiu: "+strar[1]+" are media: "); System.out.print(media); System.out.println(); } } } } } }Mihnea Andreea#2#5#8#6#4#7Ion Pitt#2#7#6#5#9#10Ulici Ion#3#8#8#9#10#9Puicar Izabela#4#2#2#10#10#6Covaci Iulian#1#6#6#6#10#7CSV/*7. Cititi dintr-un fisier text o imagine grayscale reprezentata ca o matrice de intregi. Imaginea este urmata de mai multe filtre de convolutie. Aplicati aceste filtre pe imaginea originala si afisati atat imaginea originala cat si imaginile rezultate.*/import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;import java.awt.Toolkit;import java.awt.image.BufferedImage;

import java.awt.image.BufferedImageOp;import java.awt.image.ConvolveOp;import java.awt.image.Kernel;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.JFrame;import javax.swing.JPanel;public class ImageProcessing extends JPanel { private static final long serialVersionUID = 1L; public String getName() { return "Image Processing"; } Image image;public ImageProcessing() { image = Toolkit.getDefaultToolkit().getImage("C:\\Java\\Workspace\Lab10Pb7\\Poza.jpg"); }

static String[] filterNames = new String[] { "Original","Blur", "Sharpen", "Edge Detect"}; static BufferedImageOp[] filters = new BufferedImageOp[] { null, new ConvolveOp(new Kernel(3, 3, new float[] { 1f, 2f, 1f, 2f, 4f, 2f, 1f, 2f, 1f})), new ConvolveOp(new Kernel(3, 3, new float[] { -1f, -1f, -1f, -1f, 9f, -1f, -1f, -1f, -1f })), new ConvolveOp(new Kernel(3, 3, new float[] {-1f, -1f, -1f, -1f, 8f, -1f, -1f, -1f, -1f}))}; public void paint(Graphics g1) { Graphics2D g = (Graphics2D) g1; BufferedImage bimage = new BufferedImage(image.getWidth(this), image.getHeight(this), BufferedImage.TYPE_INT_RGB); Graphics2D ig = bimage.createGraphics(); ig.drawImage(image, 0, 0, this); g.setFont(new Font("SansSerif", Font.BOLD, 12)); g.setColor(Color.red); g.translate(10, 10);

Page 39: TEMA IP

for (int i = 0; i < filters.length; i++) { if (filters[i] == null) g.drawImage(bimage, 0, 0, this); else g.drawImage(filters[i].filter(bimage, null), 0, 0, this); g.drawString(filterNames[i], 0, 205); g.translate(137, 0); } } public static void main(String[] a) { JFrame f = new JFrame(); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); f.setContentPane(new ImageProcessing()); f.pack(); f.setVisible(true); }}Tema 11

1. Sa se scrie o aplicatie Java distribuita folosind o conexiune fara confirmare (datagrame) care permite autentificarea utilizatorilor. Utilizatorul va trimite numele ca si datagrama iar aplicatia server asculta pentru mesaje de autentificare timp de 25 secunde, la finalul carora trimite clientului un mesaj de notificare. Aplicatia returneaza un mesaj personalizat numelui utilizatorului in caz de autentificare reusita, clientul afisand mesajul. (se va folosi metoda etSoTimeout(ss) pentru stabilirea timpului de ascultare la socketul serverului) import java.io.*;import java.net.*;public class UDPClient {public static void main(String[] args){try{

DatagramSocket socket=new DatagramSocket();

System.out.println("Socket initializat.client");

String toSend="anca";byte[] buff=toSend.getBytes();DatagramPacket pt=new

DatagramPacket(buff,buff.length,InetAddress.getByName("127.0.0.1"),1234);

socket.send(pt);byte[] buffer=new byte[256];DatagramPacket pp=new

DatagramPacket(buffer,buffer.length,InetAddress.getByName("127.0.0.1"),1234);

socket.receive(pp);System.out.println("Client:Am primit

mesajul: "+new String(buffer));}catch(SocketException e){}catch(UnknownHostException er){}catch(IOException ioe){}

}}import java.io.*;import java.net.*;public class UDPServer {public static void main(String[] args){try{

DatagramSocket socket=new DatagramSocket(1234);

System.out.println("Socket initializat.server");

byte[] buff=new byte[256];DatagramPacket mp=new

DatagramPacket(buff,buff.length);socket.setSoTimeout(25000);

socket.receive(mp); String nume="anca"; String mesaj=new String(buff); System.out.println("Server: Am primit mesajul: "+mesaj); if(mesaj.contentEquals(nume)) {String toSend="Buna!"; byte[] buffer=toSend.getBytes(); DatagramPacket mt = new DatagramPacket(buffer, buffer.length, mp.getAddress(), mp.getPort()); socket.send(mt); } else {String toSend="Neautorizat";

Page 40: TEMA IP

byte[] buffer=toSend.getBytes(); DatagramPacket mt = new DatagramPacket(buffer, buffer.length, mp.getAddress(), mp.getPort()); socket.send(mt); }}catch(SocketException e){}catch(IOException ioe){}

}}3. Sa se scrie o aplicatie Java distribuita care foloseste o conexiune fara confirmare (datagrame). Aplicatia server primeste de la client numele unui fisier text existent pe server (intr-un director prestabilit numit "root" initializat cu o adresa valida intr-un String), pe care il transmite clientului in format text (datele se citesc sub format text). Clientul regenereaza fisierul cerut.import java.io.*;import java.net.*;public class FileClient {

public static void main(String[] args){

try{InetAddress

adresa=InetAddress.getLocalHost();DatagramSocket socket=new

DatagramSocket(2006);byte[]

buff="acesta.txt".getBytes();DatagramPacket pacht=new

DatagramPacket(buff,buff.length,adresa ,2005);socket.send(pachet);

byte[] buff2=new byte[15];DatagramPacket primim=new

DatagramPacket(buff2,buff2.length);socket.receive(primim);String str=new String(buff2);System.out.println(str);FileOutputStream out=new

FileOutputStream("final.txt"); out.write(buff2,0,buff2.length); out.close(); socket.close(); }

catch(SocketException e){} catch(IOException ioe){}}

}

import java.io.*;import java.net.*;public class FileServer { public static void main(String[] args) {

String root=""; try{

DatagramSocket socket=new DatagramSocket(2005);

byte[] buff=new byte[256]; DatagramPacket cerere=new

DatagramPacket(buff,buff.length); socket.receive(cerere);

String cale=new String(buff); String path=root+cale; System.out.println("calea este:

"+path); File f=new File(path); FileInputStream trimite=new

FileInputStream(f); byte[] fisier=new

byte[(int)f.length()]; trimite.read(fisier); InetAddress

adresa=InetAddress.getLocalHost(); DatagramPacket raspuns=new

DatagramPacket(fisier,fisier.length,adresa,2006) socket.send(raspuns); socket.close(); trimite.close();

} catch(SocketException e){} catch(IOException ioe){}

}}4. Sa se realizeze o aplicatie Java distribuita folosind o conexiune cu confirmare (TCP/IP) care reprezinta un server de raspuns automat. La receptia mesajului "/getProperties" serverul trimite un raspuns clientului continand proprietatile sistemului, la receptia mesajului "/getTime" serverul raspunde cu un mesaj continand ora serverului. Conexiunea este inchisa de aparitia mesajului "#exit". (Serverul transmite ca String datele folosind metodele System.getProperties().toString() si new Date().toString()) import java.io.BufferedReader;

Page 41: TEMA IP

import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.Socket;import java.net.UnknownHostException;public class TCPClient { //portul folosit pentru conexiune public int port = 1234; //hostul destinatie private String destinatie; //socketul client private Socket client;

//stream-uri pentru comunicarea cu serverul private BufferedReader fromServer; private PrintStream toServer; /** * Seteaza hostul destinatie. * @param destinatie numele hostului. */ public void setHostName(String destinatie){ this.destinatie = destinatie; } /** * Initializeaza aplicatia client si se conecteaza la server. */ public void conecteaza_te(){ if(destinatie == null){ System.out.println("Hostul destinatie nu este specificat !"); return; } try { System.out.println("Incerc conexiunea la server..."); //initializeaza clientul client = new Socket(destinatie, port); System.out.println("M-am conectat la serverul : " + destinatie); //creez stream-urile pentru scriere/citire mesaje fromServer = new BufferedReader(new InputStreamReader(client.getInputStream())); toServer = new PrintStream(client.getOutputStream()); } catch (UnknownHostException e) { System.out.println("Host necunoscut !"); e.printStackTrace(); } catch (IOException e) { System.out.println("Conectiunea nu poate fi realizata !");

e.printStackTrace(); } } /** * Trimite un mesaj la Server. * @param mesaj mesajul de trimis la server. */ public void trimiteMesaj(String mesaj){ if(toServer == null){ System.out.println("Conexiune cu serverul indisponibila !"); return; } //scrie mesajul toServer.println(mesaj); } /** * Asculta, citeste si afiseaza mesajul de la server. */ public String citesteMesaj(){ String mesaj=new String(); if(fromServer == null){ String msg="Conexiune cu serverul indisponibila !"; return msg; } try { //citeste mesaj mesaj = fromServer.readLine(); } catch (IOException e) { System.out.println("Nu am putut citi mesajul de la server!"); e.printStackTrace(); } return mesaj; } /** * Inchide conexiunea cu serverul. */ public void inchideConexiunea(){ try { client.close(); fromServer.close(); toServer.close(); } catch (IOException e) { e.printStackTrace(); } } }public class ClientStarter {

Page 42: TEMA IP

public static void main(String[] args) { String mes=new String(); int nr; //creez aplicatia client TCPClient client = new TCPClient(); //seteaza hostul destinatie client.setHostName("localhost"); //realizeaza conexiunea la server client.conecteaza_te(); String mesaj1="getProperties"; String mesaj2="getTime"; String mesaj3="exit"; client.trimiteMesaj(mesaj1); mes=client.citesteMesaj(); System.out.println("Mesajul receptionat este: "+mes); client.trimiteMesaj(mesaj2); mes=client.citesteMesaj(); System.out.println("Mesajul receptionat este: "+mes); client.trimiteMesaj(mesaj3); //inchid conexiunea cu serverul client.inchideConexiunea(); }}import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.ServerSocket;import java.net.Socket;import java.sql.Date;/** * Exemplu de aplicatie distribuita care foloseste o conexiune tcp/ip * pentru schimbul de mesaje de tip String. * * Clasa implementeaza aplicatia server, care permite * conectarea si schimbul de mesaje cu aplicatiile client. * * @author Calin-Gligor Loghin */public class TCPServer { //portul folosit pentru conexiune public int port = 1234; //socketul server private ServerSocket server; //socketul client private Socket client; //stream-uri pentru comunicarea cu clientul private BufferedReader fromClient;

private PrintStream toClient; //** * Creeaza serverul si asculta cererile pentru conexiune ale clientilor. */ public void startServer(){ System.out.println("Initializez aplicatia server ..."); try { //initializeaza serverul server = new ServerSocket(port); System.out.println("Ascult pentru conexiunea clientului ..."); //asculta pentru conexiunile clientilor client = server.accept(); System.out.println("Clientul " + client.getInetAddress().getHostName() + " conectat !"); //creez stream-urile pentru scriere/citire mesaje fromClient = new BufferedReader(new InputStreamReader(client.getInputStream())); toClient = new PrintStream(client.getOutputStream());

} catch (IOException e) { System.out.println("Serverul nu a putut fi creat !"); e.printStackTrace(); } } //** * Trimite un mesaj la client. * @param mesaj mesajul de trimis la client. */ public void trimiteMesaj(String mesaj){ if(toClient == null){ System.out.println("Conexiune cu clientul indisponibila !"); return; } //scrie mesajul toClient.println(mesaj); } /** * Asculta, citeste si afiseaza mesajul de la client. */ public String citesteMesaj(){ String mesaj=new String(); if(fromClient == null){ String msg="Conexiune cu clientul indisponibila !";

Page 43: TEMA IP

return msg; } try { //citeste mesaj mesaj = fromClient.readLine(); } catch (IOException e) { System.out.println("Nu am putut citi mesajul de la client!"); e.printStackTrace(); } return mesaj; } /** * Inchide conexiunea cu clientul. */ public void inchideConexiunea(){ try { client.close(); server.close(); fromClient.close(); toClient.close(); } catch (IOException e) { e.printStackTrace(); } } }import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.ServerSocket;import java.net.Socket;import java.sql.Date;public class ServerStarter { public static void main(String[] args) { //intializez serverul TCPServer server = new TCPServer(); //pornesc serverul server.startServer(); //citesc mesaj de la clientul conectat String mesaj1 = new String(); String crtMsg=new String(); mesaj1=server.citesteMesaj(); if(mesaj1.compareTo("getProperties")==0) {crtMsg=System.getProperties().toString(); server.trimiteMesaj(crtMsg);} mesaj1=server.citesteMesaj(); if(mesaj1.compareTo("getTime")==0) {crtMsg=new Date(0).toString(); server.trimiteMesaj(crtMsg);} //inchid conexiunea cu clientul

server.inchideConexiunea(); }}5. Sa se implementeze o aplicatie distribuita care permite trimiterea catre server a unui nume de director/fisier sau a comenzii ”#exit” pentru inchiderea conexiunii. Daca directorul cerut exista, serverul trimite clientului continutul acestuia. Daca locatia specificata este un fisier, se trimit clientului marimea acestuia si data crearii. Daca fisierul/directorul nu exista se trimite clientului un mesaj corespunzator. Conexiunea este folosita atat timp cat clientul doreste acest lucru.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.ServerSocket;import java.net.Socket;import java.sql.Date;

/** * Exemplu de aplicatie distribuita care foloseste o conexiune tcp/ip * pentru schimbul de mesaje de tip String. * * Clasa implementeaza aplicatia server, care permite * conectarea si schimbul de mesaje cu aplicatiile client. * * @author Calin-Gligor Loghin */public class TCPServer { //portul folosit pentru conexiune public int port = 2014; //socketul server private ServerSocket server; //socketul client private Socket client; //stream-uri pentru comunicarea cu clientul private BufferedReader fromClient; private PrintStream toClient; /** * Creeaza serverul si asculta cererile pentru conexiune ale clientilor. */ public void startServer(){

Page 44: TEMA IP

System.out.println("Initializez aplicatia server ..."); try { //initializeaza serverul server = new ServerSocket(port); System.out.println("Ascult pentru conexiunea clientului ..."); //asculta pentru conexiunile clientilor client = server.accept(); System.out.println("Clientul " + client.getInetAddress().getHostName() + " conectat !"); //creez stream-urile pentru scriere/citire mesaje fromClient = new BufferedReader(new InputStreamReader(client.getInputStream())); toClient = new PrintStream(client.getOutputStream());

} catch (IOException e) { System.out.println("Serverul nu a putut fi creat !"); e.printStackTrace(); } } /** * Trimite un mesaj la client. * @param mesaj mesajul de trimis la client. */ public void trimiteMesaj(String mesaj){ if(toClient == null){ System.out.println("Conexiune cu clientul indisponibila !"); return; } //scrie mesajul toClient.println(mesaj); } public void trimiteMesaj(long mesaj){ if(toClient == null){ System.out.println("Conexiune cu clientul indisponibila !"); return;

} //scrie mesajul toClient.println(mesaj); } /** * Asculta, citeste si afiseaza mesajul de la client. */ public String citesteMesaj(){ String mesaj=new String(); if(fromClient == null){ String msg="Conexiune cu clientul indisponibila !"; return msg; } try { //citeste mesaj mesaj = fromClient.readLine(); } catch (IOException e) { System.out.println("Nu am putut citi mesajul de la client!"); e.printStackTrace(); } return mesaj; } /** * Inchide conexiunea cu clientul. */ public void inchideConexiunea(){ try { client.close(); server.close(); fromClient.close(); toClient.close(); } catch (IOException e) { e.printStackTrace(); } } }import java.io.*;import java.net.ServerSocket;import java.net.Socket;import java.sql.Date;

Page 45: TEMA IP

public class ServerStarter {

public static void main(String[] args) { //intializez serverul TCPServer server = new TCPServer(); //pornesc serverul server.startServer(); //citesc mesaj de la clientul conectat String mesaj1 = new String(); mesaj1=server.citesteMesaj(); boolean exists = (new File(mesaj1)).exists(); if (exists) { server.trimiteMesaj("Directorul exista."); File dir=new File(mesaj1); File[] files = dir.listFiles(); server.trimiteMesaj(files[0].getName()); server.trimiteMesaj(files[1].getName()); server.trimiteMesaj(files[2].getName()); } else { System.out.println("Directorul nu exista."); } mesaj1=server.citesteMesaj(); File fis=new File(mesaj1); long l=fis.length(); server.trimiteMesaj(l); //inchid conexiunea cu clientul server.inchideConexiunea(); }}import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.Socket;import java.net.UnknownHostException;

/** * Exemplu de aplicatie distribuita care foloseste o conexiune tcp/ip * pentru schimbul de mesaje de tip String. * * Clasa implementeaza aplicatia client, care permite

* conectarea si schimbul de mesaje cu aplicatia server. * * @author Calin-Gligor Loghin * */public class TCPClient {

//portul folosit pentru conexiune public int port = 2014; //hostul destinatie private String destinatie; //socketul client private Socket client;

//stream-uri pentru comunicarea cu serverul private BufferedReader fromServer; private PrintStream toServer; /** * Seteaza hostul destinatie. * @param destinatie numele hostului. */ public void setHostName(String destinatie){ this.destinatie = destinatie; } /** * Initializeaza aplicatia client si se conecteaza la server. */ public void conecteaza_te(){ if(destinatie == null){ System.out.println("Hostul destinatie nu este specificat !"); return; }try { System.out.println("Incerc conexiunea la server..."); //initializeaza clientul client = new Socket(destinatie, port); System.out.println("M-am conectat la serverul : " + destinatie);

Page 46: TEMA IP

//creez stream-urile pentru scriere/citire mesaje fromServer = new BufferedReader(new InputStreamReader(client.getInputStream())); toServer = new PrintStream(client.getOutputStream()); } catch (UnknownHostException e) { System.out.println("Host necunoscut !"); e.printStackTrace(); } catch (IOException e) { System.out.println("Conectiunea nu poate fi realizata !"); e.printStackTrace(); } } /** * Trimite un mesaj la Server. * @param mesaj mesajul de trimis la server. */ public void trimiteMesaj(String mesaj){ if(toServer == null){ System.out.println("Conexiune cu serverul indisponibila !"); return; } //scrie mesajul toServer.println(mesaj); } /** * Asculta, citeste si afiseaza mesajul de la server. */ public String citesteMesaj(){ String mesaj=new String(); if(fromServer == null){ String msg="Conexiune cu serverul indisponibila !"; return msg; } try { //citeste mesaj mesaj = fromServer.readLine();

} catch (IOException e) { System.out.println("Nu am putut citi mesajul de la server!"); e.printStackTrace(); } return mesaj; } public long citesteMesajL(){ long mesaj=0; if(fromServer == null){ String msg="Conexiune cu serverul indisponibila !"; return mesaj; } try { //citeste mesaj mesaj = fromServer.read(); } catch (IOException e) { System.out.println("Nu am putut citi mesajul de la server!"); e.printStackTrace(); } return mesaj; }/** * Inchide conexiunea cu serverul. */ public void inchideConexiunea(){ try { client.close(); fromServer.close(); toServer.close(); } catch (IOException e) { e.printStackTrace(); } }}/** * * Exemplu de utilizare a aplicatiei client. * * @author Calin-Gligor Loghin *

Page 47: TEMA IP

*/public class ClientStarter {

public static void main(String[] args) { String mes=new String(); int nr; //creez aplicatia client TCPClient client = new TCPClient(); //seteaza hostul destinatie client.setHostName("localhost"); //realizeaza conexiunea la server client.conecteaza_te(); String mesaj1="E:\\doc\\An III\\Sem I\\info\\workspace\\ex4_server\\src\\director"; String mesaj2="E:\\doc\\An III\\Sem I\\info\\workspace\\ex4_server\\src\\alina.txt"; String mesaj3="exit"; client.trimiteMesaj(mesaj1); mes=client.citesteMesaj(); System.out.println("Mesajul receptionat este: "+mes); mes=client.citesteMesaj(); System.out.println("Numele fisierului este: "+mes); mes=client.citesteMesaj(); System.out.println("Numele fisierului este: "+mes); mes=client.citesteMesaj(); System.out.println("Numele fisierului este: "+mes); client.trimiteMesaj(mesaj2); long mess=0; mess=client.citesteMesajL(); System.out.println("Lungimea fisierului este: "+mess); client.trimiteMesaj(mesaj3); //inchid conexiunea cu serverul client.inchideConexiunea(); }}

6. Sa se scrie o aplicatie client-server in care, odata conectat, clientul cere si primeste o serie de numere generate aleator de catre server. Procesul este intrerupt de catre client cand suma numerelor primite depaseste un anumit prag citit de la tastatura

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.ServerSocket;import java.net.Socket;

/** * Exemplu de aplicatie distribuita care foloseste o conexiune tcp/ip * pentru schimbul de mesaje de tip String. * * Clasa implementeaza aplicatia server, care permite * conectarea si schimbul de mesaje cu aplicatiile client. * * @author Calin-Gligor Loghin */

public class TCPServer {

//portul folosit pentru conexiune public int port = 1234; //socketul server private ServerSocket server; //socketul client private Socket client; //stream-uri pentru comunicarea cu clientul private BufferedReader fromClient; private PrintStream toClient; /** * Creeaza serverul si asculta cererile pentru conexiune ale clientilor. */ public void startServer(){ System.out.println("Initializez aplicatia server ..."); try {

Page 48: TEMA IP

//initializeaza serverul server = new ServerSocket(port); System.out.println("Ascult pentru conexiunea clientului ..."); //asculta pentru conexiunile clientilor client = server.accept(); System.out.println("Clientul " + client.getInetAddress().getHostName() + " conectat !"); //creez stream-urile pentru scriere/citire mesaje fromClient = new BufferedReader(new InputStreamReader(client.getInputStream())); toClient = new PrintStream(client.getOutputStream());

} catch (IOException e) { System.out.println("Serverul nu a putut fi creat !"); e.printStackTrace(); } } /** * Trimite un mesaj la client. * @param mesaj mesajul de trimis la client. */ public void trimiteMesaj(int mesaj){ if(toClient == null){ System.out.println("Conexiune cu clientul indisponibila !"); return; } //scrie mesajul toClient.println(mesaj); } /** * Asculta, citeste si afiseaza mesajul de la client. */ public String citesteMesaj(){ String mesaj=new String(); if(fromClient == null){

String msg="Conexiune cu clientul indisponibila !"; return msg; } try { //citeste mesaj mesaj = fromClient.readLine(); } catch (IOException e) { System.out.println("Nu am putut citi mesajul de la client!"); e.printStackTrace(); } return mesaj; } /** * Inchide conexiunea cu clientul. */ public void inchideConexiunea(){ try { client.close(); server.close(); fromClient.close(); toClient.close(); } catch (IOException e) { e.printStackTrace(); } } }/** * Exemplu de utilizare a aplicatiei server. * @author Calin-Gligor Loghin */import java.util.Random;public class ServerStarter {

public static void main(String[] args) { Random r=new Random(); int nr; //intializez serverul TCPServer server = new TCPServer(); //pornesc serverul server.startServer(); //citesc mesaj de la clientul conectat

Page 49: TEMA IP

String mesaj1 = new String(); mesaj1=server.citesteMesaj(); while(mesaj1!=null) { if(mesaj1.equals("nr")) { nr=r.nextInt(20); server.trimiteMesaj(nr);} else server.inchideConexiunea(); mesaj1=server.citesteMesaj(); } }}import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.Socket;import java.net.UnknownHostException;/** * Exemplu de aplicatie distribuita care foloseste o conexiune tcp/ip * pentru schimbul de mesaje de tip String. * Clasa implementeaza aplicatia client, care permite * conectarea si schimbul de mesaje cu aplicatia server.* @author Calin-Gligor Loghin */

public class TCPClient { //portul folosit pentru conexiune public int port = 1234; //hostul destinatie private String destinatie; //socketul client private Socket client;

//stream-uri pentru comunicarea cu serverul private BufferedReader fromServer; private PrintStream toServer; /** * Seteaza hostul destinatie. * @param destinatie numele hostului. */ public void setHostName(String destinatie){ this.destinatie = destinatie; } /**

* Initializeaza aplicatia client si se conecteaza la server. */ public void conecteaza_te(){ if(destinatie == null){ System.out.println("Hostul destinatie nu este specificat !"); return;} try { System.out.println("Incerc conexiunea la server..."); //initializeaza clientul client = new Socket(destinatie, port); System.out.println("M-am conectat la serverul : " + destinatie); //creez stream-urile pentru scriere/citire mesaje fromServer = new BufferedReader(new InputStreamReader(client.getInputStream())); toServer = new PrintStream(client.getOutputStream()); } catch (UnknownHostException e) { System.out.println("Host necunoscut !"); e.printStackTrace(); } catch (IOException e) { System.out.println("Conectiunea nu poate fi realizata !"); e.printStackTrace(); } } /** * Trimite un mesaj la Server. * @param mesaj mesajul de trimis la server. */ public void trimiteMesaj(String mesaj){ if(toServer == null){ System.out.println("Conexiune cu serverul indisponibila !"); return; } //scrie mesajul toServer.println(mesaj); }

Page 50: TEMA IP

/** * Asculta, citeste si afiseaza mesajul de la server. */ public String citesteMesaj(){ String mesaj=new String(); if(fromServer == null){ String msg="Conexiune cu serverul indisponibila !"; return msg; } try { //citeste mesaj mesaj = fromServer.readLine(); } catch (IOException e) { System.out.println("Nu am putut citi mesajul de la server!"); e.printStackTrace(); } return mesaj; } /** * Inchide conexiunea cu serverul. */ public void inchideConexiunea(){ try { client.close(); fromServer.close(); toServer.close(); } catch (IOException e) { e.printStackTrace(); } } }

/** * * Exemplu de utilizare a aplicatiei client. * * @author Calin-Gligor Loghin * */public class ClientStarter {

public static void main(String[] args) { int suma=0; int prag= 30; String mes=new String();

int nr; //creez aplicatia client TCPClient client = new TCPClient(); //seteaza hostul destinatie client.setHostName("localhost"); //realizeaza conexiunea la server client.conecteaza_te(); String mesaj1 = "nr"; while(suma<prag) {client.trimiteMesaj(mesaj1); mes=client.citesteMesaj(); System.out.println("numarul trimis este: "+mes); nr=Integer.parseInt(mes); suma=suma+nr; } System.out.println("Suma citita este: "+suma); //inchid conexiunea cu serverul client.inchideConexiunea(); }}


Recommended