Sunteți pe pagina 1din 212

ISTRUCTIUNEA IF

PROBLEMA 1.1.1
Se considera trei numere intregi.Sa se scrie
un program care determina numarul mai mare.

Program P1_1;
Uses crt;
Var a,b,c,d,f:integer;
Begin
clrscr;
Writeln('introdu numerele a,b,c:');
Readln(a,b,c);
If a>b Then d:=a Else d:=b;
If c>d Then f:=c Else f:=d;
Writeln('f=', f);
Readkey;
End.

1
PROBLEMA 2.1.2
Se considera patru numere intregi.Sa se
scrie un program care determina numarul mai
mic.

Program P1_2;
Uses crt;
Var a,b,c,d,f,e,g:integer;
Begin
clrscr;
Writeln('introdu numerele a,b,c,d:');
Readln(a,b,c,d);
If a<b Then f:=a Else f:=b;
If c<d Then e:=c Else e:=d;
If f<e Then g:=f Else g:=e;
Writeln('g=', g);
Readkey;
End.

2
PROBLEMA 3.1.3
Se considera doua numere intregi.Daca primul
numar este negativ , atunci suma lor se
micsoreaza de 5 ori,in caz contrar-se
mareste de 5 ori.

Program P1_3;
Uses crt;
Var a,b:integer;
x:real;
Begin
clrscr;
Writeln('introdu numerele a,b:');
Readln(a,b);
If a<0 Then x:=(a+b)/5
Else x:=5*(a+b);
Writeln(x:5:4);
Readkey;
End.

3
PROBLEMA 4.1.4
Se considera doua numere intregi.Daca primul
numar este mai mare decit modulul celui de-
al doi lea numar,atunci primul numar se
micsoreaza de trei ori,in caz contrar nu-
merele ramin neschimbate.

Program P1_4;
Uses crt;
Var a,b:integer;
x:real;
Begin
clrscr;
Writeln('introdu numerele a,b:');
Readln(a,b);
If a>abs(b) Then x:=a/3
Else
Begin
a:=a;
b:=b;
End;
Writeln(x:5,a:5,b:5);
Readkey;
End.

4
PROBLEMA 5.1.5
Se considera doua numere intregi.Daca primul
numar este mai mare decit modulul celui de-
al doilea numar,atunci primul numar se mic-
soreaza de trei ori,in caz contrar numerele
ramin neschimbate.

Program P1_5;
Uses crt;
Var a,b:integer;
x:real;
Begin
clrscr;
Writeln('Introdu numerele a, b:');
Readln(a,b);
If a>abs(b) Then x:=a/3
Else Writeln(a:5,b:5);
Writeln(x:5);
Readln;
Readkey;
End.

5
PROBLEMA 6.1.6;
Se considera doua numere intregi.Daca primul
numar este pozitiv, atunci el se mareste cu
100,in caz contrar numerele ramin neschimba-
te.

Program P1_6;
Uses crt;
Var a,b:integer;
Begin
Clrscr;
Writeln('Introdu numarul a=');
Readln(a);
Writeln('Introdu numarul b=');
Readln(b);
If a>0 Then Writeln(a+100,' ',b)
Else Writeln(a,' ',b);
Readln;
Readkey;
End.

6
PROBLEMA 7.1.7
Se considera doua numere intregi diferite.Sa
se afiseze numerele in urmatoarea ordine:mai
intii cel mai mare, apoi cel mai mic.

Program P1_7;
Uses crt;
Var a,b,aux:integer;
Begin
clrscr;
Writeln('Introdu numerele a, b:');
Readln(a,b);
If a>b Then
Begin
aux:=a;
a:=b;
b:=aux;
End;
Writeln(a,' ',b);
Readln;
Readkey;

7
End.

PROBLEMA 8.1.8
Se considera doua numere intregi.Sa se afise
primul numar, daca el este mai mare decit al
doilea,in caz contrar sa se afiseze ambele
numere.

Program P1_8;
Uses crt;
Var a,b:integer;
Begin
clrscr;
Writeln('Introdu numerele a, b:');
Readln(a,b);
If a>b Then Write('a=',a)
Else Writeln(a:5,b:5);
Readln;
Readkey;
End.

8
PROBLEMA 9.1.9
Se considera trei numere intregi.Sa se ridi-
ce la patrat numerele negative,celelalte ra-
minind neschimbate.

Program P1_9;
Uses crt;
Var a,b,c:integer;
x,y,z:real;
Begin
clrscr;
Writeln('Introdu numerele a, b,c:');
Readln(a,b,c);
If a<0 Then Begin
x:=a*a;
Writeln(x:5:4);
End

9
Else Writeln(a:5);
If b<0 Then Begin
y:=b*b;
Writeln(y:5:4);
End
Else Writeln(b:5);
If c<0 Then Begin
z:=c*c;
Writeln(z:5:4);
End
Else Writeln(c:5);
Readln;
Readkey;
End.

PROBLEMA 10.1.10
Se considera trei numere intregi.Daca toate
sunt pozitive sa se afiseze numarul mai mare
dintre al doilea si al treilea numar,in caz
contrar sa se calculeze media aritmetica a
primelor doua numere.

Program P1_10;
Uses crt;
Var a,b,c,k:integer;
s:real;
Begin
clrscr;
Writeln('Introdu numerele a, b,c:');
Readln(a,b,c);
If (a>0) and (b>0) and (c>0)

10
Then Begin
If b>c Then k:=b Else k:=c;
Writeln(k:5);
End
Else s:=a+b;
Writeln(s:5:4);
Readln;
Readkey;
End.

PROBLEMA 11.1.11
Se considera trei numere intregi.Daca suma
primelor doua este pozitiva, atunci sa se
afiseze numerele in ordine crescatoare,in
caz contrar sa se afiseze numarul maxim din-
tre ultimele doua numere.

Program P1_11;
Uses crt;
Var a,b,c,t,k:integer;
s:real;
Begin
clrscr;
Writeln('Introdu numerele a, b,c:');

11
Readln(a,b,c);
s:=a+b;
If s>0 Then Begin
If a>b Then
Begin t:=a;a:=b;b:=t;End;
If b>c Then Begin t:=b;b:=c;c:=t;End;
If a>b Then Begin t:=a;a:=b;b:=t;End;
Writeln(a:5,b:5,c:5)
End
Else Begin If b>c Then k:=b Else
k:=c;
Writeln(k:5);
End;
Readln;
Readkey;
End.

PROBLEMA P12.1.12
Se considera trei numere intregi ,doua
dintre care sunt egale. Sa se scrie un
program care afiseaza numarul diferit de
celelalte doua.

Program P1_12;
Uses crt;
Var a,b,c:integer;
Begin
Clrscr;
Writeln('Intodu numerelea,b,c:');

12
Readln(a,b,c);
If a=b Then Write('Numarul diferit
este:',c);
If a=c Then Write('Numarul diferit
este:'b);
If c=b Then Write('Numarul diferit
este:'a);
Readkey;
Readln;
End.

PROBLEMA 13.1.13
Sa se scrie un program care citeste doua nu-
mere intregi x,y si afiseaza 0,daca numerele
citite sunt egale,afiseaza 1,daca primul es-
te mai mic decit al doilea si afiseaza 2,
daca primul numar este mai mare decit al do-
ilea.

Program P1_13;

13
Uses crt;
Var x,y:integer;
Begin
clrscr;
Writeln('Introdu numerele x, y:');
Readln(x,y);
If x=y Then Writeln('0');
If x<y Then Writeln('1');
If x>y Then Writeln('2');
Readln;
Readkey;
End.

Problema14.1.14
De la tastatura se citeste una din
urmatoare-le cifre romane:I,V,X,L,C,D,M.Sa
se scrie un program care afiseaza numarul
zecimal сores-punzator cifrei citite.

Program P13_2;

14
Uses crt;
Var i:integer;
c:char;
Begin
Clrscr;
i:=0;
Writeln('Intodu una din cifrele
I,V,X,L,C,D,M:');
Readln(c);
If c='I' Then i:=1;
If c='V' Then i:=5;
If c='X' Then i:=10;
If c='L' Then i:=50;
If c='C' Then i:=100;
If c='D' Then i:=500;
If c='M' Then i:=1000;
If i=0 Then
Writeln(c, '-nu este o cifra romana')
Else Writeln(i);
Readln;
End.

PROBLEMA 15.1.15
De la tastatura se introduce o litera din
alfabetul latin.Sa se determine daca litera
este vocala sau consoana.

15
Program P1_15;
Uses crt;
Var c:char;
Begin
clrscr;
Writeln('Introdu caracterul c:');
Readln(c);
If(c='B')or(c='C')or(c='D')or(c='E')
or(c='F')or(c='G')or(c='H')or(c='J')
or(c='K')or(c='L')or(c='M')or(c='N')
or(c='P')or(c='Q')or(c='R')or(c='S')
or(c='T')or(c='V')or(c='W')or(c='X')
or(c='Y')or(c='Z')or(c='b')or(c='c')
or(c='d')or(c='f')or(c='g')or(c='h')
or(c='j')or(c='k')or(c='l')or(c='m')
or(c='n')or(c='p')or(c='q')or(c='r')
or(c='s')or(c='t')or(c='v')or(c='w')
or(c='x')or(c='y')or(c='z')Then
Writeln('Consoana');
If (c='A')or(c='E')or(c='U')or(c='I')
or(c='O')or (c='a')or( c='e')or(c='u')
or(c='i')or(c='o')Then
Writeln('Vocala') ;
Readln;
Readkey;
End.

PROBLEMA 16.1.16
De la tastatura se introduce o cifra.Sa se
determine daca cifra este para.

16
Program P1_16;
Uses crt;
Var n:0..9;
Begin
clrscr;
Writeln('Introdu n:');
Readln(n);
If n mod 2=0 Then Writeln('Cifra este
para')
Else Writeln('Cifra este impara');
Readln;
Readkey;
End.

PROBLEMA 17.1.17

17
Se considera trei numere reale.Sa se scrie
un program care determina daca aceste numere
reprezinta lungimile laturilor unui triungi
si in caz afirmativ sa se:
a)calculeze perimetrul triungiului;
b)determine natura triungiului in dependenta
de lungimile laturilor.

Program P1_17;
Uses crt;
Var a,b,c:real;
p:real;
Begin
clrscr;
Writeln('Introdu numerele a, b,c:');
Readln(a,b,c);
If((a+b)>c) and ((a+c)>b) and (b+c)>a)
Then Begin
p:=a+b+c;
If (a=b) or (b=c) or (a=c)
Then Writeln('Isoscel');
If (a=b) and(b=c) and(a=c)
Then Writeln('Echilateral');
If (a<>b) and (b<>c) and
(a<>c) Then
Writeln('Scalen');
Writeln(p:6:4);
End;
Readln;
Readkey;
End.

18
PROBLEMA 18.1.18
Se considera trei puncte cu coordonatele
date:
A(x1,y1),B(x2,y2),C(x3,y3).Sa se determine
care din puncte se afla mai aproape de ori-
ginea de coordonate.

Program P1_18;
Uses crt;
Var x1,y1,x2,y2,x3,y3,d1,d2,d3:real;
Begin
Clrscr;
Writeln('Introdu x1,y1,x2,y2,x3,y3:');
Readln(x1,y1,x2,y2,x3,y3);
d1:=sqrt(x1*x1+y1*y1);
d2:=sqrt(x2*x2+y2*y2);
d3:=sqrt(x3*x3+y3*y3);
If (d1<d2) and (d1<d3) Then
Writeln('A');
If (d2<d1) and (d2<d3) Then
Writeln('B');
If (d3<d1) and (d3<d2) Then
Writeln('C');
Readln;
Readkey;
End.

19
PROBLEMA 19.1.19
Trei vinzatori x,y,z au vindut portocale.X a
vindut 170 kg la pretul de 8.5 lei,y-350 kg
cu 8.8 lei,iar z-150 kg cu 9 lei chilogra-
mul.Sa se scrie un program care calculeaza
pretul mediu de comercializare;cine din vin-
zatori a obtinut cea mai mare suma de la
comercializarea portocalelor.

Program P1_19;
Uses crt;
Var p,p1,p2,p3:real;
q,w,e,r,t,y:real;
Begin
Clrscr;
Writeln('Introdu numerele q,w,e,r,t,y:');
Readln(q,w,e,r,t,y);
p1:=q*w;
p2:=e*r;
p3:=t*y;
p:=(p1+p2+p3)/3;
If (p1>p2) and (p1>p3) Then Writeln('x');
If (p2>p1) and (p2>p3) Then Writeln('y');
If (p3>p1) and (p3>p2) Then Writeln('z');
Writeln(p:5:3);
Readln;
Readkey;
End.

20
PROBLEMA 20.1.20
Se considera numerele reale x,y si z.Sa se
calculeze:
a)max(x+y+z,xyz);
b)min(x*x+y*y,y*y+z*z)+4.

Program P1_20;
Uses crt;
Var x,y,z:real;
max,min:real;
Begin
clrscr;
Writeln('Introdu numerele x,y,z:');
Readln(x,y,z);
If (x+y+z)>x*y*z Then max:=x+y+z Else
max:=x*y*z;
If (x*x+y*y)<(y*y+z*z) Then
min:=x*x+y*y+4
Else min:=y*y+z*z+4;
Writeln(max:6:3);
Writeln(min:6:3);
Readln;
Readkey;
End.

21
PROBLEMA 21.1.21
Sa se calculeze valoarea functiei f definita
pe multimea numerelor reale,pentru un x ci-
tit de la tastatura
x*x ,daca x<=0,
f=
0 ,daca x>0.

Program P1_21;
Uses crt;
Var x,f:real;
Begin
clrscr;
Writeln('Introdu x:');
Readln(x);
If x<=0 Then f:=x*x;
If x>0 Then f:=0;
Writeln(f:6:4);
Readln;
Readkey;
End.

22
PROBLEMA 22.1.22
Sa se calculeze valoarea functiei f definita
pe multimea numerelor reale,pentru un x ci-
tit de la tastatura
x ,daca x<0,
f= 0 ,daca 0<=x<=3,
x-3 ,daca x>3 .

Program P1_22;
Uses crt;
Var x,f:real;
Begin
clrscr;
Writeln('Introdu x:');
Readln(x);
If x<0 Then f:=x;
If x>3 Then f:=x-3;
If (x>=0) and (x<=3) Then f:=0;
Writeln(f:6:4);
Readln;
Readkey;
End.

23
PROBLEMA 23.1.23
Sa se scrie un program pentru rezolvarea
ecuatiei liniare de forma:
ax+b=0 .

Program P1_23;
Uses crt;
Var x,a,b:real;
Begin
clrscr;
Writeln('Introdu a,b:');
Readln(a,b);
If a=0 Then Writeln('x n-are solutie');
If a<>0 Then x:=-b/a;
Writeln(x:6:4);
Readln;
Readkey;
End.

24
PROBLEMA 24.1.24
Sa se scrie un program pentru rezolvarea
ecuatiei patrate a*x*x+b*x+c=0 cu coficienti
reali.

