Lab.
2
Instrucţiuni elementare : atribuire, decizie, repetare (II)
1. Se citeşte un număr natural a. Să se afişeze dacă este pătrat perfect sau nu.
import [Link].*;
class PatratPerfect
{
public static void main(String args[])
{
int a=[Link]([Link]("a="));
double radical=[Link](a);
if((int)radical*(int)radical==a)
[Link]("este");
else [Link]("nu este");
}
}
2. Se citesc n1 şi n2 capetele unui interval închis. Să se afişeze dacă în intervalul [n1,
n2], există cel puţin un număr prim.
import [Link].*;
class ExistaNumerePrime
{
public static void main(String args[])
{
int n1=[Link]([Link]("n1="));
int n2=[Link]([Link]("n2="));
boolean exista=false;
for(int i=n1;i<=n2;i++)
if(estePrim(i)){
exista=true;
break;
}
if(exista)[Link]("exista");
else [Link]("nu exista");
}
private static boolean estePrim(int nr){
for(int i=2;i<=[Link](nr);i++)
if(nr%i==0)return false;
return true;
}
}
3. Se citeşte un număr natural de la tastatură. Să se afişeze care este cifra maximă din
acest număr.
import [Link].*;
class CifraMaxima
{
1
public static void main(String args[])
{
int a=[Link]([Link]("a="));
int max=0;
for(;;){
int cifraCrt=a%10;
if(cifraCrt>max)max=cifraCrt;
a=a/10;//reduc numarul:
if(a==0)break;
}
[Link](max);
}
}
4. 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ă aplicaţie
ilustrează polimorfismul parametric în Java (posibilitatea ca în aceeaşi clasă să existe două
sau mai multe metode cu acelaşi nume, dar cu liste de parametrii diferiţi).
import [Link].*;
class CalculMaxim
{
public static void main(String args[])
{
int a=[Link]([Link]("a="));
int b=[Link]([Link]("b="));
int c=[Link]([Link]("c="));
int max2=maxim(a,b);
[Link](max2);
int max3=maxim(a,b,c);
[Link](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;
}
}
5. Se citeşte un număr natural n. Se citesc primul termen şi raţia unei progresii
aritmetice. Să se calculeze, recursiv, termenul de rang n al progresiei.
import [Link].*;
class ProgresieAritmetica
2
{
public static void main(String args[])
{
double a1=[Link]([Link](
"primul termen al progresiei="));
double r=[Link]([Link](
"ratia ="));
int n=[Link]([Link]("n ="));
//calcul termen de rang n:
double a_n=calcul(a1,r,n);
[Link]("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);
}
}
6. Se citeşte un număr natural N. Să se calculeze termenul de rang N din şirul lui
Fibonacci.
Şirul lui Fibonacci se defineşte recursiv astfel:
a0= 1
a1=1
an=an-1+an-2 , pentru n>=2
import [Link].*;
class Fibonacci
{
public static void main(String args[])
{
int N=[Link]([Link]("N="));
[Link](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);
}
}
Tema
7. Se citeşte un număr natural N. Să se afişeze dacă acest număr este termen în şirul lui
Fibonacci.
8. Se citeşte un număr natural N. Să se calculeze suma primilor N termeni din şirul lui
Fibonacci.