Sunteți pe pagina 1din 7

Instruciuni elementare (atribuire, decizie, repetare)

Cap. 1 Instruciuni elementare (atribuire, decizie, repetare)


1. S se calculeze i afieze cte numere naturale de patru cifre, mprite la 67, dau restul 23. class Raspuns { public static void main(String args[]) { int contor=0; for(int i=1000;i<=9999;i++) if(i%67==23)contor++; System.out.println("Sunt "+contor+" numere."); } } 2. Scriei o aplicaie Java care s reconstituie scderea: XXX X 2X --------8 7 9 import javax.swing.*; class Scadere { public static void main(String args[]) { int u1,z1,s1; //cifre unitati, zeci, sute pentru primul termen int u2,s2; //cifre unitati, sute pentru al doilea termen boolean are=false; //semafor, are solutie for(u1=0;u1<=9;u1++) for(z1=0;z1<=9;z1++) for(s1=1;s1<=9;s1++) for(u2=0;u2<=9;u2++) for(s2=1;s2<=9;s2++){ int nr1=100*s1+10*z1+u1; int nr2=100*s2+20+u2; if(nr1-nr2==879){ are=true; System.out.println(nr1+"-"+nr2+"=879"); } } if(are==false)System.out.println("nu are solutie"); } }
3. S se calculeze valoare constantei PI, pe baza formulei:

pi/4=1-1/3+1/5-1/7+1/9-... Se vor lua N=3000 de termini n aceast sum. class Pi { public static void main(String args[]) { final int N=3000;//nr. de termeni ce se aduna double pi=0; for(int i=0;i<N;i++)

Instruciuni elementare (atribuire, decizie, repetare) if(i%2==0)pi=pi+4.0/(2*i+1); else pi=pi-4.0/(2*i+1); System.out.println("PI calculat ca suma de "+N+" termeni: "+pi); System.out.println("Constanta PI din clasa Math: "+Math.PI); }

} S se afieze toi divizorii unui numr ntreg dat ca parametru n linia de comand. class Divizori { public static void main(String args[]) { int nr=Integer.parseInt(args[0]); for(int i=1; i<=nr; i++) if(nr%i ==0)System.out.println(i); } }
4.

5. S se calculeze primul numr prim mai mare dect un numr dat ca parametru n linia de comand. class PrimulNrPrim { public static void main(String args[]) { int nr=Integer.parseInt(args[0]); int nrCrt=nr+1;//cautam incepand cu nr+1 for(;;){ if(estePrim(nrCrt)) break;//l-a gasit else nrCrt++; } System.out.println("Primul numar prim mai mare este: "+nrCrt); } private static boolean estePrim(int x) { boolean este=true; for(int i=2;i<=Math.sqrt(x);i++) if(x % i == 0){ este=false; break; } return este; } } Se citesc de la tastatur trei numere ntregi a, b i c. S se ordoneze aceste numere cresctoare, astfel nct a va fi minimul, iar n c va fi maximul. Citirea de la tastatur se va face cu metoda showInputDialog() din clasa JOptionPane. import javax.swing.*; class Ordonare3 { public static void main(String args[]) { int a=Integer.parseInt(JOptionPane.showInputDialog("a=")); int b=Integer.parseInt(JOptionPane.showInputDialog("b="));
6.

Instruciuni elementare (atribuire, decizie, repetare) int c=Integer.parseInt(JOptionPane.showInputDialog("c=")); if(a>b){ // le comutam: int aux=a; a=b; b=aux; } if(b>c){ //le comutam: int aux=b; b=c; c=aux; } if(a>c){ //le comutam: int aux=a;a=c; c=aux; } System.out.println(a+" "+b+" "+c); } }

7. Se citesc dou numere a i b. S se afieze dac cele dou numere au acelai numr total de divizori. import javax.swing.*; class Comparare { public static void main(String args[]) { int a=Integer.parseInt(JOptionPane.showInputDialog("a=")); int b=Integer.parseInt(JOptionPane.showInputDialog("b=")); int na=2; // numarul de divizori ai lui a // orice numar are ca diviyori pe 1 si el insusi for(int i=2;i<=a/2;i++) if(a%i==0)na++; int nb=2; // numarul de divizori ai lui b for(int i=2;i<=b/2;i++) if(b%i==0)nb++; if(na>nb)System.out.println(a+" are mai multi divizori "); else if(na==nb)System.out.println("acelasi numar de divizori "); else System.out.println(b+" are mai multi divizori "); } } Se citete un numr natural a. S se afieze dac este ptrat perfect sau nu. import javax.swing.*; class PatratPerfect { public static void main(String args[]) { int a=Integer.parseInt(JOptionPane.showInputDialog("a=")); double radical=Math.sqrt(a); if((int)radical*(int)radical==a) System.out.println("este"); else System.out.println("nu este"); } }
8.

Instruciuni elementare (atribuire, decizie, repetare) 9. Se citesc n1 i n2 capetele unui interval nchis. S se afieze dac n intervalul [n1, n2], exist cel puin un numr prim. import javax.swing.*; class ExistaNumerePrime { public static void main(String args[]) { int n1=Integer.parseInt(JOptionPane.showInputDialog("n1=")); int n2=Integer.parseInt(JOptionPane.showInputDialog("n2=")); boolean exista=false; for(int i=n1;i<=n2;i++) if(estePrim(i)){ exista=true; break; } if(exista)System.out.println("exista"); else System.out.println("nu exista"); } private static boolean estePrim(int nr){ for(int i=2;i<=Math.sqrt(nr);i++) if(nr%i==0)return false; return true; } } 10. Se citete un numr natural de la tastatur. S se afieze care este cifra maxim din acest numr. import javax.swing.*; class CifraMaxima { public static void main(String args[]) { int a=Integer.parseInt(JOptionPane.showInputDialog("a=")); int max=0; for(;;){ int cifraCrt=a%10; if(cifraCrt>max)max=cifraCrt; a=a/10;//reduc numarul: if(a==0)break; } System.out.println(max); } } Se citesc trei numere ntregi a, b i c, de la tastatur. S se calculeze maximul dintre a i b (se va folosi metoda definit separat maxim(), ce are doi parametrii) i maximul dintre a, b i c (se va folosi metoda definit separate maxim(), ce are trei parametrii). Aceast aplicaie ilustreaz polimorfismul parametric n Java (posibilitatea ca n aceeai clas s existe dou sau mai multe metode cu acelai nume, dar cu liste de parametrii diferii). import javax.swing.*; class CalculMaxim { public static void main(String args[]) { int a=Integer.parseInt(JOptionPane.showInputDialog("a="));
11.

10

Instruciuni elementare (atribuire, decizie, repetare) int b=Integer.parseInt(JOptionPane.showInputDialog("b=")); int c=Integer.parseInt(JOptionPane.showInputDialog("c=")); int max2=maxim(a,b); System.out.println(max2); int max3=maxim(a,b,c); System.out.println(max3); } private static int maxim(int a,int b){ if(a>=b)return a; else return b; } private static int maxim(int a,int b,int c){ int max=a; if(b>max)max=b; if(c>max)max=c; return max; } }

11

12. Se citete un numr natural n. Se citesc primul termen i raia unei progresii aritmetice. S se calculeze, recursiv, termenul de rang n al progresiei. import javax.swing.*; class ProgresieAritmetica { public static void main(String args[]) { double a1=Double.parseDouble(JOptionPane.showInputDialog( "primul termen al progresiei=")); double r=Double.parseDouble(JOptionPane.showInputDialog( "ratia =")); int n=Integer.parseInt(JOptionPane.showInputDialog("n =")); //calcul termen de rang n: double a_n=calcul(a1,r,n); System.out.print("Termenul de rang "+n+" este: "+a_n); } private static double calcul(double primulTermen, double ratia, int n) { if(n==1)return primulTermen; return ratia+calcul(primulTermen,ratia,n-1); } } 13. Se citete un numr natural N. S se calculeze termenul de rang N din irul lui Fibonacci. irul lui Fibonacci se definete recursiv astfel: a0= 1 a1=1 an=an-1+an-2 , pentru n>=2 import javax.swing.*; class Fibonacci { public static void main(String args[]) { int N=Integer.parseInt(JOptionPane.showInputDialog("N="));

12

Instruciuni elementare (atribuire, decizie, repetare) System.out.println(fib(N));

} private static int fib(int n){ if(n==0)return 1; if(n==1)return 1; return fib(n-1)+fib(n-2); } } 14. Se citete un numr natural N. S se afieze dac acest numr este termen n irul lui Fibonacci. import javax.swing.*; class EsteFibonacci { public static void main(String args[]) { int x=Integer.parseInt(JOptionPane.showInputDialog("x=")); boolean este=false; int n=0; for(;;){ int termen=fib(n); if(x==termen){ este=true; break; } if(x<termen)break; //deci, nu este // trecem la urmatorul termen Fibonacci: n++; } if(este)System.out.println("este"); else System.out.println("nu este"); } private static int fib(int n){ if(n==0)return 1; if(n==1)return 1; return fib(n-1)+fib(n-2); } } 15. Se citete un numr natural N. S se calculeze suma primilor N termeni din irul lui Fibonacci. import javax.swing.*; class SumaFib { public static void main(String args[]) { int N=Integer.parseInt(JOptionPane.showInputDialog("N=")); int suma=0; for(int i=0;i<N;i++) suma=suma+fib(i); System.out.println(suma); } private static int fib(int n){ if(n==0)return 1; if(n==1)return 1; return fib(n-1)+fib(n-2); }

Instruciuni elementare (atribuire, decizie, repetare) }

13