Program P1_24;
Uses crt;
Var x,a,b,c,d:real;
Begin
clrscr;
Writeln('Introdu a,b,c:');
Readln(a,b,c);
d:=b*b-4*a*c;
If d<0 Then Writeln('Ecuatia n-are
slutie');
If d=0 Then Writeln(-b/(2*a):5:2);
If d>0 Then
Begin
Writeln((-b+sqrt(d)/(2*a)):5:2);
Writeln((-b+sqrt(d)/(2*a)):5:2);
End;
Readln;

25
Readkey;
End.

PROBLEMA 25.1.25
Sa se scrie un program pentru rezolvarea
ecuatiei bipatrate a*x*x*x*x+b*x*x+c=0 cu
coficienti reali.

Program P1_25;
Uses crt;
Var a,b,c,d,t,t1,t2:real;
Begin
clrscr;
Writeln('Introdu a,b,c:');
Readln(a,b,c);
d:=b*b-4*a*c;
If d<0 Then Writeln('Ecuatia n-are
solutie');
If d=0 Then t:=(-b/(2*a));
Writeln('t=',t);
If d>0 Then Begin
t1:=(-b+sqrt(d)/(2*a));
t2:=(-b-sqrt(d)/(2*a));

26
Writeln('t1= ' , t1 ,' t2= ,t2 )
End;
If t>0 Then Begin
Writeln(sqrt(t));
Writeln(-sqrt(t));
End;
If t1>0 Then Begin
Writeln(sqrt(t1));
Writeln(-sqrt(t1));
End;
If t2>0 Then Begin
Writeln(sqrt(t2));
Writeln(-sqrt(t2));
End;
Readln;
Readkey;
End.
Instructiunea Case
PROBLEMA 26.2.1
Se citeste numarul de ordine al lunii.Sa se
scrie un program care afiseaza anotimpul co-
respunzator lunii.

Program P2_1;
Uses crt;
Var n:1..12;
Begin
Clrscr;
Writeln('introdu un numar intre 1..12 :');
Readln(n);
Writeln('Raspuns');
Case n Of
1,2,12 :Write ('Iarna');
3,4,5 :Write ('Primavara');

27
6,7,8 :Write ('Vara');
9,10,11:Write ('Toamna');
Else Write('Nu exista asa luna ');
End;
Readkey;
Readln;
End.

PROBLEMA 27.2.2
Se citeste de la tastatura numarul de ordine
al zilei saptaminii.Sa se scrie un program
care afiseaza numarul de lectii pe care le
aveti in aceasta zi.

Program P2_2;
Uses crt;
Var n:1..5;
Begin
Clrscr;
Writeln('introdu un numar intre 1..5 :');
Readln(n);
Writeln('Raspuns');
Case n Of
1 :Write ('Cinci');

28
2 :Write ('Sase');
3 :Write ('Patru');
4 :Write ('Sapte');
5 :Write ('Opt') ;
Else Write('Zi de odihna ');
End;
Readkey;
Readln;
End.

PROBLEMA 28.2.3
Se citeste numarul de ordine al lunii.Sa se
scrie un program care afiseaza numarul de
zile corespunzator lunii.

Program P2_3;
Uses crt;
Var n:1..12;
Begin
Clrscr;
Writeln('introdu un numar intre 1..12 :');
Readln(n);
Writeln('Raspuns');
Case n Of

29
1,3,5,7,8,10,12 :Write ('31');
2 :Write ('28 sau 29');
4,6,9,11 :Write ('30');
Else Write('Nu exista asa luna ');
End;
Readkey;
Readln;
End.

PROBLEMA 29.2.4
De la tastatura se citeste o cifra.Sa se
scrie un program care afiseaza denumirea
acesteia.

Program P2_4;
Uses crt;
Var n:0..9;
Begin
Clrscr;
Writeln('introdu un numar intre 0..9 :');
Readln(n);

30
Writeln('Raspuns');
Case n Of
0 :Write ('Zero');
1 :Write ('Unu');
2 :Write ('Doi');
3 :Write ('Trei');
4 :Write ('Patru');
5 :Write ('Cinci');
6 :Write ('Sase');
7 :Write ('Sapte');
8 :Write ('Opt');
9 :Write ('Noua');
Else Write('Nu exista cifra ');
End;
Readkey;
Readln;
End.

PROBLEMA 30.2.5
De la tastatura se citeste o litera din al-
fabetul latin.Sa se scrie un program care
determina daca litera introdusa reprezinta o
vocala sau o consoana.

Program P2_5;
Uses crt;
Var n:char;
Begin
Clrscr;

31
Writeln('introdu o litera :');
readln(n);
Writeln('Raspuns:');
Case n Of
'A','a','E','e','U','u','I','i','O','o'
:Write ('Vocala');
'q','Q','w','W','R','r','T','t',
'P','p','S','d','D','f',
'F','g','G','h','H','j','J','k','K',
'l','Z','z','X','x',
'C','c','V','v','B','b','N',
'n','M','m' :Write ('Consoana');
Else Write('Nu exista asa litera ');
End;
Readkey;
Readln;
End.

PROBLEMA 31.2.6
De la tastatura se citasc doua numere in-
tregi diferite de zero si una din operatiile
aritmetice +,-,*,/.Daca a fost introdus sem-
nul '+',sa se calculaze suma numerelor,daca
a fost introdus semnul '-',sa se calculeze
diferenta numerelor,daca a fost introdus
semnul '*',sa se calculeze produsul lor,daca
a fost introdus semnul '/',sa se calculeze

32
citul lor.

Program P2_6;
Uses crt;
Var n:char;
a,b:integer;
Begin
Clrscr;
Writeln('introdu operatia :');
Readln(n);
Writeln('Introdu numerele a,b:');
Readln(a,b);
Writeln('Raspuns');
Case n Of
'+' :Write (a+b:5);
'-' :Write (a-b:5);
'*' :Write (a*b:5);
'/' :Write (a/b:5:3);
Else Write('Nu exista operatie');
End;
Readkey;
Readln;
End.

PROBLEMA 32.2.7
De la tastatura se citeste urmatoarele cifre
romane:I,V,X,L,C,D sau M.Sa se scrie un pro-
gram care afiseaza numarul zecimal corespun-
zator cifrei citite.

Program P2_7;

33
Uses crt;
Var n:char;
a,b:integer;
Begin
Clrscr;
Writeln('Introdu cifra:');
Readln(n);
Writeln('Raspuns');
Case n Of
'I' :Write ('1');
'V' :Write ('5');
'X' :Write ('10');
'L' :Write ('50');
'C' :Write ('100');
'D' :Write ('500');
'M' :Write ('1000');
Else Write('Nu exista asa cifra');
End;
Readkey;
Readln;
End.

PROBLEMA 33.2.8
De la tastatuta se introduce o data din luna
aprilie (anul 2002). Sa se determine ce zi a
fost la aceasta data(denumirea zilei),daca
se stie ca 1 aprilie a fost simbata.

34
Program P2_8;
Uses crt;
Var data:1..30;
Begin
Clrscr;
Write('Itrodu un numar intre 1..30:');
Readln(data);
Write('Raspuns: ');
Case data Of
1,8,15,22,29:Writeln('Simbata');
2,9,16,23,30:Writeln('Duminica');
3,10,17,24 :Writeln('Luni');
4,11,18,25 :Writeln('Marti');
5,12,19,26 :Writeln('Miercuri');
6,13,20,27 :Writeln('Joi');
7,14,21,28 :Writeln('vineri')
Else Writeln('N-ati introdus corect
data');
End;
Readln;
Readkey;
End.

PROBLEMA 34.2.9
De la tastatuta se citeste unul dintre urma-
toarele numere:1,5,10,50,100,500 sau 1000.Sa

35
se scrie un program care afiseaza cifra ro-
mana corespunzatoare numarului citit.

Program P2_9;
Uses crt;
Var x:1..1000;
Begin
Clrscr;
Write('Itrodu 1,5,10,50,100,500 sau
1000:');
Readln(x);
Write('Raspuns: ');
Case x Of
1 :Writeln('I');
5 :Writeln('V');
10 :Writeln('X');
50 :Writeln('L');
100 :Writeln('C');
500 :Writeln('D');
1000:Writeln('M')
End;
Readln;
Readkey;
End.

36
Instructiunile For,Repeat,While
PROBLEMA 35.3.1
Sa se scrie un program care afiseaza pe
ecran numerele naturale mai mici sau egale
cu n.

Program P3_1;
Uses crt;
Var i,n:integer;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
For i:=1 To n Do
Writeln(i);
Readkey;
Readln;
End.

37
PROBLEMA 36.3.2
Sa se scrie un program care afiseaza pe
ecran numerele naturale impare mai mici sau
egale cu n.

Program P3_2;
Uses crt;
Var i,n:integer;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
For i:=1 To n Do
If i mod 2<>0 Then
Writeln(i);
Readkey;
Readln;
End.

38
PROBLEMA 37.3.3
Sa se scrie un program care afiseaza pe
ecran numerele naturale mai mici sau egale
cu n,care-s divizibile cu 5.

Program P3_3;
Uses crt;
Var i,n:integer;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
For i:=1 To n Do
If i mod 5=0 Then
Writeln(i);
Readkey;
Readln;
End.

39
PROBLEMA 38.3.4
Sa se scrie un program care afiseaza pe
ecran numerele naturale mai mici sau egale
cu n si divizibila cu t(n,t sunt numere na-
turale,n<t).Numerele n,t ce citesc de la
tastatura.

Program P3_4;
Uses crt;
Var i,n,t:integer;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
Writeln('Introdu t:');
Readln(t);
For i:=1 To n Do
If i mod t=0 Then
Writeln(i);
Readkey;
Readln;
End.

40
PROBLEMA 39.3.5
Sa se scrie un program care calculeaza suma
numerelor naturalea pare mai mici sau egale
cu n.

Program P3_5;
Uses crt;
Var i,n:integer;
s:real;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
s:=0;
For i:=1 To n Do
If i mod 2=0 Then s:=s+i;
Writeln(s:4:2);
Readkey;
Readln;
End.

41
PROBLEMA 40.3.6
Sa se scrie un program care calculeaza suma
numerelor naturale mai mici sau egale cu n
care sunt divizibile cu 3.

Program P3_6;
Uses crt;
Var i,n:integer;
s:real;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
s:=0;
For i:=1 To n Do
If i mod 3=0 Then s:=s+i;
Writeln(s:4:2);
Readkey;
Readln;
End.

42
PROBLEMA 41.3.7
Sa se scrie un program care calculeaza cite
numerelor naturale mai mici sau egale cu N
sunt divizibile cu A.Numerele N si A se ci-
tesc de la tastatura.

Program P3_7;
Uses crt;
Var i,n,a,t:integer;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
Writeln('Introdu a:');
Readln(a);
t:=0;
For i:=1 To n Do
If i mod a=0 Then t:=t+1;
Writeln(t:5);
Readkey;
Readln;
End.

43
PROBLEMA 42.3.8
Sa se scrie un program care calculeaza pro-
dusul numerelor naturale impare mai mici sau
egale cu N (N<=10).

Program P3_8;
Uses crt;
Var i,n:integer;
p:real;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
p:=1;
For i:=1 To n Do
If i mod 2<>0 Then p:=p*i;
Writeln(p:5:3);
Readkey;
Readln;
End.

44
PROBLEMA 43.3.9
Se considera doua numere naturale X si N.Sa
se scrie un program care calculeaza X^N.

Program P3_9;
Uses crt;
Var i,n,x:integer; p:real;
Begin
Clrscr;
Writeln('Introdu n,x:');
Readln(n,x);
P:=1;
For i:=1 To n Do
P:=P*x;
Writeln(p:5:3);
Readkey;
Readln;
End.

45
PROBLEMA 44.3.10
Se considera numarul natural N.Sa se scrie
un program care :
a) calculeaza suma si produsul divizorilor
acestui numar;
b) afiseaza divizorii numarului N si numarul
acestora.

Program P3_10;
Uses crt;
Var i,n:integer;
s,p:real;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);

46
s:=0; p:=1;
For i:=1 To n Do
If n mod i = 0 Then
Begin
s:=s+i;
p:=p*i;Writeln(i);
End;
Writeln(s:5:3);
Writeln(p:5:3);
Readkey;
Readln;
End.

PROBLEMA 45.3.11
Se considera o segventa de n(n<=100)numere
intregi.Sa se scrie un program care calcu-
leaza suma numerelor pozitive.

Program P3_11;
Uses crt;
Var i,n,x:integer; s:real;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
s:=0;
For i:=1 To n Do

47
Begin
Write('Introdu numerele:');
Read(x);
If x>0 Then s:=s+x;
End;
Writeln('Raspuns');
Writeln(s:5:3);
Readkey;
Readln;
End.

PROBLEMA 46.3.12
Se considera o segventa de n(n<=100) numere
reale. Sa se scrie un program care calculea-
za cite numere sunt pozitive, cite numere
sunt negative si cite numere sunt nule.

Program P3_12;
Uses crt;
Var i,n,k,l,j:integer;x:real;
Begin
Clrscr;
Writeln('Introdu n:');

48
Readln(n);
k:=0; l:=0; j:=0;
For i:=1 To n Do
Begin
Write('Introdu numerele:');
Read(x);
If x>0 Then k:=k+1;
If x=0 Then l:=l+1;
If x<0 Then j:=j+1;
End;
Writeln('Raspuns');
Writeln(k:5 ,l:5 ,j:5 );
Readkey;
Readln;
End.

PROBLEMA 47.3.13
Se considera o segventa de n(n<=100)numere
intregi.Sa se scrie un program care calcu-
leaza media aritmetica a numerelor poziti-
ve si media artimetica a numerelor negati-ve.

Program P3_13;
Uses crt;
Var i,n,x,k,l:integer;
s1,s2,med1,med2

49
:real;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
s1:=0; s2:=0; k:=0; l:=0;
For i:=1 To n Do
Begin
Write('Introdu numerele:');
Read(x);
If x>0 Then Begin k:=k+1;
s1:=s1+x;End;
If x<0 Then Begin l:=l+1;
s2:=s2+x;End;
End;med1:=s1/k;med2:=s2/l;
Writeln('Raspuns');
Writeln(med1:5:3 ,med2:5:3);
Readkey;
Readln;
End.

PROBLEMA 48.3.14
Se considera o segventa de n(n<=100)numere
reale.Sa se scrie un program care determina
numarul minim .

Program P3_14;
Uses crt;
Var i,n:integer;

50
min, x:real;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
Writeln('Introdu primul numar:');
Readln(x);
min:=x;
For i:=2 To n Do
Begin
Write('Introdu numerele:');
Read(x);
If x<min Then min:=x;
End;
Writeln('Raspuns');
Writeln(min:5:3);
Readkey;
Readln;
End.

PROBLEMA 49.3.15
Intr-o sera ,in fiecare zi,infloresc cu 15
flori mai multe decit in ziua precedenta.
In prima zi au inflorit 10 flori.Sa se scrie
un program care calculeaza cite flori au in-
florit timp de o saptamina.

51
Program P3_15;
Uses crt;
Var i,s:integer;
n:1..7;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
s:=10;
For i:=2 To n Do
s:=s+15;
Writeln('Raspuns');
Writeln(s:5);
Readkey;
Readln;
End.

PROBLEMA 50.3.16
Se se scrie un program care citeste de la
tastatura o segventa de caractere si afi-
seaza pe ecran:

52
a)numarul cifrelor zecimale citite;
b)numarul cifrelor pare;
c)numarul cifrelor impare.

Program P3_16;
Uses crt;
Var i,n,k,l,j:integer;
x:char;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
k:=0; l:=0; j:=0;
For i:=1 To n Do
Begin
Write('Introdu caracterele:');
Readln(x);
case x of
'0','2','4','6','8':l:=l+1;
'1','3','5','7','9':j:=j+1;
End;
End;
Writeln('Raspuns');
k:=l+j;
Writeln(k:5);Writeln( l:5);
Writeln( j:5 );
Readkey;
Readln;
End.

PROBLEMA 51.3.17
Se considera o segventa de n(n<=100)numere

53
intregi pozitive. Sa se scrie un program
care atribuie unei variebilele valoarea TR-
UE ,daca in acest sir exista cel putin un
numar care se imparte la 7 fara rest in caz
contrar-valoarea FALSE.

Program P3_17;
Uses crt;
Var i,n,x:integer;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
For i:=1 To n Do
Begin
Writeln('Introdu numerele:');
Read(x);
End;
If x mod 7=0 Then Writeln('TRUE')
Else Writeln('FALSE');

Readkey;
Readln;
End.

54
PROBLEMA 52.3.18
Sa se scrie un program care calculeaza
valorile functiei y=2x^2+7x pe segmentul
[-2;8]
a) cu pasul 1;
b) cu pasul 0.5.

Program P3_18;
Uses crt;
Var x,y,h:real;
Begin
Clrscr;
Writeln('Introdu pasul h:');
Readln(h);
x:=-2;
While x<=8 Do
Begin
y:=2*x*x+7*x;
Writeln('y=',y);
x:=x+h;
End;
Readkey;
Readln;
End.

55
PROBLEMA 53.3.19
Sa se scrie un program care afiseaza costul
unei portiuni de cascaval de 50,100,150,...,
1000gr,daca se stie ca un kilogram costa
46lei 20bani.

Program P3_19;
Uses crt;
Var x,y:real;
Begin
Clrscr;
x:=50;
While x<=1000 Do
Begin
y:=0.04620*x;
Writeln(y:2:2);
x:=x+50;
End;
Readkey;
Readln;
End.

56
PROBLEMA 54.3.20
Un cetatean a depus la o Banca Comerciala
10000 lei. Sa se scrie un program care cal-
culeaza suma pe care o va avea cetateanul pes
te 10 ani ,daca dobinda anuala este de 5% .

Program P3_20;
Uses crt;
Var x,y:real;
Begin
Clrscr;
x:=1;
While x<=10 Do
Begin
y:=10000*x;
x:=x+0.05;
End;
Writeln(y:6:2);
Readkey;
Readln;
End.

57
PROBLEMA 55.3.21
Un cetatean a depus la o Banca Comerciala o
suma egala cu S lei cu dobinda de P%.Sa se
un program care calculeaza peste cit ani
suna se va mari cu cel mult 100%.

Program P3_21;
Uses crt;
Var s,p,h,x,t:real;
Begin
Clrscr;
Writeln('Introdu s,p:');
Readln(s,p);
x:=s;
Repeat
h:=s*x;
x:=x+p/100;
t:=h/10000000;
Until x>100;
Writeln(t:4:2);
Readkey;
Readln;
End.

58
PROBLEMA 56.3.22
Se considera un numar natural n(n<=10).Sa se
scrie un program care calculeaza :
1+1/2+1/4+...+1/(2n).

Program P3_22;
Uses crt;
Var s:real;
i,n:integer;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
s:=0;
For i:=1 To n Do
s:=s+1/i;
Writeln(s:4:5);
Readkey;
Readln;
End.

59
PROBLEMA 57.3.23
Se considera un numar natural n(n<=10).Sa se
scrie un program care calculeaza:
1^2+2^2+3^2+4^2+...+n^2 .

Program P3_23;
Uses crt;
Var s:real;
i,n:integer;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
s:=0;
For i:=1 To n Do
s:=s+i*i;
Writeln(s:5:3);
Readkey;
Readln;
End.

60
PROBLEMA 58.3.24
Sa se scrie un program care calculeaza suma
1+1/2+2/3+3/4+...+N(N+1) ,pina cind va
depasi valoarea 0.999.N este numar natural.

Program P3_24;
Uses crt;
Var s:real;
i,n:integer;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
s:=0;
For i:=1 To n Do
Begin
s:=s+i/(i+1);
If s<0.999 Then
Writeln(s:5:2) ;
End;
Readln;
End.

61
PROBLEMA 59.3.25
De la tastatura se citesc numere intregi
pozitive pina cind suma lor nu depaseste
valoarea 1000.Sa se scrie un program care
calculeaza media artimetica a numerelor
citi-te.

Program P3_25;
Uses crt;
Var suma,k,x,n,i:integer;
med:real;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
suma:=0;
For i:=1 To n Do
Begin
Writeln('Introdu numarul al',i,'-
lea:');

62
Readln(x);
If suma<1000 Then suma:=suma+x;
End;
Writeln('Suma numerelor este:',suma);
med:=suma/n;
Writeln('Media=',med:6:1);
Readkey;
Readln;
End.

PROBLEMA 60.3.26
Se considera o segvevta de numere :2, 7, 12,
17,... cu n termeni (n>=2).Sa se scrie un
program care calculeaza suma termenilor pari

Program P3_26;
Uses crt;
Var suma,n,i,t:integer;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
suma:=2;
t:=2;
For i:=1 To n-1 Do
Begin
t:=t+5;
if t mod 2 =0 Then suma:=suma+t;

63
End;
Writeln('Suma numerelor este:',suma);
Readkey;
Readln;
End.

PROBLEMA 61.3.27
Se citesc 3 numere naturale n,p,k si o seg-
venta de n numere naturale.Sa se scrie un
program care calculeaza cite dintre acestea
impartite la p dau restul k.

Program P3_27;
Uses crt;
Var s,n,i,p,x,k,t:integer;
Begin
Clrscr;
Writeln('Introdu n,p,k:');
Readln(n,p,k);
Writeln('Introdu primul numar:');
Readln(x);
s:=0;

64
t:=x;
For i:=2 To n-1 Do
Begin
Writeln('Introdu numarul ',i,'-lea:');
Readln(x);
t:=t+k;
if t mod p =k Then s:=s+1;
End;
Writeln('Numarul ',s);
Readkey;
Readln;
End.

PROBLEMA 62.3.34
Sa se scrie un program care afiseaza primele
10 numere naturale, care fiind impartite la
5 si la 7 dau restul 2.

Program P3_34;
Uses crt;
Var i,t,n:integer;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n); t:=0;
For i:=1 To n Do
Begin

65
If (i mod 5=2) and (i mod 7=2)
Then
Begin
t:=t+1;
If t<=10 Then Writeln(t:2 ,' ' ,i)
End;
End;
Readkey;
Readln;
End.

PROBLEMA 63.3.35
Sa se scrie un program care afiseaza
urmatorul sir :
zyyxxx...aaaaaa...a .

Program P3_35;
Uses crt;
Var i,j:char;
Begin
Clrscr;
For i:='z' Downto 'a' Do
For j:='z' Downto i Do

66
Write(i);
Readkey;
Readln;
End.

PROBLEMA 64.3.36
Sa se scrie un program care afiseaza
urmatorul triunghi :
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1.

Program P3_36;

67
Uses crt;
Var i,j,s,s1,s2:integer;
Begin
Clrscr;
s:=0;s2:=0;s1:=0;
For i:=1 To 5 Do
Begin
For j:=1 To i Do
Write(i);
Writeln; s1:=s1+i;end;
s2:=s1+j;
s:=s1+s2;
Writeln(s:5, s1:5, s2:5);
Readkey;
Readln;
End.

Programe cu tablouri unidimensionale


PROBLEMA 65.4.1
Se considera A[1..n] de numere intregi ,
n<=100 .Sa se scrie un program care numara
cite elemente pozitive contine acest tab-
lou.

68
Program P4_1;
Uses crt;
Var a:array[1..100] of integer;
k,i,n:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('Introdu elementele tabloului:');
Readln(a[i]);
End;
Writeln;
k:=0;
For i:=1 To n Do
If a[i]>0 Then k:=k+1;
Writeln('Numarul elementelor pozitive
este:',k );
Readkey;
Readln;
End.

PROBLEMA 66.4.2
Se considera A[1..n] cu elemente egale numai
cu 1 sau 0,n<= 100.Sa se scrie un program
ca-re numara cite zerouri si cite unitati
conti-ne acest tablou.

69
Program P4_2;
Uses crt;
Var a:array[1..100] of integer;
k,l,i:integer; n:0..1;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('Introdu elementele tabloului:');
Readln(a[i]);
End;
Writeln;
k:=0;l:=0;
For i:=1 To n Do
Begin
If a[i]=0 Then k:=k+1 ;
If a[i]=1 Then l:=l+1;
End;
Writeln('k=',k,' ','l=',l );
Readln;
End.

PROBLEMA 67.4.3
Se considera A[1..n] de numere intregi, n<=
100 .Sa se scrie un program care numara
cite elemente pozitive sunt pe locuri pare.

70
Program P4_3;
Uses crt;
Var a:array[1..100] of integer;
k,i,n:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('Introdu elementele tabloului:');
Readln(a[i]);
End;
Writeln;
k:=0;i:=2;
While i<n Do
Begin
If a[i]>0 Then k:=k+1;
i:=i+2;
End;
Writeln('k=',k );
Readkey;
Readln;
End.

PROBLEMA 68.4.4
Se considera A[1..n] de numere intregi,n<=

71
100.Sa se scrie un program care numara cite
elemente pozitive,cite negative si cite
ele-mente nule contine acest tablou.

Program P4_4;
Uses crt;
Var a:array[1..100] of integer;
k,l,z,i,n:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('Introdu elementele tabloului:');
Readln(a[i]);
End;
Writeln;
k:=0; l:=0; z:=0;
For i:=1 To n Do
Begin
If a[i]>0 Then k:=k+1;
If a[i]<0 Then l:=l+1;
If a[i]=0 Then z:=z+1;
End;
Writeln('k=',k,' ','l=',l,' ','z=',z );
Readkey;
Readln;
End.

72
PROBLEMA 69.4.5
Se considera numarul natural M si tabloul
A[1..n] de numere in tregi,n<=100.Sa se
scrie un program care numara cite elemente
din ta-blou sunt divizibile cu M.

Program P4_5;
Uses crt;
Var a:array[1..100] of integer;
k,m,i,n:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
Writeln('Introdu numarul m:');
Readln(m);
For i:=1 To n Do
Begin
Write('Introdu elementele tabloului:');
Readln(a[i]);
End;
Writeln;
k:=0;
For i:=1 To n Do
If a[i] mod m = 0 Then k:=k+1;
Writeln('Numarul elementelor
divizibile
cu m:',k );
Readkey;
Readln;
End.

73
PROBLEMA 70.4.6
Se considera tabloul A[1..n] de numere in-
tregi,n<=100.Sa se scrie un program care nu-
mara cite elemente sunt diferite de:
a) ultimul element;
b) primul element.

Program P4_6;
Uses crt;
Var a:array[1..100] of integer;
k,l,i,n:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('Introdu elementele tabloului:');
Readln(a[i]);
End;
Writeln;
k:=0; l:=0;
For i:=1 To n Do
Begin
If a[i] mod a[1]=0 Then k:=k+1;
If a[i] mod a[n]=0 Then l:=l+1;
End;
Writeln('k=',k,' ','l=',l );
Readkey;
Readln;
End.

74
PROBLEMA 71.4.7
Se considera A[1..n] de numere intregi, n<=
100. Sa se scrie un program care numara de
cite ori figureaza in acest tablou elementul
minim.

Program P4_7;
Uses crt;
Var a:array[1..100] of integer;
k,i,n,min:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('Introdu elementele tabloului:');
Readln(a[i]);
End;
Writeln;
k:=0; min:=a[1];
For i:=1 To n Do
If a[i]<min Then k:=k+1;
Writeln('Num. de elemente minime:',k );
Readkey;
Readln;
End.

75
PROBLEMA 72.4.8
Informatia despre temperatura zilnica a
lunii februarie a fost inscrisa intr-un
tablou uni-dimensional.Sa se scrie un
program care nu-mara de cite ori temperatura
s-a coborit mai jos de zero grade.

Program P4_8;
Uses crt;
Var a:array[1..100] of integer;
k,i,n:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('Introdu elementele tabloului:');
Readln(a[i]);
End;
Writeln;
k:=0;
For i:=1 To n Do
If a[i]<0 Then k:=k+1;
Writeln('Numarul sub zero grade:',k );
Readkey;
Readln;

76
End.

PROBLEMA 73.4.9
Se considera tabloul A[1..n] de numere int-
regi,n<=100.Sa se scrie un program care nu-
mara cite sunt sunt mai mari decit media ar-
tmetica a tuturor elementelor.

Program P4_9;
Uses crt;
Var a:array[1..100] of integer;
k,i,n,s:integer;media:real;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('Introdu elementele tabloului:');
Readln(a[i]);
End;
Writeln;
k:=0; s:=0;
For i:=1 To n Do
s:=s+i;
media:=s/n;
For i:=1 To n Do

77
If a[i]>media Then k:=k+1;
Writeln('Numarul elementelor mai mari
decit media:',k );
Readkey;
Readln;
End.

PROBLEMA 74.4.10
Se considera tabloul B[1..n] ,n<=24, in care
au fost introdusa rezultatele muncii zilnice
a unui lacatus in decursul unei perioade de
n zile lucratoare.Sa se scrie un program
care stabileste in cite zile lacatusul a
indepli-nit norma zilnica k.

Program P4_10;
Uses crt;
Var b:array[1..24] of integer;
k,i,n,l:integer;
Begin
Clrscr;
Writeln('Intodu numarul zilelor n:');
Readln(n);
Writeln('Introdu norma k:');
Readln(k);
For i:=1 To n Do
Begin
Write('Introdu elementele tabloului:');
Readln(b[i]);
End;

78
Writeln;
l:=0;
For i:=1 To n Do
If b[i]>=k Then l:=l+1;
Writeln('Numarul zilelor ce
indeplinesc
norma :',l );
Readkey;
Readln;
End.

PROBLEMA 75.4.11
Se considera tabloul A[1..15], in care au
fost introduse rezul tatelor meciurilor cu
participarea echipei de
fotbal"PRUT".Elemente tabloului sunt egale
cu "0", daca echipa "PRUT" a suferit
infringere ;egal cu "1" ,daca meciul s-a
terminat la egalitate;egale cu "3" ,daca a
iesit invingatoare "PRUT" .Sa se scrie un
program care stabiles-te in cite meciuri
echipa "PRUT" a suferitinfringere ,in cite a
iesit invingatoare si cite meciuri s-au
terminat la egalitate.

Program P4_11;
Uses crt;
Var a:array[1..15] of integer;
k1,k2,k3,i:integer;n:0..3;
Begin
Clrscr;

79
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('Introdu elementele tabloului:');
Readln(a[i]);
End; k1:=0; k2:=0; k3:=0;
For i:=1 To n Do
Begin If a[i]=0 Then k1:=k1+1;
If a[i]=1 Then k2:=k2+1;
If a[i]=3 Then k3:=k3+1;
End;Writeln('Infringere :',k1);
Writeln('Egal:',k2);Writeln('Victorii:',k3);
End.

PROBLEMA 76.4.12
Se considera tabloul Note[1..26],in care au
fost introduse notele obtinute de elevii
unei clase la lectia de informatica.Sa se
scrie un program care numara notele de
"8","9"si"10".

Program P4_12;
Uses crt;
Var a:array[1..100] of integer;
k1,k2,k3,i,n:integer;
Begin
Clrscr;
Writeln('Intodu numarul de note n:');
Readln(n);
For i:=1 To n Do
Begin

80
Write('Introdu elementele tabloului:');
Readln(a[i]);
End;
Writeln;
k1:=0; k2:=0; k3:=0;
For i:=1 To n Do
Begin
If a[i]=8 Then k1:=k1+1;
If a[i]=9 Then k2:=k2+1;
If a[i]=10 Then k3:=k3+1;
End;
Writeln('Numarul de note de 8 :',k1);
Writeln('Numarul de note de 9 :',k2);
Writeln('Numarul de note de 10:',k3);
Readkey;
Readln;
End.

PROBLEMA 77.4.13
Se considera doua tablouri A[1..n] si
B[1..n] de numere real, n<=100.Sa se scrie
un program care numara pozitiile cu
urmatoarea poprieta-te
a) A[i]<B[i];
b) A[i]=B[i];
c) A[i]>B[i].

Program P4_13;
Uses crt;
Var a,b:array[1..100] of real;
k1,k2,k3,i,n:integer;
Begin

81
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('Introdu tabloului a:');
Readln(a[i]);
End; Writeln;
For i:=1 To n Do
Begin
Write('Introdu elementele tabloului b:');
Readln(b[i]);
End; Writeln;
k1:=0; k2:=0; k3:=0;
For i:=1 To n Do
Begin
If a[i]<b[i] Then k1:=k1+1;
If a[i]=b[i] Then k2:=k2+1;
If a[i]>b[i] Then k3:=k3+1;
End; Writeln('k1=',k1:5);
Writeln('k2=',k2:5);
Writeln('k3=',k3:5); Readln;
End.
PROBLEMA 78.4.14
Se considera tabloul A[1..n] de numere in-
tregi, n<=100. Sa se scrie un program care
numara pozitiile pentru care A[i] nu este
mai mic decit toate elementele premergatoare
ale tabloului considerat(A[1],A[2],...,A[n-
1).

Program P4_14;
Uses crt;
Var a:array[1..100] of integer;
k,i,n:integer;

82
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('Introdu elementele tabloului:');
Readln(a[i]);
End;
Writeln;
k:=0;
For i:=1 To n Do
If a[i+1]<a[i] Then k:=k+i;
Writeln('k=',k );
Readkey;
Readln;
End.

PROBLEMA 79.4.15
Se considera tabloul A[1..n] de numere pozi-
tive, n<=100. Sa se scrie un program care
calculeaza cite numere prime contine tablo-
ul.

Program P4_15;
Uses crt;
Var a:array[1..100] of integer;

83
k,i,n:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('Introdu elementele tabloului:');
Readln(a[i]);
End;
Writeln;
k:=0;
For i:=1 To n Do
If a[i] mod i=0 Then k:=k+1;
Writeln('Numarul de numerele prime :',k );
Readkey;
Readln;
End.

PROBLEMA 80.4.16
Se considera tabloul A[1..n] de numere in-
tregi pozitive,n<=100. Sa se scrie un
program de numarare a elementelor negative ,
nule si pozitive ale tabloului.

Program P4_16;

84
Uses crt;
Var a:array[1..100] of integer;
k1,k2,k3,i,n:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('Introdu elementele tabloului:');
Readln(a[i]);
End;
Writeln;
k1:=0; k2:=0; k3:=0;
For i:=1 To n Do
Begin
If a[i]<0 Then k1:=k1+1;
If a[i]=0 Then k2:=k2+1;
If a[i]>0 Then k3:=k3+1;
End;
Writeln('Numere negative :',k1 );
Writeln('Numere egale cu zero :',k2);
Writeln('Numere pozitive :',k3);
Readkey;
Readln;
End.

PROBLEMA 81.4.17
Se considera tabloul X[1..n] de numere in-
tregi nenule, n<=100. Sa se scrie un program
care numara de cite ori se schimba semnul
nu-merilor din acest tablou.

85
Program P4_17;
Uses crt;
Var x:array[1..100] of integer;
k,i,n:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('Introdu tabloului:',i,' ');
Readln(x[i]);
End;
Writeln;
k:=0;
For i:=1 To n Do
If x[i]*x[i+1]<0 Then k:=k+1;
Writeln('Numarul de alternari :',k );
Readkey;
Readln;
End.

PROBLEMA 82.4.18
Se considera tabloul X[1..n] de numere in-
tregi nenule, n<=100. Sa se scrie un program

86
care numara de cite ori se schimba semnul
nu-merilor din acest tablou.

Program P4_18;
Uses crt;
Var x:array[1..100] of integer;
k,i,n:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('Introdu tabloului:',i,' ');
Readln(x[i]);
End;
Writeln;
k:=0;
For i:=1 To n Do
If x[i]*x[i+1]<0 Then k:=k+1;
Writeln('Numarul de alternari :',k );
Readkey;
Readln;
End.

PROBLEMA 83.4.19

87
Se considera tabloul X[1..n] de numere in-
tregi nenule n<=100. Sa se scrie un program
care numara perechile de numere de pe
pozitii consecutive modulul diferentei
carora este egal cu 1.

Program P4_19;
Uses crt;
Var x:array[1..100] of integer;
k,i,n:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('Introdu elementele tabloului:');
Readln(x[i]);
End;
Writeln;
k:=0;
For i:=1 To n Do
If abs(x[i+1]-x[i])=1 Then k:=k+1;
Writeln('Perechile de numere :',k );
Readkey;
Readln;
End.

88
PROBLEMA 84.4.20
Se considera tabloul A[1..n] de numere pozi-
tive si negative, n<=100 . Sa se scrie un
program care numara cite elemente il preced
pe ultimul element negativ.

Program P4_20;
Uses crt;
Var a:array[1..100] of real;
k,i,n:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('Introdu elementele tabloului:');
Readln(a[i]);
End;
Writeln;
k:=0;
For i:=1 To n Do
If a[i]<0 Then k:=n-i;
Writeln('Numarul elementelor :',k );
Readkey;
Readln;
End.

89
PROBLEMA 85.4.21
Se considera tabloul A[1..n] de numere re-
ale,n<=100. Sa se scrie un program care cal-
culeaza suma si produsul tuturor elemente-
lor.

Program P4_21;
Uses crt;
Var a:array[1..100] of real;
i,n:integer; s,p:real;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('Introdu elementele tabloului:');
Readln(a[i]);
End;
Writeln;
s:=0; p:=1;
For i:=1 To n Do
Begin
s:=s+a[i];
p:=p*a[i];
End;
Writeln('Suma :',s:5:3);
Writeln('Produul :',p:5:3);
Readkey;
Readln;
End.

90
PROBLEMA 86.4.22
Se considera tabloul A[1..n] de numere rea-
le,n<=100. Sa se scrie un program care cal-
culeaza produsul elementelor pozitive.

Program P4_22;
Uses crt;
Var a:array[1..100] of real;
i,n:integer; p:real;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('Introdu elementele tabloului:');
Readln(a[i]);
End;
Writeln;
p:=1;
For i:=1 To n Do
If a[i]>0 Then p:=p*a[i];
Writeln('Produul :',p:5:3);
Readkey;
Readln;
End.

91
PROBLEMA 87.4.23
Se considera tabloul X[1..n] de numere in-
tregi,n<=100. Sa se scrie un program care
calculeaza suma elementelor de pe locurile
pare si produsul elementelor de pe locurile
impare.

Program P4_23;
Uses crt;
Var a:array[1..100] of real;
i,n:integer; s,p:real;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('Introdu elementele tabloului:');
Readln(a[i]);
End;
Writeln;
s:=0; p:=1;
i:=0;
While i<n Do
Begin
s:=s+a[i];
i:=i+2;

92
End;
i:=1;
While i<n Do
Begin
p:=p*a[i];
i:=i+2;
End;
Writeln('Suma :',s:5:3);
Writeln('Produul :',p:5:3); Readln;
End.
PROBLEMA 88.4.24
Se considera tabloul A[1..n] de numere in-
tregi,n<=100. Sa se scrie un program care
calculeaza media aritmetica a numerelor de
pe locurile pare si media aritmetica a
numerilor de pe locurile impare.

Program P4_24;
Uses crt;
Var a:array [1..100] of integer;
i,n,s1,s2,k,l:integer; med1,med2:real;
Begin
Clrscr;
Writeln('Introdu componentul n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
s1:=0; s2:=0;i:=1;k:=0;l:=0;
While i<=n Do
Begin
s1:=s1+a[i];k:=k+1;
i:=i+2;

93
End; Writeln(s1:4);i:=2;
While i<=n Do
Begin
s2:=s2+a[i];l:=l+1;
i:=i+2;
End; Writeln(s2:3);
med1:=s1/k; med2:=s2/l;
Writeln(med1:5:2,' ',med2:5:2);
Readkey;
Readln;
End.

PROBLEMA 89.4.25
Se considera tabloul A[1..n] de numere in-
tregi, n<=100.Sa se scrie un program care
calculeaza suma elementelor divizibile
cu 5.

Program P4_25;
Uses crt;
Var a:array [1..100] of integer;
i,n,s:integer;
Begin
Clrscr;
Writeln('Introdu componentul n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
s:=0;
For i:=1 To n Do
If a[i] mod 5 =0 Then s:=s+a[i];
Writeln(s:5);

94
Readkey;
Readln;
End.

PROBLEMA 90.4.26
Se considera tabloul A[1..n] de numere in-
tregi,n<=100. Sa se scrie un program care
calculeaza suma elementelor pozitive de pe
locurile pare.

Program P4_26;
Uses crt;
Var a:array [1..100] of integer;
i,n,s:integer;
Begin
Clrscr;
Writeln('Introdu componentul n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
s:=0; i:=2;
While i<=n Do

95
Begin
If a[i]>0 Then s:=s+a[i];
i:=i+2;
End;
Writeln(s:3);
Readkey;
Readln;
End.

PROBLEMA 91.4.27
Se considera tabloul A[1..n] de numere in-
tregi, n<=100.Sa se scrie un program care
calculeaza suma elementelor divizibile cu 3
si cu 7.

Program P4_27;
Uses crt;
Var a:array [1..100] of integer;
i,n,s:integer;
Begin
Clrscr;
Writeln('Introdu componentul n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;

96
s:=0;
For i:=1 To n Do
If (a[i] mod 3 =0) and (a[i] mod 7 =0)
Then s:=s+a[i];
Writeln(s:5);
Readkey;
Readln;
End.

PROBLEMA 92.4.28
Se considera tabloul A[1..n] de numere in-
tregi, n<=100. Sa se scrie un program care
calculeaza suma elementelor mai mici ca ele-
mentul maxim.

Program P4_28;
Uses crt;
Var a:array [1..100] of integer;
i,n,s,max:integer;
Begin
Clrscr;
Writeln('Introdu componentul n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');

97
Readln(a[i]);
End;
max:=a[1];
s:=0;
For i:=1 To n Do
If a[i]<max Then s:=s+a[i];
Writeln(s:5);
Readkey;
Readln;
End.

PROBLEMA 93.4.29
Se considera tabloul A[1..n] de numere in-
tregi, n<=100 si un numar natural M.Sa se
scrie un program care calculeaza suma ele-
mentelor pozitive mai mici ca M. Daca nu
exista astfel de numar sa se afiseze mesajul
respectiv.

Program P4_29;
Uses crt;
Var a:array [1..100] of integer;
i,n,s,m:integer;
Begin
Clrscr;
Writeln('Introdu componentul n:');

98
Readln(n);
Writeln('Introdu numarul natural m :');
Readln(m);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
s:=0;
For i:=1 To n Do
If a[i] mod m =0 Then s:=s+a[i];
Writeln(s:5);
Readkey;
Readln;
End.

PROBLEMA 94.4.30
Se considera tabloul A[1..n] de numere in-
tregi diferite, n<=100. Sa se scrie un pro-
gram care calculeaza suma:
a) elementului maxim si elementului minim;
b) elementelorcare se afla intre elementul
maxim si elementul minim.

Program P4_30;
Uses crt;
Var a:array [1..100] of integer;
i,n,s1,s2,min,max:integer;
Begin

99
Clrscr;
Writeln('Introdu componentul n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
s2:=0; min:=a[1]; max:=a[1];
For i:=1 To n Do
Begin
If a[i]<min Then min:=a[i];
If a[i]>max Then max:=a[i];
End;
s1:=max+min;
For i:=0 To n Do
If( a[i]<max) and (a[i]>min) Then
s2:=s2+a[i];
Writeln(s1:5);
Writeln(s2:5);
Readkey;
Readln;
End.

PROBLEMA 95.4.31
Se considera tabloul A[1..n] de numere in-
tregi, n<=100, unde se contine cel putin un
numar negativ.Sa se scrie un program care
calculeaza suma elementelo care se afla dupa
primul element negativ.

Program P4_31;
Uses crt;
Var a:array [1..100] of integer;
i,n,s,loc:integer;

100
Begin
Clrscr;
Writeln('Introdu componentul n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
s:=0; loc:=0;
For i:=n Downto 1 Do
If a[i]<0 Then loc:=i;
Writeln(loc:5);
For i:=1 To n Do
s:=s+a[loc+i];
Writeln(s:5);
Readkey;
Readln;
End.

PROBLEMA 96.4.32
Se considera tabloul A[1..n] de numere in-
tregi, n<=100.Sa se scrie un program care
calculeaza suma elementelor divizibile cu
3;5 si 7.

Program P4_32;
Uses crt;
Var a:array [1..100] of integer;

101
i,n,s:integer;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
For i:=1 To n Do
If (a[i] mod 3=0) and (a[i] mod 5=0) and
(a[i] mod 7=0) Then s:=s+a[i];
Writeln(s:5);
Readkey;
Readln;
End.

PROBLEMA 97.4.33
Se considera doua tablouri A[1..15] si B[1..
15] de numere reale.Sa se scrie un pro-gram
care calculeaza produsul:
(A[1]+B[15])*(A[2]+B[14])*..*(A[15]+B[1]).

Program P4_33;

102
Uses crt;
Var a,b:array [1..100] of real;
i,n:integer; p:real;
Begin
Clrscr;
Writeln('Introdu componentul n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
For i:=1 To n Do
Begin
Write('b[',i,']=');
Readln(b[i]);
End;
p:=1;
For i:=1 To n Do
p:=p*(a[i]+b[n+i-1]);
Writeln(p:5:2);
Readkey;
Readln;
End.

PROBLEMA 98.4.34
Se considera tabloul A[1..n] de numere in-
tregi, n<=100 . Sa se scrie un program care
determina elementul maxim dintre elementele
de pe locurile pare.

103
Program P4_34;
Uses crt;
Var a:array [1..100] of integer;
i,n,max:integer;
Begin
Clrscr;
Writeln('Introdu componentul n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
max:=a[2];
i:=2;
While i<=n Do
Begin
If a[i]>max Then max:=a[i];
i:=i+2;
End;
Writeln(max:5);
Readkey;
Readln;
End.

PROBLEMA 99.4.35
Se considera tabloul A[1..n] de numere in-
tregi diferite, n<=100.Sa se scrie un

104
program care determina:numarul mai mare si
pozitia lui; numarul mai mic si pozitia lui.

Program P4_35;
Uses crt;
Var a:array [1..100] of integer;
i,n,mare,mic,k,l:integer;
Begin
Clrscr;
Writeln('Introdu componentul n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
mare:=a[1];
For i:=1 To n Do
If a[i]>mare Then Begin mare:=a[i];
k:=i; End;
mic:=a[1];
For i:=1 To n Do
If a[i]<mic Then Begin mic:=a[i];
l:=i; End;
Writeln('mare=',mare,' ','k= ',k );
Writeln('mic=',mic,' ','l=',l );
Readkey;
Readln;
End.

PROBLEMA 100.4.36

105
Se considera numarul intreg X si tabloul
A[1. .n] de numere intregi, n<=100.Sa se
scrie un program care determina locurile pe
care sunt elemente egale cu X.Se presupune
ca in tablou exista cel putin un element
egal cu X.

Program P4_26;
Uses crt;
Var a:array [1..100] of integer;
i,n,x,k:integer;
Begin
Clrscr;
Writeln('Introdu componentul n:');
Readln(n);
Writeln('Introdu x:');
Readln(x);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
For i:=1 To n Do
If a[i] =x Then Write(i:2);
Readkey;
Readln;
End.

106
PROBLEMA 101.4.37
Se considera tabloul A[1..n] de numere in-
tregi(cel putin un numar este negativ), n<=
100.Sa se scrie un program care determina
lo-cul primului element negativ.

Program P4_37;
Uses crt;
Var a:array [1..100] of integer;
i,n,k:integer;
Begin
Clrscr;
Writeln('Introdu componentul n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
k:=0;
For i:=n Downto 1 Do
If a[i] < 0 Then k:=i;
Writeln(k:5);
Readkey;
Readln;
End.

107
PROBLEMA 102.4.38
Se considera tabloul A[1..n] de numere in-
tregi diferite, n<= 100.Sa se scrie un pro-
gram care determina cel mai mare element ne-
gativ.

Program P4_38;
Uses crt;
Var a,b:array [1..100] of integer;
i,l,n,max,k:integer;
Begin
Clrscr;
Writeln('Introdu componentul n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;k:=1;
For i:=1 To n Do
If a[i]<0 Then Begin b[k]:=a[i];k:=k+1;
End;
max:=b[1];
For l:=1 To k-1 Do
If b[l]>max Then max:=b[l];
If k=1 Then Writeln('tabelul nu contine
elemente negative')
Else Writeln('max=',max);
Readkey;
Readln;
End.

108
PROBLEMA 103.4.39
Se considera tabloul A[1898..1998] care con-
tine date despretemperatura medie a lunii
februarie din perioada anillor 1898-1998.Fie
x tempeeratura medie alunii februarie anul
1899.Sa se scrie un program care stebileste
anul cind aceasta temperatura x a fost inre-
gistrata ultima data. Daca o astfel de tem-
peratura n-a fost inregistrata in perioada
data, raspunsul va fi 0.

Program P4_39;
Uses crt;
Var a:array[1898..1998] of real;
i,n,anul:integer; x:real;
Begin
Clrscr;
Writeln('Intodu numarul de ani n:');
Readln(n);
Writeln('Introdu media anului 1898=');
Readln(x);
For i:=1900 To n Do
Begin
Write('a [ ',i,']=');
Readln(a[i]);
End;
Writeln;
For i:=1900 To n Do
If a[i]=x Then anul:=i;

109
Writeln('Anul=',Anul);
Readkey;
Readln;
End.

PROBLEMA 104.4.40
Se considera tabloul A[1..n] de numere in-
tregi,n<= 100. Sa se scrie un program care
determina indicii a doua elemente suma ca-
rora este maxima (adica cea mai mare dintre
sumele perechilor posibile).

Program P4_40;
Uses crt;
Var a:array[1..100] of integer;
i,j,n,k,l,max:integer;
Begin
Clrscr;
Writeln('Intodu componentul n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a [ ',i,']=');
Readln(a[i]);
End;
max:=a[1]+a[2];
Writeln;
For i:=1 To n Do
For j:=1 To n-1 Do
If a[j]+a[j+1]>max Then
max:=a[j]+a[j+1];
Writeln(' max=',max);

110
For i:=1 To n Do
For j:=1 To n-1 Do
If a[i]+a[j+1]=max Then
Writeln('i=',i,' ','j=',j+1);
Readkey;
End.

PROBLEMA 105.4.41
Se considera tabloul A[1..n] de numere in-
tregi diferite, n<=100.Sa se scrie un
program care determina elementul, ca
valoare, de ele-mentul maxim.

Program P4_41;
Uses crt;
Var a:array[1..100] of integer;
i,n,max:integer;
Begin
Clrscr;
Writeln('Introdu componentul n=');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
max:=a[1];
For i:=1 to n do
If a[i]>max Then max:=a[i];
Writeln('max=',max);
For i:=1 To n Do
If abs(a[i])=max Then

111
Writeln('a[',i,']=',a[i]);
Readkey;
Readln;
End.

PROBLEMA 106.4.42
Se considera tabloul A[1..n] de numere in-
tregi ,n<=100.Sa se scrie un program care
de-termina cea mai lunga segventa de zerouri.

Program P4_42;
Uses crt;
Var a:array[1..100] of integer;
i,n,k:integer;
Begin
Clrscr;
Writeln('Introdu componentul n=');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
k:=0;
For i:=1 to n do
If (a[i]=0) And (a[i+1]=0) Then k:=k+1;
Writeln('k=',k);
Readkey;

112
Readln;
End.

PROBLEMA 107.4.43
Se considera tabloul A[1..n] de numere in-
tregi si un numar natural k ,n<=100,k<=n. Sa
se scrie un program care determina daca
exis-ta o segventa de k elemente de pozitii
conse-cutive ale caror valoare sa fie egala
cu 0.

Program P4_43;
Uses crt;
Var a:array[1..100] of integer;
i,n,k,l:integer;
Begin
Clrscr;
Writeln('Introdu componentul n=');
Readln(n);
Writeln('Introdu segventa k=');
Readln(k);
For i:=1 To n Do
Begin
Write('a[',i,']=');

113
Readln(a[i]);
End;
l:=0;
For i:=1 to n do
If a[i]=a[i+1] Then l:=l+1;
Writeln('l=',l);
If l=k Then Writeln('DA')
Else Writeln('NU');
Readkey;
Readln;
End.

PROBLEMA 108.4.44
Se considera tabloul X[1..n] de numere in-
tregi,n<=100. Sa se scrie un program care
de-termina lungimea celei mai lungi segvente
de elemente ordonate crescator.

Program P4_44;
Uses crt;
Var x:array [1..100] of integer;
i,n,k,nmax:integer;
Begin
Clrscr;
Write('Cite elemente are tabloul n=');
Readln(n);
Writeln('Dati',n,'numere intregi:');
For i:=1 To n Do
Begin
Write('a[',i,']=');

114
Read(x[i]);
End;
k:=1;
nmax:=0;
For i:=1 To n Do
If x[i]=x[i+1]-1 Then k:=k+1
Else Begin
If k>nmax Then nmax:=k;
k:=1;
End;
If k>nmax Then nmax:=k;
Write('Cea mai lunga segventa de
elemente orgonate ');
Writeln(nmax,' termeni');
Readkey;
Readln;
End.

PROBLEMA 109.4.45
Intr-un grup de n persoane fiecare isi
decla-ra virsta spunind un numar:anii.Sa se
scrie un program care afiseaza virsta pe
care o
au cele mai multe persoane in grup.

Program P4_45;
Uses crt;
Var x:array [1..100] of integer;
i,n,k,nmax:integer;
Begin
Clrscr;
Write('Cite persoane sunt n=');
Readln(n);

115
For i:=1 To n Do
Begin
Write('a[',i,']=');
Read(x[i]);
End;
k:=1;
nmax:=0;
For i:=1 To n Do
Begin
If x[i]=x[i+1] Then k:=k+1
Else Begin
If k>nmax Then nmax:=k;
k:=1;
End;
If k>nmax Then Begin
nmax:=k;
Writeln(x[i]);
End;
End; Write('Cea mai lunga segventa de
elemente egale are ');
Writeln(nmax,' termeni');
Readln;
End.
PROBLEMA 110.4.46
Se considera tabloul A[1..n] de numere in-
tregi,in care unele valori se pot repeta.Sa
se scrie un program care determina elementul
care se repeta cel mai des.Daca sunt citeva
elemente de acest,atunci sa se indice unul
dintre ele.

Program P4_46;
Uses crt;
Var a:array [1..100] of integer;
i,j,n,k,nmax:integer;

116
Begin
Clrscr;
Write('Cite elemente are tabloul n=');
Readln(n);
Writeln('Dati',n,'numere intregi:');
For i:=1 To n Do
Begin
Write('a[',i,']=');
Read(a[i]);
End;
k:=1;
nmax:=0;
For i:=1 To n Do
For j:=2 To n Do
Begin
If a[i]=a[j] Then k:=k+1
Else Begin
If k>nmax Then nmax:=k;
k:=1;
End;
If k>nmax Then Writeln(a[i]);
End;
Readkey;
Readln;
End.
PROBLEMA 111.4.47
Se considera tabloul A[1..n] de numere in-
tregi,n<=100.Sa se scrie un program care
afi-seaza mai intii elementele nenule,apoi
cele nule.

Program P4_47;
Uses crt;
Var a:array[1..100] of integer;
i,j,n,l:integer;

117
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
Writeln;
l:=0;
For i:=1 To n Do
If (a[i]>0) or (a[i]<0) Then
Begin
Write(a[i],' ');
l:=l+1;
End;
For i:=1 To n Do
If a[i]=0 Then Write(a[n-i+l+3],' ');
Readkey;
Readln;
End.

PROBLEMA 112.4.48
Se considera tabloul X[1..n] de numere in-
tregi,n<=100.Sa se scrie un program care
afi-seaza numerele pozitive,apoi cele
negative si la sfirsit cele nule.

Program P4_48;
Uses crt;

118
Var x:array[1..100] of integer;
i,n:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('x[',i,']=');
Readln(x[i]);
End;
Writeln;
For i:=1 To n Do
If x[i]>0 Then Write(x[i],' ');
For i:=1 To n Do
If x[i]<0 Then Write(x[i],' ');
For i:=1 To n Do
If x[i]=0 Then Write(x[i],' ');
Readln;
End.

PROBLEMA 113.4.49
Se considera tabloul X[1..n] format din nu-
mere de 0,1 sau 2,n<=100. Sa se scrie un
pro-gram care afiseaza mai intii numerele
egale cu 1, apoi egale cu 2 si la sfirsit

119
cele ega-le cu 0.

Program P4_49;
Uses crt;
Var x:array[1..100] of integer;
i,n:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('x[',i,']=');
Readln(x[i]);
End;
Writeln;
For i:=1 To n Do
If x[i]=1 Then Write(x[i],' ');
For i:=1 To n Do
If x[i]=2 Then Write(x[i],' ');
For i:=1 To n Do
If x[i]=0 Then Write(x[i],' ');
Readln;
End.

PROBLEMA 114.4.50
Se considera tabloul A[1..2n] de numere in-
tregi,n<=50.Sa se scrie un program care afi-

120
seaza intr-o linie primele n elemente, iar
in alta linie urmaroarele n elemente.

Program P4_50;
Uses crt;
Var x:array[1..100] of integer;
i:integer; n:1..50;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To 2*n Do
Begin
Write('x[',i,']=');
Readln(x[i]);
End;
Writeln;
For i:=1 To n Do Write(x[i],' ');
Writeln;
For i:=n+1 To 2*n Do Write(x[i],' ');
Readln;
End.

PROBLEMA 115.4.51

121
Se considera tabloul A[1..n] de numere in-
tregi,n<=100.Sa se scrie un program care
afi-seaza: in prima linie numerele pozitive;
in a doua linie numarul elementelor
pozitive; in a treia linie numerele
negative; in a patra li-nie numarul
elementelor negative.

Program P4_51;
Uses crt;
Var a:array[1..100] of integer;
i,n,k,l:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
Writeln;k:=0;
For i:=1 To n Do
If a[i]>0 Then Begin
Write(a[i],' ');
k:=k+1;
End;Writeln;
Writeln(k);l:=0;
For i:=1 To n Do
If a[i]<0 Then Begin
Write(a[i],' ');
l:=l+1;
End;Writeln;
Writeln(l);
Readln;

122
End.

PROBLEMA 116.4.52
Se considera tabloul A[1..n] de numere natu-
rale,n<=100.Sa se scrie un program care afi-
seaza divizorii fiecarui element din tablou.
Rezultatul se va afisa in forma:elenemtul
di-vizorii .

Program P4_52;
Uses crt;
Var a:array[1..100] of integer;
i,j,n:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
Writeln;
For i:=1 To n Do
Begin
Writeln('a[',i,'] divizorii ');
For j:=1 To n Do
Begin
If a[i] mod j=0 Then
Writeln(j,' ' );
End;
End;
Readln;
End.

123
PROBLEMA 117.4.53
Se considera tabloul A[1..n] de numere in-
tregi,n<=100.Sa se scrie un program care in-
locuieste elementele mai mari ca 10 cu
patra-tul lor.

Program P4_53;
Uses crt;
Var a:array[1..100] of integer;
i,n:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
Writeln;
For i:=1 To n Do
Begin
If a[i]>10 Then Write(a[i]*a[i],' ') ;
If a[i]<=10 Then Write(a[i],' ');
End;
Readkey;
Readln;
End.

124
PROBLEMA 118.4.54
Se considera tabloul A[1..n] de numere in-
tregi,n<=100.Sa se scrie un program care ma-
reste fiecare element cu 5.

Program P4_54;
Uses crt;
Var a:array[1..100] of integer;
i,n:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
Writeln;
For i:=1 To n Do
Write(a[i]+5,' ');
Readkey;
Readln;
End.

125
PROBLEMA 119.4.55
Se considera tabloul A[1..n] de numere in-
tregi,n<=100.Sa se scrie un program care in-
locuieste de pe locurile impare cu 100.

Program P4_55;
Uses crt;
Var a:array[1..100] of integer;
i,n:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
Writeln;
i:=1;
While i<=n Do
Begin
a[i]:=100;
Write(a[i],' ') ;
Write(a[i+1],' ');
i:=i+2;
End;

126
Readkey;
Readln;
End.

PROBLEMA 120.4.56
Se considera tabloul A[1..n] de numere in-
tregi distincte,n<=100. Sa se scrie un pro-
gram care efectuiaza interschimbarea elemen-
tului maxim cu elementul minim.

Program P4_56;
Uses crt;
Var a:array [1..100] of integer;
i,n,k,q,min,max:integer;
Begin
Clrscr;
Write('Cite elemente are tabloul n=');
Readln(n);
Writeln('Dati',n,'numere intregi:');
For i:=1 To n Do
Begin
Write('a[',i,']=');
Read(a[i]);
End;
max:=a[1];min:=a[1];
For i:=1 To n Do
Begin
If a[i]>=max Then Begin
max:=a[i]

127
;
k:=i;
End;
If a[i]<=min Then Begin
min:=a[i]
;
q:=i;
End;
End; a[k]:=min; a[q]:=max;
For i:=1 To n Do
Write(a[i],' ');
Readkey;
Readln;
End.
PROBLEMA 121.4.57
Se considera tabloul A[1..n] de numere in-
tregi ,n<=100 si un numar intreg X.Sa se
scrie un program care modifica elementele
acestui tablou ,adaugind la elementele de pe
locurile pare numarul X.

Program P4_57;
Uses crt;
Var a:array [1..100] of integer;
i,n,x:integer;
Begin
Clrscr;
Write('Cite elemente are tabloul n=');
Readln(n);
Readln(x);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Read(a[i]);
End;

128
i:=2;
Write(a[1],' ');
While i<=n Do
Begin
Write(a[i]+x,' ');
Write(a[i+1],' ');
i:=i+2;
End;
Readkey;
Readln;
End.

PROBLEMA 122.4.58
Se considera tabloul A[1..n] de numere rea-
le,n<=100. Sa se scrie un program care modi-
fica tabloul in felul urmator :elementele mi-
nime le inlocuieste cu media aritmetica a
tu-turor elementelor,iar elementele maxime-
cu suma elementelor pozitive.

Program P4_58;
Uses crt;
Var a:array [1..100] of real;
i,n,k,q:integer;
s1,s,s2,max,min:real;
Begin
Clrscr;
Write('Cite elemente are tabloul n=');
Readln(n);
Writeln('Dati',n,'numere intregi:');
For i:=1 To n Do

129
Begin
Write('a[',i,']=');
Read(a[i]);
End; max:=a[1];min:=a[1]; s:=0; s2:=0;
For i:=1 To n Do
Begin
If a[i]>=max Then Begin
max:=a[i]; k:=i; End;
If a[i]<=min Then Begin
min:=a[i]; q:=i; End;
s:=s+a[i];
If a[i]>0 Then s2:=s2+a[i];
End; s1:=s/n; a[k]:=s2; a[q]:=s1;
For i:=1 To n Do
Write(a[i]:5:2,' ');
Readkey;
Readln;
End.
PROBLEMA 123.4.59
Se considera tabloul A[1..n] de numere reale
,n<=100. Sa se scrie un program care
modifica tabloul in felul urmator:
elementele negative le inlocuieste cu
elementul maxim, elementele pozitive-cu
media aritmetica a tuturor ele-mentelor,iar
elementele nule-cu 100.

Program P4_59;
Uses crt;
Var a:array [1..100] of real;
i,n,k:integer;
s,max,s1:real;
Begin
Clrscr;
Write('Cite elemente are tabloul n=');

130
Readln(n);
Writeln('Dati',n,'numere intregi:');
For i:=1 To n Do
Begin
Write('a[',i,']=');
Read(a[i]);
End; max:=a[1];
For i:=1 To n Do
Begin
If a[i]>=max Then Begin
max:=a[i]; k:=i; End;
s:=s+a[i];
End;s1:=s/n;
For i:=1 To n Do
Begin
If a[i]<0 Then Write(max:5:2,' ');
If a[i]>0 Then Write(s1:5:2,' ');
If a[i]=0 Then Write(100,' ');
End; Readkey;
Readln;
End.
PROBLEMA 124.4.60
Se considera tabloul A[1..n] de numere in-
tregi, n<=100.Sa se scrie un program care
mo-difica tabloul in felul
urmator:elementele pozitive le inlocuieste
cu 1,cele negative-cu patratul lor,iar cele
nule-cu 7.

Program P4_60;
Uses crt;
Var a:array [1..100] of integer;
i,n,k,q,min,max:integer;
Begin
Clrscr;

131
Write('Cite elemente are tabloul n=');
Readln(n);
Writeln('Dati',n,'numere intregi:');
For i:=1 To n Do
Begin
Write('a[',i,']=');
Read(a[i]);
End;
For i:=1 To n Do
Begin
If a[i]>0 Then Write(1,' ');
If a[i]<0 Then Write(a[i]*a[i],' ');
If a[i]=0 Then Write(7,' ');
End;
Readkey;
Readln;
End.

PROBLEMA 125.4.61
Se considera tabloul A[1..10] de numere in-
tregi,n<=100. Sa se scrie un program care
mo-difica tabloul, scriind in ordine inversa
elementele din prima jumatate a tabloului,
apoi in ordine inversa elementele din juma-
tatea a doua a tabloului:A[5],A[4],A[3],A[2]
,A[1],A[10],A[9], A[8],A[7],A[6].

Program P4_61;

132
Uses crt;
Var a:array [1..10] of integer;
i,n:integer;
Begin
Clrscr;
Writeln('Introdu n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Read(a[i]);
End;
For i:=n div 2 Downto 1 Do
Write(a[i],' ');
For i:=n Downto n div 2+1 Do
Write(a[i],' ');
Readkey;
Readln;
End.

PROBLEMA 126.4.62
Se considera tabloul A[1..n] (n-numar par)
de numere intregi,n<=100. Sa se modifice
acest tablou, schimbind primul element cu al
doilea ,al treilea element cu al
patrulea,s.a.m.d...

Program P4_62;

133
Uses crt;
Var a:array [1..100] of integer;
i,n,k,q,min,max:integer;
Begin
Clrscr;
Write('Cite elemente are tabloul n=');
Readln(n);
Writeln('Dati',n,'numere intregi:');
For i:=1 To n Do
Begin
Write('a[',i,']=');
Read(a[i]);
End;
For i:=1 To n Do
Begin
a[i]:=a[i+1];
Write(a[i],' ');
i:=i+1;
End;
Readkey;
Readln;
End.

PROBLEMA 127.4.63
Se considera tabloul A[1..n] de numere in-
tregi, n<=100. Sa se scrie un program care
efectuiaza deplasarea spre stinga cu o po-

134
zitie a ele mentelor A[2],A[3],...,A[n].
Pri-mul element va fi scris pe ultima
pozitie.

Program P4_63;
Uses crt;
Var a:array [1..100] of integer;
i,k,n,m:integer;
Begin
Clrscr;
Write('Cite elemente are tabloul n=');
Readln(n);Readln(m);

Writeln('Dati',n,'numere intregi:');
For i:=1 To n Do
Begin
Write('a[',i,']=');
Read(a[i]);
End;
For i:=m To n-m Do
Begin
a[i]:=a[i+1];
Write(a[i],' ');

End;
Write(a[m],' ')
For i:=1 To m-3 Do
Begin
a[i]:=a[i+1];
Write(a[i],' ');
End;
Readkey;
Readln;
End.
PROBLEMA 128.4.64

135
Se considera tabloul A[1..n] de numere in-
tregi, n<=100. Sa se scrie un program care
efectuiaza deplasarea spre stinga cu o po-
zitie a elementelor
A[2],A[3],...,A[n].Primul element va fi
scris pe ultima pozitie.

Program P4_64;
Uses crt;
Var a:array [1..100] of integer;
i,k,n:integer;
Begin
Clrscr;
Write('Cite elemente are tabloul n=');
Readln(n);
Writeln('Dati',n,'numere intregi:');
For i:=1 To n Do
Begin
Write('a[',i,']=');
Read(a[i]);
End;
Write(a[2],' ');
For i:=2 To n-1 Do
Begin
a[i]:=a[i+1];
Write(a[i],' ');

End;
Write(a[i-n+2],' ');
Readkey;
Readln;
End.

136
PROBLEMA 129.4.65
Se considera tabloul X[1..10] de numere in-
tregi egale numai cu 0,1 sau 2. Sa se scrie
un program care aranjeaza pe primele locuri
elementele egale cu 1, apoi cele egale cu 0,
apoi cele egale cu 2.

Program P4_65;
Uses crt;
Var x:array [1..10] of integer;
i,n:integer;
Begin
Clrscr;
Writeln('Introdu componentul n:');
Readln(n);
For i:=1 To n Do
Begin
Write('x[',i,']=');
Readln(x[i]);
End;
For i:=1 To n Do
If x[i]=1 Then Write(x[i],' ');
For i:=1 To n Do
If x[i]=0 Then Write(x[i],' ');
For i:=1 To n Do
If x[i]=2 Then Write(x[i],' ');
Readkey;
Readln;
End.

137
PROBLEMA 130.4.66
Se considera tabloul A[1..n] de numere in-
tregi pozitive,n<=100. Sa se scrie un
program care modifica tabloul in felul
urmator:ele-mentele egale cu 2 le
inlocuieste cu 4,ele-mentele egale cu 4 le
inlocuieste cu 8, iar elementele egale cu 8
le inlocuieste cu 2.

Program P4_66;
Uses crt;
Var a:array [1..100] of integer;
i,n:integer;
Begin
Clrscr;
Writeln('Introdu componentul n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
For i:=1 To n Do
If a[i]=2 Then Write('a[',i,']=4, ');
For i:=1 To n Do
If a[i]=4 Then Write('a[',i,']=8, ');
For i:=1 To n Do
If a[i]=8 Then Write('a[',i,']=2, ');
Readkey;
Readln;
End.

138
PROBLEMA 131.4.67
Se considera tabloul A[1..n] de numere in-
tregi ,n<=100.Sa se scrie un program care
or-doneaza descrescator elementele acestui
ta-blou.

Program P4_67;
Uses crt;
Var a:array [1..100] of integer;
i,j,aux,n:integer;
Begin
Clrscr;
Writeln('Introdu componentul n:');
Readln(n);
For i:=1 To n Do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
For i:=1 To n-1 Do
For j:=1 To n-1 Do
If a[j]<a[j+1] Then
Begin
aux:=a[j];
a[j]:=a[j+1];
a[j+1]:=aux;
End;
Write('Tabloul ordonat:');

139
For i:=1 To n Do Write(a[i],' ');
Readkey;
Readln;
End.

PROBLEMA 132.4.68
Se considera numarul natural N format din
cel mult 9 cifre.Sa se scrie un program care
in-scrie in tabloul unidimensional
B,divizorii numarului N.

Program P4_68;
Uses crt;
Var b:array [1..100] of integer;
i,j,n:integer;
Begin
Clrscr;
Writeln('Introdu numarul n:');
Readln(n);
For i:=1 To n Do
If n mod i=0 Then
Begin
b[i]:=i;
Write(i,' ' );
End;
Readkey;
Readln;
End.

140
PROBLEMA 133.4.69
Sa se scrie un program care creaza un tablou
A[1..n] ,n<=100,din
a) numere naturale in ordine crescatoare
(1,2,...,n)
b) numerele naturale in ordine
descrescatoare (n,n-1,...,1).

Program P4_69;
Uses crt;
Var a:array [1..100] of integer;
i,n:integer;
Begin
Clrscr;
Writeln('Introdu componentul n:');
Readln(n);
For i:=1 To n Do
Write('a[',i,']=',i,' ');
Writeln;
For i:=n Downto 1 Do
Write('a[',i,']=',i,' ');
Readkey;
Readln;
End.

141
Programe cu tablouri bidimensionale

PROBLEMA 134.5.1
Se considera tabloul A[1..n,1..m] de numere
intregi,n,m<=20.Sa se scrie un program care
calculeaza suma si produsul elementelor po-
zitive.

Program P5_1;
Uses crt;
Var a:array [1..20,1..20] of integer;
i,j,n,m,s,p:integer;
Begin
Clrscr;
Writeln('Introdu componentele n,m:');
Readln(n,m);
Writeln('Introdu un tablou cu ',n,'linii
si ',m,'coloane:');
For i:=1 To n Do
For j:=1 To m Do
Begin
Write('a[',i,',',j,']=');

142
Read(a[i,j]);
End;
s:=0;
p:=1;
For i:=1 To n Do
For j:=1 To m Do
If a[i,j]>0 Then Begin
s:=s+a[i,j];
p:=p*a[i,j];
End;
Writeln('s=',s);
Writeln('p=',p);
Readkey; Readln;
End.
PROBLEMA 135.5.2
Se considera tabloul A[1..n,1..m] de numere
intregi,unde n, m<=20. Sa se scrie un
program care determina numarul elementelor
mai mari
decit media aritmetica a tuturor lementelor.

Program P5_2;
Uses crt;
Var a:array [1..20,1..20] of integer;
i,j,n,m,s,k:integer; s1:real;
Begin
Clrscr;
Writeln('Introdu componentele n,m:');
Readln(n,m);
Writeln('Introdu un tablou cu ',n,'linii
si ',m,'coloane:');
For i:=1 To n Do
For j:=1 To m Do
Begin
Write('a[',i,',',j,']=');

143
Read(a[i,j]);
End;
s:=0;
For i:=1 To n Do
For j:=1 To m Do
s:=s+a[i,j];
s1:=s/(n+m);
k:=0;
For i:=1 To n Do
For j:=1 To m Do
If a[i,j]>s1 Then k:=k+1;
Writeln('k=',k);
Readkey;
Readln;
End.

PROBLEMA 136.5.3
Se considera tabloul A[1..n,1..m] de numere
intregi,unde n, m<=20. Sa se scrie un
program care determina elementul maxim.

Program P5_3;
Uses crt;
Var a:array [1..20,1..20] of integer;
i,j,n,m,max:integer;
Begin
Clrscr;
Writeln('Introdu componentele n,m:');
Readln(n,m);
Writeln('Introdu un tablou cu ',n,'linii
si ',m,'coloane:');
For i:=1 To n Do
For j:=1 To m Do
Begin

144
Write('a[',i,',',j,']=');
Read(a[i,j]);
End;
max:=a[1,1];
For i:=1 To n Do
For j:=1 To m Do
If a[i,j]>max Then max:=a[i,j];
Writeln('max=',max);
Readkey;
Readln;
End.

PROBLEMA 137.5.4
Se considera tabloul A[1..n,1..m] de numere
intregi,unde n, m<=20. Sa se scrie un
program care determina elementul minim si
pozitia lui.

Program P5_4;
Uses crt;
Var a:array [1..20,1..20] of integer;
i,j,n,m,min:integer;
Begin
Clrscr;
Writeln('Introdu componentele n,m:');
Readln(n,m);
Writeln('Introdu un tablou cu ',n,'linii
si ',m,'coloane:');

145
For i:=1 To n Do
For j:=1 To m Do
Begin
Write('a[',i,',',j,']=');
Read(a[i,j]);
End;
min:=a[1,1];
For i:=1 To n Do
For j:=1 To m Do
If a[i,j]<min Then min:=a[i,j];
For i:=1 To n Do
For j:=1 To m Do
If a[i,j]=min Then
Write('a[',i,',',j,']',' ');
Writeln;
Writeln('min=',min);
Readkey;
Readln;
End.

PROBLEMA 138.5.5
Se considera tabloul Y[1..n,1..m] de numere
intregi,unde n, m<=20. Sa se scrie un
program care determina elementul minim si
elemen-tulmaxim, precum si pozitiile
acestora.

Program P5_5;
Uses crt;
Var y:array [1..20,1..20] of integer;
i,j,n,m,min,max,k,l:integer;
Begin Clrscr;
Writeln('Introdu componentele n,m:');

146
Readln(n,m);
Writeln('Introdu un tablou cu ',n,'linii
si ',m,'coloane:');
For i:=1 To n Do
For j:=1 To m Do
Begin
Write('y[',i,',',j,']=');
Read(y[i,j]);
End;
min:=y[1,1]; max:=y[1,1];
For i:=1 To n Do
For j:=1 To m Do
Begin
If y[i,j]<min Then min:=y[i,j];
If y[i,j]>max Then max:=y[i,j];
End; Writeln('max=',max,' ' ,'min=',min);
For i:=1 To n Do
For j:=1 To m Do
Begin
If y[i,j]=max Then
Write('y[',i,',',j,']',' ');
If y[i,j]=min Then
Write('y[',i,',',j,']',' ');
End; Readln;
End.
PROBLEMA 139.5.6
Se considera tabloul A[1..n,1..n] de numere
intregi,unde n, m<=20. Sa se scrie un
program care determina elementul maxim de pe
diago-
nala principala si elementul maxim de pe di-
agonala secundara.

Program P5_6;
Uses crt;

147
Var a:array [1..20,1..20] of integer;
i,j,n,max1,max2:integer;
Begin
Clrscr;
Writeln('Introdu componentul n:');
Readln(n);
Writeln('Introdu un tablou cu ',n,'linii
si ',n,'coloane:');
For i:=1 To n Do
For j:=1 To n Do
Read(a[i,j]);
max1:=a[1,1];max2:=a[1,n];
For i:=1 To n Do
If a[i,i]>max1 Then max1:=a[i,i];
For j:=n Downto 1 Do
For i:=1 To n Do
If a[i,j]>max2 Then max2:=a[i,j];
Writeln('max1=',max1);
Writeln('max2=',max2);
Readkey;
Readln;
End.

PROBLEMA 140.5.7
Se considera tabloul A[1..n,1..n] de numere
intregi,unde n, m<=20. Sa se scrie un
program care zerografiaza diagonala
principala .

Program P5_7;

148
Uses crt;
Var a:array [1..20,1..20] of integer;
i,j,n:1..20;
Begin
Clrscr;
Write('Introdu componentul n:');
Readln(n);
For i:=1 To n Do
For j:=1 To n Do
Begin
Write('a[',i,',',j,']=');
Read(a[i,j]);
End;
For i:=1 To n Do
a[i,i]:=0;
Writeln ('Tabloul cu diagonala
principala
zerografiata:');
For i:=1 To n
Begin
For j:=1 To n Do Write(a[i,j]:4);
Writeln
End;
Readkey;
Readln;
End.

PROBLEMA 141.5.8
Se considera tabloul A[1..n,1..n] de numere
intregi,n<=20.Sa se scrie un program care

149
schimba in opus semnele elementelor situate
deasupra diagonalei principale.

Program P5_8;
Uses crt;
Var a:array [1..20,1..20] of integer;
i,j,n:integer;
Begin
Clrscr;
Writeln('Introdu componentul n:');
Readln(n);
Writeln('Introdu un tablou cu ',n,'linii
si ',n,'coloane:');
For i:=1 To n Do
For j:=1 To n Do
Read(a[i,j]);
For i:=1 To n Do
For j:=i+1 To n Do
a[i,j]:=-a[i,j];
Writeln;
For i:=1 To n Do
Begin
For j:=1 To n Do
Write(a[i,j]:4);
Writeln;
End;
Readkey;
Readln;
End.

PROBLEMA 142.5.9

150
Se considera tabloul A[1..n,1..n] de numere
intregi,n<=20.Sa se scrie un program care
zerografiaza elementele de pe diagonala se-
cundara si cele mai jos de ea.

Program P5_9;
Uses crt;
Var a:array [1..20,1..20] of integer;
i,j,n:integer;
Begin
Clrscr;
Writeln('Introdu componentul n:');
Readln(n);
Writeln('Introdu un tablou cu ',n,'linii
si ',n,'coloane:');
For i:=1 To n Do
For j:=1 To n Do
Read(a[i,j]);
For j:=n Downto 1 Do
For i:=n Downto n-j+1 Do
Begin
a[i,j]:=0;
Writeln;
End;
For i:=1 To n Do
Begin
For j:=1 To n Do
Write(a[i,j]:4);
Writeln;
End;
Readkey;
Readln;
End.

151
PROBLEMA 143.5.10
Se considera tabloul A[1..n,1..n] de numere
intregi,n<=20.Sa se scrie un program care
zerografiaza elementele de pe diagonala
secundara si cele mai jos de ea.

Program P5_10;
Uses crt;
Var a:array [1..20,1..20] of integer;
b:array [1..40] of integer;
i,j,k,n,m:integer;
Begin
Clrscr;
Writeln('Introdu componentele n,m:');
Readln(n,m);
Writeln('Introdu un tablou cu ',n,'linii
si ',n,'coloane:');
For i:=1 To n Do
For j:=1 To m Do
Read(a[i,j]);
For i:=1 To n Do
For j:=1 To m Do
Begin
If a[i,j]>0 Then Begin
b[i]:=a[i,j];
Write(b[i]:4);
End;
End;
Readkey;
Readln;
End.

152
PROBLEMA 144.5.11
Se considera tabloul A[1..n,1..m] de numere
intregi,n, m<=20. Sa se scrie un program
care calculeaza numarul de elemente pozitive
de pe
diagonala principala.

Program P5_11;
Uses crt;
Var a:array [1..20,1..20] of integer;
i,j,n,m,k:integer;
Begin
Clrscr;
Writeln('Introdu componentele n,m:');
Readln(n,m);
Writeln('Introdu un tablou cu ',n,'linii
si ',m,'coloane:');
For i:=1 To n Do
For j:=1 To m Do
Read(a[i,j]);
k:=0;
For i:=1 To n Do
If a[i,i]>0 Then k:=k+1;
Writeln('k=',k);
Readkey;
Readln;
End.

153
PROBLEMA 145.5.12
O tara are 50 orase, legate prin comunicatii
aeriene. Costul unui bilet din orasul i in
orasul j e indicat in tabloul bidimensional.
Pretul [1..50,1..50]. Sa se scrie un program
care gaseste o ruta din orasul i in orasul j
cu cel mai mic pret.

Program P5_12;
Uses crt;
Var a:array [1..20,1..20] of integer;
i,j,n,m,mic:integer;
Begin
Clrscr;
Writeln('Introdu componentele n,m:');
Readln(n,m);
Writeln('Introdu un tablou cu ',n,'linii
si ',m,'coloane:');
For i:=1 To n Do
For j:=1 To m Do
Begin
Write('a[',i,',',j,']=');
Read(a[i,j]);
End;
mic:=a[1,1];
For i:=1 To n Do
For j:=1 To m Do
If a[i,j]<mic Then mic:=a[i,j];
For i:=1 To n Do

154
For j:=1 To m Do
If a[i,j]=mic Then
Write('a[',i,',',j,'],',' ');
Readkey;
Readln;
End.

PROBLEMA 146.5.13
Se considera tabloul A[1..n,1..n] de numere
intregi,n, m<=20. Sa se scrie un program
care determina elementul minim si elementul
maxim
dintre elementele care se afla mai jos de
di-agonala principala si sa se efectuieze
inter-schimbarea lor.

Program P5_13;
Uses crt;
Var a:array [1..20,1..20] of integer;
i,j,n,k,s,p,l,x,max,min:integer;
Begin
Clrscr;
Writeln('Introdu componentele n:');
Readln(n);
Writeln('Introdu un tablou cu ',n,'linii
si ',n,'coloane:');
For i:=1 To n Do
For j:=1 To n Do
Read(a[i,j]);
max:=a[n,1]; min:=a[n,1];
For i:=n Downto 2 Do
For j:=1 To i-1 Do
Begin
If a[i,i]>=max Then Begin

155
max:=a[i,j]; k:=i; s:=j; End;
If a[i,j]<=min Then Begin
min:=a[i,j]; l:=i; p:=j; End;
End; writeln('max=',max,', ''min=',min);
a[k,s]:=min; a[l,p]:=max;
For i:=1 To n Do
Begin
For j:=1 To n Do Write(a[i,j],' ');
Writeln;
End; Readln;
End.
PROBLEMA 147.5.14
Se considera tabloul A[1..n,1..n] de numere
intregi,unde n<=20. Sa se scrie un program
care calculeaza suma elementelor care nu se
afla pe diagonala secundara.

Program P5_15;
Uses crt;
Var a:array[1..20,1..20] of integer;
i,j,n,s:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
Writeln('Introdu un tablou cu ',n,',linii
si ',n,'coloane:');
For i:=1 To n Do
For j:=1 To n Do
Read(a[i,j]);
Writeln;
s:=0;
For i:=1 To n Do
s:=s+a[i,i];
Writeln('s=',s);

156
For i:=1 To n Do
Begin
For j:=1 To n Do
Write(a[i,j]+s:4);
Writeln;
End;
Readkey;
Readln;
End.

PROBLEMA 148.5.15
Se considera tabloul A[1..n,1..n] de numere
intregi,unde n<=20. Sa se scrie un program
care calculeaza suma elementelor care nu se
afla pe diagonala secundara.

Program P5_15;
Uses crt;
Var a:array[1..20,1..20] of integer;
i,j,n,s,s1,s2:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
Writeln('Introdu un tablou cu ',n,',linii
si ',n,'coloane:');
For i:=1 To n Do
For j:=1 To n Do
Read(a[i,j]);
Writeln;
s:=0;
For i:=1 To n Do

157
For j:=1 To n Do
s:=s+a[i,j];
Writeln('s=',s);
s1:=0;
For i:=1 To n Do
s1:=s1+a[i,n+1-i];
Writeln('s1=',s1);
s2:=s-s1;
Writeln('s2=',s2);
Readkey;
Readln;
End.

PROBLEMA 149.5.16
Se considera tabloul A[1..n,1..n] de numere
intregi,unde n<=20. Sa se scrie un program
care calculeaza media aritmetica a elemente-
lor de diagonala principala si suma ele-
mentelor de pe diagonala secundara.

Program P5_16;
Uses crt;
Var a:array[1..20,1..20] of integer;
i,j,n,s,s1:integer; media:real;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
Writeln('Introdu un tablou cu ',n,',linii
si ',n,'coloane:');
For i:=1 To n Do
For j:=1 To n Do
Read(a[i,j]);

158
Writeln;
s:=0;
For i:=1 To n Do
s:=s+a[i,i];
Writeln('s=',s);
media:=s/n;
Writeln('media=',media:5:2);
s1:=0;
For i:=1 To n Do
s1:=s1+a[i,n+1-i];
Writeln('s1=',s1);
Readkey;
Readln;
End.

PROBLEMA 150.5.17
Se considera tabloul A[1..n,1..m] de numere
intregi,unde n,m<=20. Sa se scrie un program
care determina numarul elementelor nenule de
pe fiecare linie.

Program P5_17;
Uses crt;
Var a:array [1..20,1..20] of integer;
i,j,n,m,k:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor
n,m:');
Readln(n,m);
Writeln('Introdu un tablou cu ',n,',linii
si ',m,'coloane:');
For i:=1 To n Do

159
For j:=1 To m Do
Read(a[i,j]);
Writeln;
For i:=1 To n Do
Begin
k:=0;
For j:=1 To m Do
If a[i,j]>0 Then k:=k+1;
Writeln('Numarul elementelor pozi-
tive de pe linia ',i,'este:',k);
End;
Readkey;
Readln;
End.

PROBLEMA 151.5.18
Se considera tabloul A[1..n,1..m] de numere
intregi,unde n,m<=20. Sa se scrie un program
care calculeaza suma si produsul elementelor
de pe fiecare linie.

Program P5_18;
Uses crt;
Var a:array [1..20,1..20] of integer;
b:array [1..20] of integer;
i,j,n,m,s,p:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor
n,m:');
Readln(n,m);

160
Writeln('Introdu un tablou cu ',n,',
linii si ',m,'coloane:');
For i:=1 To n Do
For j:=1 To m Do
Read(a[i,j]);
Writeln;
For i:=1 To n Do
Begin
s:=0; p:=1;
For j:=1 To m Do
Begin
s:=s+a[i,j];
p:=p*a[i,j];
End;
Writeln('Suma elementelor de pe linia ',i,'
este:',s);
Writeln('Produsul elementelor de pe linia
',i,'este:',p);
End; Readkey;
Readln;
End.
PROBLEMA 152.5.19
Se considera tabloul A[1..n,1..n] de numere
intregi,unde n<=20. Sa se scrie un program
care creaza un vector din elementele diago-
nalei principale.

Program P5_19;
Uses crt;
Var a:array [1..20,1..20] of integer;
b:array [1..20] of integer;
i,j,n:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');

161
Readln(n);
Writeln('Introdu un tablou cu ',n,',
linii si ',n,'coloane:');
For i:=1 To n Do
For j:=1 To n Do
Read(a[i,j]);
Writeln;
For i:=1 To n Do
Begin
b[i]:=a[i,i];
Write(b[i]:4);
End;
Readkey;
Readln;
End.

PROBLEMA 153.5.20
Se considera tabloul A[1..n,1..m] de numere
intregi,unde n,m<=20. Sa se scrie un program
care creaza un tablou B[1..n] din sumele
ele-mentelor de pe linii din tabloul A.

Program P5_20;
Uses crt;
Var a:array [1..20,1..20] of integer;
b:array [1..20] of integer;
i,j,n,m,s:integer;
Begin

162
Clrscr;
Writeln('Intodu numarul componentelor
n,m:');
Readln(n,m);
Writeln('Introdu un tablou cu ',n,',
linii si ',m,'coloane:');
For i:=1 To n Do
For j:=1 To m Do
Read(a[i,j]);
Writeln;
For i:=1 To
Readkey;
Readln;
End.

PROBLEMA 154.5.21
Se considera tabloul A[1..n,1..m] de numere
reale,unde n,m<=20. Sa se scrie un program
care creaza un tablou B[1..m] din produsul
elementelor de pe coloane din tabloul A.

Program P5_21;
Uses crt;
Var a:array [1..20,1..20] of real;
b:array [1..20] of real;

163
i,j,n,m:integer; p:real;
Begin
Clrscr;
Writeln('Intodu numarul componentelor
n,m:');
Readln(n,m);
Writeln('Introdu un tablou cu ',n,',
linii si ',m,'coloane:');
For i:=1 To n Do
For j:=1 To m Do
Read(a[i,j]);
Writeln;
For j:=1 To m Do
Begin
p:=1;
For i:=1 To n Do
p:=p*a[i,j];
b[j]:=p;
Writeln(b[j] :4:2);
End;
Readkey;
Readln;
End.

PROBLEMA 155.5.22
Se considera tabloul X[1..n,1..m] de numere
reale,unde n,m<=20. Sa se scrie un program
care creaza un tablou Y[1..n] din elementele
maxime de pe linii din tabloul X.

Program P5_22;
Uses crt;

164
Var x:array [1..20,1..20] of integer;
y:array [1..20] of integer;
i,j,n,m,max:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor
n,m:');
Readln(n,m);
Writeln('Introdu un tablou cu ',n,',
linii si ',m,'coloane:');
For i:=1 To n Do
For j:=1 To m Do
Read(x[i,j]);
Writeln;
For i:=1 To n Do
Begin
max:=x[i,1];
For j:=1 To m Do
If x[i,j]>max Then max:=x[i,j];
y[i]:=max;
Writeln(y[i] :4);
End;
Readkey;
Readln;
End.

PROBLEMA 156.5.23
Se considera tabloul A[1..n,1..m] de numere
reale,unde n,m<=20. Sa se scrie un program
conform caruia la fiecare element al liniei
i se adauga elementul A[i,i] al tabloul
initial.

165
Program P5_23;
Uses crt;
Var a,b:array [1..20,1..20] of integer;
i,j,n,m,s:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor
n,m:');
Readln(n,m);
Writeln('Introdu un tablou cu ',n,',
linii si ',m,'coloane:');
For i:=1 To n Do
For j:=1 To m Do
Read(a[i,j]);
Writeln;
For j:=1 To m Do
Begin
For i:=1 To n Do
Begin
s:=0;
s:=s+a[i,j]+a[i,i];
b[j,i]:=s;
Writeln('b[',j,',',i,']=',b[j,i] :4);
End;
End;
Readkey;
Readln;
End.

PROBLEMA 157.5.24
Se considera tabloul A[1..n,1..m] de numere
intregi si un numar intreg X,unde n,m<=20.
Sa se scrie un program care determina daca

166
in tabloul A exista elemente egale cu X.

Program P5_24;
Uses crt;
Var a:array [1..20,1..20] of integer;
i,j,n,m,x:integer;
Begin
Clrscr;
Writeln('Introdu numarul x:');
Readln(x);
Writeln('Intodu numarul componentelor
n,m:');
Readln(n,m);
Writeln('Introdu un tablou cu ',n,',
linii si ',m,'coloane:');
For i:=1 To n Do
For j:=1 To m Do
Read(a[i,j]);
Writeln;
For i:=1 To n Do
For j:=1 To m Do
If a[i,j]=x Then
Write('a[',i,',',j,']=',a[i,j], ' ')
Else Writeln('Nu');
Readkey;
Readln;
End.

PROBLEMA 158.5.25
Se considera tabloul A[1..n,1..m] de numere

167
intregi,unde n,m<=20. Sa se scrie un program
care efectuiaza interschimbarea liniilor n1
si n2.Numerele n1(n1<n) si n2(n2<n) se
intro-duc de la tastatura.

Program P5_25;
Uses crt;
Var a:array [1..20,1..20] of integer;
i,j,n,m,aux,n1,n2:integer;
Begin
Clrscr;
Writeln('Introdu liniile n1,n2:');
Readln(n1,n2);
Writeln('Intodu numarul componentelor
n,m:');
Readln(n,m);
Writeln('Introdu un tablou cu ',n,',
linii si ',m,'coloane:');
For i:=1 To n Do
For j:=1 To m Do
Read(a[i,j]);
For j:=1 To m Do
Begin
aux:=a[n1,j];
a[n1,j]:=a[n2,j];
a[n2,j]:=aux;
End;
Writeln('Tabloul dupa schimbarea lini-
ilor n1 si', n2);
For i:=1 To n Do
Begin
For j:=1 To m Do Write(a[i,j]:4);
Writeln;
End; Readln;
End.

168
PROBLEMA 159.5.26
Se considera tabloul A[1..n,1..m] de numere
intregi,unde n,m<=20. Sa se scrie un program
care calculeaza suma elementelor de pe
fieca-re coloana.

Program P5_26;
Uses crt;
Var a:array [1..20,1..20] of integer;
i,j,n,m,s:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor
n,m:');
Readln(n,m);
Writeln('Introdu un tablou cu ',n,',
linii si ',m,'coloane:');
For i:=1 To n Do
For j:=1 To m Do
Read(a[i,j]);
Writeln;
For j:=1 To m Do
Begin
s:=0;
For i:=1 To n Do
s:=s+a[i,j];
Writeln(s:4);
End;
Readkey;
Readln;
End.

169
PROBLEMA 160.5.27
Se considera tabloul A[1..n,1..n] de numere
intregi,unde n<=20.Sa se scrie un program
care determina elementul maxim si elementul
minim pentru fiecare linie.

Program P5_27;
Uses crt;
Var a:array [1..20,1..20] of integer;
i,j,n,max,min:integer;
media1,media2:real;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
Writeln('Introdu un tablou cu ',n,',
linii si ',n,'coloane:');
For i:=1 To n Do
For j:=1 To n Do
Read(a[i,j]);
For j:=1 To n Do
Begin
min:=a[1,j];
For i:=1 To n Do
If a[i,j]<min Then min:=a[i,j];
Writeln('Minimul elementelor de
pe
linia ',j,'este:' ,min:4);
End;
For j:=1 To n Do
Begin
max:=a[1,j];
For i:=1 To n Do

170
If a[i,j]>max Then max:=a[i,j];
Writeln('Maximul elementelor de
pe
linia ',j,'este:' ,min:4);
End; Readln;
End.
PROBLEMA 161.5.28
Se considera tabloul A[1..n,1..m] de numere
intregi,unde n,m<=20. Sa se scrie un program
care creaza tabloul B[1..n,1..m],calculind
fiecar element dupa formula:
B[i,j]:=A[i,j] *A[i,j].

Program P5_28;
Uses crt;
Var a,b:array [1..20,1..20] of integer;
i,j,n,m,k,l:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor
n,m:');
Readln(n,m);
Writeln('Introdu un tablou cu ',n,',
linii si ',m,'coloane:');
For i:=1 To n Do
For j:=1 To m Do
Read(a[i,j]);
Writeln;
For i:=1 To n Do
Begin
For j:=1 To m Do
Begin
b[i,j]:=a[i,j]*a[i,j];
Writeln('b[',i,',',j,']=',b[i,j]);
End;

171
End;
Readkey;
Readln;
End.

PROBLEMA 162.5.29
Se considera tabloul A[1..n,1..m] de numere
intregi,unde n,m<=20. Sa se scrie un program
care calculeaza suma elementelor de pe
«peri-metrul» tabloului si suma celorlalte
elemen-te.

Program P5_29;
Uses crt;
Var a,b:array [1..20,1..20] of integer;
i,j,n,m,s,s1,s2,s3,s4,s5,p:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor
n,m:'); Readln(n,m);
Writeln('Introdu un tablou cu ',n,',
linii si ',m,'coloane:');
For i:=1 To n Do
For j:=1 To m Do Read(a[i,j]);
s1:=0; s2:=0; s3:=0; s4:=0; s5:=0;
For i:=1 To n Do
For j:=1 To m Do
s1:=s1+a[i,j];
For i:=1 To n Do
s2:=s2+a[i,1];
For j:=2 To n-1 Do

172
s3:=s3+a[1,j];
For i:=1 To n Do
s4:=s4+a[i,n];
For j:=2 To n-1 Do
s5:=s5+a[n,j];
p:=s2+s3+s4+s5;
Writeln('p=',p);
s:=s1-p;
Writeln('s=',s); Readln;
End.
PROBLEMA 163.5.30
Se considera tabloul A[1..n,1..n] de numere
intregi,unde n<=20.Sa se scrie un program
care determina numarul liniei cu cea mai mare
suma (prima linie cu aceasta proprietate).

Program P5_30;
Uses crt;
Var a:array[1..20,1..20] of integer;
b:array[1..20] of integer;
i,j,n,k,s,max:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
Writeln('Introduceti un tablou cu
',n,'
linii si ',n,' coloane:');
For i:=1 To n Do
For j:=1 To n Do
Read(a[i,j]);
For i:=1 To n Do
Begin
s:=0;
For j:=1 To n Do

173
s:=s+a[i,j];
b[i]:=s;
Write(b[i]:4);
End;
Writeln;
max:=b[1];
For i:=1 To n Do
If b[i]>=max Then k:=i;
Writeln('k=',k);
Readkey;
Readln;
End.

PROBLEMA 164.5.31
Se considera tabloul A[1..n,1..n] de numere
intregi,unde n<=20. Sa se scrie un program
care determina numarul liniei cu cele mai
multe elemente pozitive (prima linie cu
acea-sta proprietate).

Program P5_31;
Uses crt;
Var a:array[1..20,1..20] of integer;
b:array[1..20] of integer;
i,j,n,m,k,s,max:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
Writeln('Introduceti un tablou cu
',n,'
linii si ',n,' coloane:');
For i:=1 To n Do
For j:=1 To n Do
Read(a[i,j]);

174
For i:=1 To n Do
Begin
s:=0;k:=0;
For j:=1 To n Do
If a[i,j]>0 Then k:=k+1;
b[i]:=k;
Write(b[i]:4);
End;
Writeln;
k:=b[1];
For i:=1 To n Do
If b[i]>=k Then s:=i;
Writeln('k=',k);
Readkey;
Readln;
End.
PROBLEMA 165.5.32
Se considera tabloul A[1..n,1..n] de numere
intregi,unde n<=20.Sa se scrie un program
care determina numarul coloanei cu cel mai
mic produs al elementelor (prima linie cu
aceasta proprietate).

Program P5_32;
Uses crt;
Var a:array[1..20,1..20] of integer;
b:array[1..20] of integer;
i,j,n,k,p,mic:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
Writeln('Introduceti un tablou cu
',n,'
linii si ',n,' coloane:');

175
For i:=1 To n Do
For j:=1 To n Do
Read(a[i,j]);
For j:=1 To n Do
Begin
p:=1;
For i:=1 To n Do
p:=p*a[i,j];
b[j]:=p;
Write(b[j]:4);
End;
Writeln;
mic:=b[1];
For j:=1 To n Do
If b[j]<=mic Then k:=j;
Writeln('k=',k);
Readkey;
Readln;
End.
PROBLEMA 166.5.33
Se considera doua tablouri A[1..n,1..m] si
B[1..n,1..m] de numere intregi,unde
n,m<=20. Sa se scrie un program care
verifica daca fi-
ecare element din A are aceiasi valoare ca
si elementul de pe locul corespunzator din B.

Program P5_33;
Uses crt;
Var a:array[1..20,1..20] of integer;
b:array[1..20,1..20] of integer;
i,j,n,m,k,p,mic:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor

176
n,m:');
Readln(n,m);
Writeln('Introduceti un tablou cu
',n,'
linii si ',m,' coloane:');
Writeln('Introdu tabloul a:');
For i:=1 To n Do
For j:=1 To m Do
Read(a[i,j]);
Writeln('Introdu tabloul b:');
For i:=1 To n Do
For j:=1 To m Do
Read(b[i,j]);
i:=0; j:=0;
Repeat
i:=i+1; j:=j+1;
Until (i=n) and (j=n) or
(a[i,j]<>b[i,j]);
Write('Rezultatul:');
If a[i,j]=abs(b[i,j]) Then
Writeln('Tablourile sunt identice')
Else Writeln('Tablourile nu sunt identice');
End.
PROBLEMA 167.5.34
Se considera tabloul A[1..n,1..n] de numere
intregi,unde n<=20.Sa se scrie un program
ca-re determina elementul maxim pentru
fiecare
linie si calculeaza suma lor;elementul maxim
pentru fiecare coloana si suma lor.

Program P5_34;
Uses crt;
Var a:array[1..20,1..20] of integer;
b:array[1..20] of integer;

177
i,j,n,max1,max2,s:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
Writeln('Introduceti un tablou cu ',n,' li-
nii si ',n,' coloane:');
For i:=1 To n Do
For j:=1 To n Do
Read(a[i,j]);
For j:=1 To n Do
Begin
max1:=a[1,j]; s:=0;
For i:=1 To n Do
Begin
If a[i,j]>max1 Then
max1:=a[i,j];
s:=s+a[i,j];
End;
Writeln('Maximul de pe coloana ',j,'
este',' ', max1);
Writeln('Suma pe coloana ',j,' este','
', s);
End; For i:=1 To n Do
Begin
max2:=a[i,1]; s:=0;
For j:=1 To n Do
Begin
If a[i,j]>max2 Then
max2:=a[i,j];
s:=s+a[i,j];
End;
Writeln('Maximul de pe linia ',i,'
ste',' ', max2);
Writeln('Suma de pe linia ',i,'

178
este',' ', s);
End;
Readkey;
Readln;
End.

PROBLEMA 168.5.35
Se considera tabloul A[1..n,1..n] de numere
intregi si un numar C,unde n<=20.Sa se scrie
un program care afiseaza toate pozitiile in
care apare acest element.

179
Program P5_35;
Uses crt;
Var a:array[1..20,1..20] of integer;
i,j,n,c:integer;
Begin
Clrscr;
Writeln('Introdu c:');
Readln(c);
Writeln('Intodu numarul componentelor n:');
Readln(n);
Writeln('Introduceti un tablou cu
',n,'
linii si ',n,' coloane:');
For i:=1 To n Do
For j:=1 To n Do
Read(a[i,j]);
For i:=1 To n Do
Begin
For j:=1 To n Do
If a[i,j]=c Then
Writeln('i=',i,' ','j=',j);
End;
Readkey;
Readln;
End.

PROBLEMA 169.5.36
Se considera tabloul A[1..n,1..m] de numere
intregi si un numar k(1<=k<=n),unde n,m<=20.

180
Sa se scrie un program care exclude a coloa-
nei cu numarul k.

Program P5_36;
Uses crt;
Var a:array[1..20,1..20] of integer;
i,j,n,m,k:integer;
Begin
Clrscr;
Writeln('Introdu coloana k:');
Readln(k);
Writeln('Intodu numarul componentelor
n,m:');
Readln(n,m);
Writeln('Introduceti un tablou cu
',n,'
linii si ',m,' coloane:');
For i:=1 To n Do
For j:=1 To m Do
Read(a[i,j]);
If (k<1) or (k>n) Then
Begin
Write('Nu exista asa coloana');
Exit;
End;
For j:=k To m-1 Do
For i:=1 To n Do
a[i,j]:=a[i,j+1];
Dec(m);
Writeln('Tabloul fara coloana a ',k,'este:');
For i:=1 To n Do Begin
For j:=1 To m Do Write(a[i,j]:4);
Writeln;
End; Readln;
End.

181
PROBLEMA 170.5.37
Se considera tabloul A[1..n,1..m] de numere
intregi si un numar k(1<=k<=n),unde n,m<=20.
Sa se scrie un program care exclude linia si
coloana la intersectia carora se afla ele-
mrntul maxim de pe diagonala principala.

Program P5_37;
Uses crt;
Var a:array[1..20,1..20] of integer;
i,j,n,m,max,q,w:integer;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
Writeln('Introduceti un tablou cu
',n,'
linii si ',n,' coloane:');
For i:=1 To n Do
For j:=1 To n Do
Read(a[i,j]); max:=a[1,1];
For i:=1 To n Do
If a[i,i]>max Then Begin
max:=a[i,i];
q:=i;
End;
For i:=q To n-1 Do
For j:=1 To n Do
a[i,j]:=a[i+1,j];
Dec(n);
Writeln('Tabloul fara coloana a ',q,'
si linia ',q,' este:');
For i:=1 To n Do
Begin
For j:=1 To n Do Write(a[i,j]:4);

182
Writeln;
End; Readln;
End.
PROBLEMA 171.5.38
Se considera tabloul A[1..n,1..n] de numere
intregi,unde n<=20.Sa se scrie un program
ca-re determina daca acest tablou este un
patrat magic,adica sumele elementelor de pe
linii ,coloane si diagonale sunt egalea.

Program P5_38;
Uses crt;
Label nu,sf;
Var a:array[1..20,1..20] of integer;
i,j,n:integer;
dp,ds,so,sv:real;
Begin
Clrscr;
Writeln('Intodu numarul componentelor n:');
Readln(n);
Writeln('Introduceti un tablou cu
',n,'
linii si ',n,' coloane:');
For i:=1 To n Do
For j:=1 To n Do
Read(a[i,j]);
dp:=0; ds:=0; so:=0; sv:=0;
For i:=1 To n Do
Begin
dp:=dp+a[i,j];
ds:=ds+a[i,n+1-i];
If dp<>ds Then goto nu;
For j:=1 To n Do
Begin
so:=so+a[i,j]; sv:=sv+a[i,j];

183
End;
If (so<>dp) or (sv<>ds) Then goto
nu Else Writeln('Patrat magic'); goto sf;
nu:Writeln('Nu-i patrat magic' );
sf:readkey; End;
End.
PROBLEMA 172.5.39
Se considera tabloul A[1..n,1..n] de numere
intregi, unde n<=20.Sa se scrie un program
care determina elementul maxim de pe fiecare
sector, care se obtine la impartirea lui in
patru tablouri.De exemplu
2 5 3 6 in 2 5 3 6 4 8 0 1
4 9 0 7 4 9, 0 7, 7 9, 2 4.
0 1 4 8
2 4 7 9
Program P5_39;
Uses Crt;
Var a:array[1..20,1..20] of integer;
i,j,n,max1,max2,max3,max4:integer;
Begin Clrscr;
Write('Introdu n:'); Readln(n);
For i:=1 To n Do
For j:=1 To n Do
Read(a[i,j]); max1:=a[1,1];
For i:=1 To n div 2 Do
for j:=1 To n div 2 Do
If a[i,j]>max1 Then max1:=a[i,j];
Writeln('max1=',max1); max2:=a[1,n];
For i:=n Downto n div 2+1 Do
for j:=1 To n div 2+1 Do
If a[i,j]>max2 Then max2:=a[i,j];
Writeln('max2=',max2); max3:=a[n,n];
For i:=n Downto n div 2+1 Do
for j:=n Downto n div 2+1 Do

184
If a[i,j]>max3 Then max3:=a[i,j];
Writeln('max3=',max3); max4:=a[1,n];
For j:=n div 2+1 To n Do
for i:=1 To n div 2 Do
If a[i,j]>max4 Then max4:=a[i,j];
Writeln('max4=',max4);
Readkey; Readln;
End.
Programe cu siruri de caractere

PROBLEMA 173.6.1
Sa se scrie un program care citeste un sir
de caractere si afiseaza lungimea lui.

Program P6_1;
Uses Crt;
Var s:string;
p:integer;
Begin
Clrscr;
Writeln('Introdu un sir de caractere:');
Readln(s);
Write('A fost introdus sirul:');
Writeln(s);
p:=Length(s);
Writeln('Sirul s contine', p,',caractere');
Readkey;
Readln;
End.

185
PROBLEMA 174.6.2
Se considera un sir de caractere.Sa se scrie
un program care calculeaza numarul sumar de
aparitii ale caracterelor "a" si "b".

Program P6_2;
Uses Crt;
Var s,a,b:string;
i,k,l,total:integer;
Begin
Clrscr;
Writeln('Introdu un sir de caractere:');
Readln(s);
Write('Introdu caracterul a:');
Readln(a);
k:=0;
For i:=1 To Length(s) Do
If s[i]=a Then k:=k+1;
Writeln('k=',k);
Write('Introdu caracterul b:');
Readln(b);
l:=0;
For i:=1 To Length(s) Do
If s[i]=b Then l:=l+1;
Writeln('l=',l);
total:=k+l;

186
Writeln('total=',total);
Readkey;
Readln;
End.

PROBLEMA 175.6.3
Se considera un cuvint, care consta din
lite-re mici ale alfabetului latin.Sa se
scrie un program care:
a) numara aparitia silabei "re";
b) inlocuieste secventa "do" cu "re".

Program P6_3;
Uses Crt;
Var s:string;
i,k:integer;
Begin
Clrscr;
Writeln('Introdu un sir de caractere:');
Readln(s);
k:=0;
For i:=1 To Length(s) Do
If (s[i]='r') and (s[i+1]='e') Then
k:=k+1;
Writeln('In sir se intilnesc ',k,'
silabe de "re" ');
For i:=1 To Length(s) Do
If (s[i]='d') and (s[i+1]='o') Then
Begin

187
s[i]:='r';
s[i+1]:='e';
End;
Write('Sirul obtinut este: ',s);
Readkey;
Readln;
End.

PROBLEMA 176.6.4
Sa se scrie un program care afiseaz "DA" sau
"NU", in dependenta de faptul daca o litera
arbitrara x se contine sau nu in cuvintul
dat y.

Program P6_4;
Uses Crt;
Var s:string;
i,k:integer;
Begin
Clrscr;
Writeln('Introdu un cuvint:');
Readln(s);
For i:=1 To Length(s) Do
If s[i]='x' Then k:=i;
if k<>0 then Writeln('DA')
Else Writeln('NU');
Readkey;
Readln;
End.

188
PROBLEMA 177.6.5
Se considera cuvintul X. Sa se scrie un pro-
gram care afiseaza caracterele acestui
cuvint in ordine inversa.

Program P6_5;
Uses Crt;
Var x,y:string;
i:integer;
Begin
Clrscr;
Writeln('Introdu un cuvint:');
Readln(x);
y:='';
For i:=1 To Length(x) Do
y:=x[i]+y;
Writeln('Cuvintul inversat:',y);
Readkey;
Readln;
End.

189
PROBLEMA 178.6.6
Se considera o propozitie formata din
cuvinte separate prin spatiu. Propozitia se
termina cu punct .Sa se scrie un program
care numara cite cuvinte are propozitia.

Program P6_6;
Uses Crt;
Var s:string;
i,k:integer;
Begin
Clrscr;
Writeln('Introdu o propozitie:');
Readln(s);
k:=0;
For i:=1 To Length(s) Do
If s[i]=' ' Then k:=k+1;
Writeln('Propozitia are ',k,' cuvinte');

190
Readkey;
Readln;
End.

PROBLEMA 179.6.7
Se citeste un numar din cinci cifre.Sa se
scrie un program care afiseaza numarul
format dupa eliminarea cifrei din mijloc.

Program P6_7;
Uses Crt;
Var s:string;
Begin
Clrscr;
Writeln('Introdu un numar din cinci
cifre:');
Readln(s);
Delete(s,3,1);
Writeln('Numarul dupa stergerea cifrei
din mijloc este ',s);

191
Readkey;
Readln;
End.

PROBLEMA 180.6.8
Se considera un sir format din cel mult 80
de caractere.Sa se scrie un program care
inlocu-ieste o litera data prin alta litera
data in tot sirul.

Program P6_8;
Uses Crt;
Var s,x,y:string;
i:integer;
Begin
Clrscr;
Writeln('Introdu un sir de caractere:');
Readln(s);

192
Writeln('Introdu un caracter :');
Readln(x);
Writeln('Introdu caracterul nou:');
Readln(y);
For i:=1 To Length(s) Do
If Copy(s,i,1)=x Then
Begin
Delete(s,i,1);
Insert(y,s,i);
End;
Writeln('Sirul dupa mudificare este:');
Writeln(s);
Readkey;
Readln;
End.

PROBLEMA 181.6.9
Se considera cuvintul X.Sa se scrie un pro-
gram care verifica daca cuvintul dat
contine mai multe vocale decit consoane.

Program P6_9;
Uses crt;
Var x:string;
i:byte;
k,l:integer;
Begin
Clrscr;

193
Write('Introdu un cuvint:');
Readln(x);
k:=0;
l:=0;
For i:=1 To Length(x) Do
If (x[i]='a') or (x[i]='o') or
(x[i]='u') or (x[i]='i') or (x[i]='e')
Then Inc(k) Else Inc(l);
If k>l Then
Writeln('Acest cuvint contine mai multe
vocale')
Else Writeln('Acest cuvint contine mai
multe consoane');
Readln;
Readkey;
End.

Programe cu articole(record)

Problema 182.7.1
Sa se scrie un program ce citestee te la
tas-tatura datale referitoare la n elevi si
afi-seaza pe ecran numele, prenumele si nota
me-die a celui mai bun elev. Se considera ca
elevii au note medii diferite.

Program P7_1;

194
Type Elev=Record
Nume:string;Prenume:string;
NotaMedie:real;End;
ListaElev=Array[1..40] of Elev;
Var E :Elev; LE:ListaElev;
n :1..40; i :integer;
Begin
Write('n='); Readln(n);
For i:=1 To n Do
Begin
Writeln('Dati datele elevului ',i);
Write('Numele: ');Readln(LE[i].Nume);
Write('Prenumele: ');
Readln(LE[i].Prenume);
Write('Nota medie: ');
Readln(LE[i].NotaMedie);
End;
E.NotaMedie:=0;
For i:=1 To n Do
If LE[i].NotaMedie>E.NotaMedie
Then E:=LE[i];
Writeln('Cel mai bun elev este: ');
Writeln(E.Nume,'
',E.Prenume,E.NotaMedie
:5:2);
Readln;
End.
Problema 183.7.2
Se considera numarul a N persoane si
cistigul lor pentru o luna.Sa se scrie un
program care calculeaza salariul fiecarei
persoane fara impozite.Impozitele se
calculeaza dupa cum urmeaza: 0 -100lei
-0%
100.1-399.99lei -13%

195
400 -599.99lei -25%
600 -si mai mult-30% .

Program P7_2;
Uses crt;
Type Persoana=Record
Nume:string;Cistig,Salariu:real; End;
Var x:Array[1..30] of Persoana;
i :integer; imp:Real;n:1..100;
Begin Clrscr;
Write('Introdu numarul de peersoane: ');
Readln(n);For i:=1 To n Do Begin
Writeln('Introdu datele persoanei ',i);
Write('Numele: ');Readln(Nume);
Write('Cistigul: ');Readln(Cistig);
End; For i:=1 To n Do Begin
If x[i].Cistig<=100 Then imp:=0
Else If (x[i].Cistig>100) And (x[i].Cistig
<400)Then imp:=0.13*x[i].Cistig
Else If (x[i].Cistig>=400)And
x[i].Cistig<600) Then imp:=0.25*x[i].Cistig
Else imp:=0.3*x[i].Cistig;
x[i].Salariu:=x[i].Cistig-imp;
End;Writeln('Lista persoanelor si salariile
fara impozite: ');
For i:=1 To n Do
Writeln(x[i].Nume,' ',x[i].Salariu:5:2);
Readln;
Readkey;
End.
Problema 184.7.3
Se considera o lista cu oferte de vinzare a
locuintelor ce contine urmatoarele date:-
numarul ofertei(1..100);
-sector(string);

196
-numarul de odai(1..5);
-pretul(real);
-telefon("da"sau"nu").
Sa se scrie un program care ar afisa sectoa-
rele unde sunt de vinzare locuinte 4 odai ce
au telefon si prretul mediu al acestora.

Program P3;
Uses crt;
Type Oferta=Record
Nr:1..100; Sector:string; No:1..5;Pret:real;
Tel:String[2];End;
Var A:Array[1..50] of Oferta;i,n,l :integer;
PretMediu,s:Real;
Begin Clrscr;
Write('Introdu numarul de oferte: ');
Readln(n);For i:=1 To n Do With A[i] Do
Begin Write('Numarul ofertei '); Redln(Nr);
Write('Sectorulumele: ');Readln(Nume);
Write('Cistigul: ');Readln(Cistig); End;
For i:=1 To n Do Begin
If x[i].Cistig<=100 Then imp:=0 Else If
(x[i].Cistig>100) And (x[i].Cistig<400)Then
imp:=0.13*x[i].Cistig Else If
(x[i].Cistig>=400)And (x[i].Cistig<600)
Then imp:=0.25*x[i].Cistig
Else imp:=0.3*x[i].Cistig;
x[i].Salariu:=x[i].Cistig-imp;End;
Writeln('Lista persoanelor si salariile
fara
impozite: '); For i:=1 To n Do
Writeln(x[i].Nume,' ',x[i].Salariu:5:2);
Readln; Readkey; End.
Programe cu fisiere

197
Problema 185.8.1
Sa se scrie un program care creaza un fisier
text.Continutul liniilor se introduc de la
tastatura.

Program P8_1;
var f:text;
c:string;
i:1..100;
n:integer;
Begin
Assign(f,'Fisier1.txt');
Rewrite(f);
Write('Dati numarul de linii:');
Readln(n);
For i:=1 To n Do
Begin
Readln(c);
Writeln(f,c);
End;
Close(f);
Readln;
End.

Problema 186.8.2

198
Sa se scrie un program care citeste de la
tastatura cite trei numere reale a,b,c pe
care le scrie in fisierul IN.TXT.Apoi citind
aceste trei numere, reprezentind laturile
unui triunghi, scrie in fisierul OUT.TXT
numerele a,b si c,semiperimetrul p si aria
triunghiului s.

Program P8_2;
var f,g:text; a,b,c,p,s:real; str:string;
Begin
Assign(f,'IN.TXT'); Rewrite(f);
Write('Dati numerele reale a,b,c :');
While not eof Do
Begin Readln(a,b,c);
Writeln(f,a:8:2, b:8:2, c:8:2);
End; Close (f); Reset (f);
Assign(g,'OUT.TXT');Rewrite(g);
While not eof(f) Do
Begin Readln(f, a, b, c);
Write(g, a:8:2, b:8:2, c:8:2);
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
Writeln(g, p:15:2, s:15:2);
End; Close (f); Close (g); Reset (g);
While not eof(g) Do
Begin Readln(g,str);
Writeln(str);
End; Close (g); Readln; End.
For i:=1 To n Do
Begin
Readln(c);
Writeln(f,c);
End; Close(f);
Readln;

199
End.
Problema 187.8.3
Intr-un fisier este inscris o poezie. Sa se
scrie un program care creeaza un alt fisier
cu acelasi continut, in care toate literele
sa fie majuscule.

Program P8_3;
var f1,f2:text;
s,k:string;
i:integer;
Begin
Write('Dati numele fisierului:');
Readln(s);
Assign(f1,s);
Reset(f1);
Assign(f2,'LitMari.txt');
Rewrite(f2);
While not eof(f1) Do
Begin
Readln(f1,k);
For i:=1 To Length(k) Do
k[i]:=Upcase(k[i]);
Writeln(f2,k);
End;
Close(f1);
Close(f2);
Reset(f2);
While not eof(f2) Do
Begin
Readln(f2,k);
Writeln(k);
End;
Close(f2);
Readln;

200
End.

Programe cu multimi

PROBLEMA 188.9.1
Sa se scrie un program care introduce de la
tastatura doua multimi de numere pozitive
din doua cifre si afiseaza reuniunea acestor
mul-timi.

Program P9_1;
Uses crt;
Var i,n,a:0..99; s,r,m:set of byte;
Begin
Clrscr;
Writeln('Cite numere va avea prina
multime n=');
Readln(n);
m:=[];
For i:=1 To n Do
Begin
Readln(a);
m:=m+[a];
End;
Write('Cite numere va avea multimea a
doua n=');
Readln(n); r:=[];
For i:=1 To n Do
Begin
Readln(a);
r:=r+[a];
End;
s:=m+r; Write('Reuniunea multimilor m
si r este:');

201
For i:=1 To 99 Do
If i In s Then Write(i,' ');
Readln;
End.
PROBLEMA 189.9.2
Sa se scrie un program care introduce de la
tastatura doua multimi de numere pozitive
din doua cifre si afiseaza intersectia si
iferen-ta acestor multimi.

Program P9_2;
Uses crt;
Var k,i,n:0..99;odat,mult:set of byte;
Begin
Clrscr;
odarWriteln('Cite numere va avea prina
multime n=');
Readln(n); m:=[];
For i:=1 To n Do
Begin
Readln(a);
m:=m+[a];
End; Write('Cite numere va avea multi-
mea a doua n=');
Readln(n); r:=[];
For i:=1 To n Do
Begin
Readln(a);
r:=r+[a];
End; s:=m*r;
Write('Intersestia multimilor m si r
este:');
For i:=1 To 99 Do
If i In s Then Write(i,' ');

202
Writeln; s:=m-r;
Write('Diferenta multimilor m si r
este:');
For i:=1 To 99 Do
If i In s Then Write(i,' ');
Readln;
End.
PROBLEMA 190.9.3
Sa se scrie un program care calculeaza nume-
rele prime mai mici decit un numar natural;
folosind algoritmul Ciurul (sita) lui
Eratos-tene.

Program P9_3;
const n=50;
Type MultimeDeNumere=set of 1..n;
Var Sita,NumerePrime:MultimeDeNumere;
i,m:integer;
Begin
Sita:=[2..n];
NumerePrime:=[];
i:=2;
Repeat
While not (i in Sita) Do
i:=succ(i);
NumerePrime:=NumerePrime+[i];
Write(i:4);
m:=i;
While m<=n Do
Begin
Sita:=Sita-[m];
m:=m+i;
End;
Until Sita=[];
Writeln;

203
Readln;
End.

PROBLEMA 191.9.4
Se considera cuvintul X format din litere
ma-juscule ale alfabetului latin. Sa se un
pro-gram care deternina literele ce apar o
sin-gura data si literele care apar de mai
multe ori in cuvintul dat.

Program P9_4;
Uses crt;
Var x:string;
odat,mult:set of char;
j:char;
i:integer;
Begin
Clrscr;
Write('Introdu cuvintul :');
Readln(x);
odat:=[];
mult:=[];
For i:=1 To Length(x) Do
If x[i] In odat Then mult:=mult+[x[i]]
Else odat:=odat+[x[i]];
odat:=odat-mult;
Write('Literele ce apar o singura data :');
For j:='A' To 'Z' Do
If j In odat Then Write(j,' ');

204
Writeln;
Write('Literele ce apar de mai multe
ori:');
For j:='A' To 'Z' Do
If j In mult Then Write(j,' ');
Readln;
End.

PROBLEMA 192.9.5
De la tastatura se introduc numere intregi
pozitive din doua cifre.Introducerea va lua
sfirsit la tastarea numarului zero.Sa se un
program careextrage in ordine crescinda nu-
merele ce apar in sirul de intrare doar o
singura data si numarul acestora.

Program P9_5;
Uses crt;
Var odat,mult:set of byte;
i,n:1..99;k:integer;
Begin
Clrscr;
odat:=[];
mult:=[];
Readln(n);
While n<>0 Do
Begin
If n In odat Then mult:=mult+[n]
Else odat:=odat+[n];
Readln(n);
End;
odat:=odat-mult;

205
k:=0;
For i:=10 To 99 Do
If i In odat Then k:=k+1;
Write('O singura data in sirul de
intrare apar',k,'numere:[');
For i:=10 To 99 Do
If i In odat Then Write(i,' ');
Write(']');
Readln;
End.

Subprograme

PROBLEMA 193.10.1
Se considera trei numere intregi a,b,c.Sa se
scrie un program care aranjeaza aceste
numere in ordinea crescatoare.

Program P10_1;
Uses crt;
Var a,b,c:integer;
Procedure Schimba(Var x,y:integer);
Var aux:integer;
Begin
aux:=x;
x:=y;
y:=aux;
End;
Begin
Clrscr;
Writeln('Introdu trei numere intregi:');
Readln(a,b,c);
If a>b Then Schimba(a,b);

206
If b>c Then Schimba(b,c);
If a>b Then Schimba(a,b);
Write('Numerele aranjate
crescator:',a,'
',b,' ',c);
Readln;
End.

PROBLEMA 194.10.2
Se considera tabloul A[1..n] de numere
intregi ,n<=100.Sa se scrie un program care
calculeaza suma componentelor acestui ta-
blou,utilizind functia respectiva .

Program P10_2;
Uses crt;
Type tablou=array[1..100] of integer;
Var a:tablou;
s,n:integer;
Procedure Citire;
Var i:integer;
Begin
For i:=1 To n Do
Read(a[i]);
End;
Function Suma (n:integer;a:tablou):integer;
Var i,s:integer;
Begin

207
s:=0;
For i:=1 To n Do
s:=s+a[i];
Suma:=s;
End;
Begin
Clrscr;
Write('Introdu componentul tabloului :');
Readln(n);
Write('Introdu ',n,' elementele :');
Citire;
Write('Suma elementelor este: ',Suma(n,a) );
Readln;
End.

PROBLEMA 195.10.3
Se considera un patrulater convex cu lun-
gimile celor patru laturi si una din dia-
gonale.Sa se calculeze aria acestui patru-
later.

Program P10_3;
Uses crt;
Var AB,BC,CD,AD,AC,S1,S2:real;
Procedure Aria(a,b,c:real; Var s:real);
Var p:real;
Begin
P:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
End;
Begin
Clrscr;
Writeln('Dati lungimile laturilor si a

208
diagonalei:');
Readln(AB,BC,CD,AD,AC);
Aria(AB,BC,AC,S1);
Aria(AD,CD,AC,S2);
Write('Raspuns: aria patrulaterului
convex este ',S1+S2:5:3);
Readln;
End.

PROBLEMA 196.10.4
Se considera trei numere intregi a,b,c.Sa se
scrie un program care aranjeaza aceste
numere in ordinea crescatoare.

Program P10_4;
Uses crt;
Var i,n,m,l:integer;
Function Prim(k:integer):Boolean;
Var i:integer;
r:Boolean;
Begin
r:=True;
i:=2;
l:=Trunc(k/2);
While(i<=l) And r Do

209
Begin
If k Mod i=0 Then
r:=False;
i:=i+1
End;
Prim:=rEnd;
Begin
Clrscr;
Writeln('Introdu doua numere m si n
(m<n):');
Readln(m,n);
Write('Numarele prime din intervalul',
m,'.. ',n,'sunt:');
For i:=m To n Do
If Prim(i) Then Write(i,' ');
Readln;
End.

PROBLEMA 197.10.5
Se alcatuit un program care calculeaza
facto-rialul.

Program P10_5;
Uses crt;
Function Factorial(n : integer):integer;
Var p,i:integer;
Begin
Write('Introdu n=');
Readln(n);
p:=1;
For i:=1 To n Do
p:=p*i;

210
Factorial:=p;
End;
Begin
Clrscr;
Writeln(Factorial(4));
Readln;
Readkey;
End.

PROBLEMA 198.10.6
Se considera tabloul A[1..n] de numere in-
tregi pozitive formate din cel mult patru
cifre,n<=100. Sa se calculeze suma numerelor
inversate din tablou, utilizind functia,
care inverseaza un numar intreg.

Program P10_6;
Const nmax=100;
Type tablou=array[1..nmax] of integer;
Var a:tablou;

211
i,s,k:integer;
m:1..nmax;
Function Invers(n:integer):integer;
Var NumInv :integer;
Begin
NumInv:=0;
While n<>0 Do
Begin
k:=n mod 10;
NumInv:=NumInv*10+k;
n:=n div 10;
End;
Invers:=NumInv;
End;
Begin
Writeln('Introdu numarul de componente m=');
Readln(m);
Write('Dati ', m,' numere naturale:');
For i:=1 To m Do Read(a[i]);
s:=0;
For i:=1 To m Do
s:=s+Invers(a[i]);
Writeln('Suma numerelor inversate
este
: ,s);
Readln;
End.

212