Sunteți pe pagina 1din 67

Exemplul1: Se considera doua numere intregi.

Sa se scrie un program care


mareste aceste numere cu 100.
Program P1;
Uses crt;
Var x,y: integer;
Begin
Clrscr;
Writeln('Introduceti doua numere intregi:');
Write('x='); Readln(x);
Write('y='); Readln(y);
x:=x1!!;
y:=y1!!;
Write('"umerele marite cu 1!!: ');
Writeln('x=',x,' ','y=',y);
Read#ey;
End$
Exemplul2: Se considera trei numere intregi. Sa se scrie un program care
calculeaza media lor aritmetica.
Program P%;
Uses crt;
Var a,&,c,'uma: integer;
media: real;
Begin
Clr'cr;
Write('Introduceti trei numere intregi: ');
Readln(a,&,c);
'uma:=a&c;
Writeln(''uma numerelor ',a,', ',&,'si ',c,' este: ','uma);
media:='uma();
Write('*edia aritmetica este: ');
Writeln(media:+:%);
Read#ey;
End$
Exemplul3: Se considera doua variabile de tip integer. Sa se scrie un program
care eectueaza intersc!imbarea lor.
,a intersc-im&area a doua .aria&ile se /oloseste a treia .aria&ila auxiliara (in acest
ca0 1 aux), in care se 2astrea0a .aloarea initiala a uneia dintre .aria&ilele date ca mai
tir0iu (aceasta .aloare 2astrata) sa /ie atri&uita celeilalte .aria&ile$
Program P)31;
Uses crt;
Var x,y,aux: integer;
Begin
Clr'cr;
Writeln('Introduceti .alorile .aria&ilelor');
Write('x='); Readln(x);
Write('y='); Readln(y);
aux:=x;
x:=y;
y:=aux;
Writeln('4u2a sc-im&are: x=',x,' y=',y);
Read#ey;
End$

". principiu# intersc!imbarea a doua variabile poate i eectuata si ara utilizarea
unei variabile auxiliare.
Program P)3%;
Uses crt;
Var x,y: integer;
Begin
Clr'cr;
Writeln('Introduceti x='); Readln(x);
Writeln('Introduceti y='); Readln(y);
Writeln('5u /ost introduse numerele: x=',x,'y=',y);
x:=xy;
y:=x1y;
x:=x1y;
Writeln('4u2a sc-im&are: x=',x,' y=',y);
Read#ey;
End$
Exemplul": $arin a cumparat x caiete# pretul unuia iind de p1 lei# si % creioane
cu p2 lei bucata. Sa se scrie un program care calculeaza suma c!eltuita de $arin.
Program P6;
Uses crt;
Var x,y: 1$$1!!
'uma,21,2%: Real;
Begin
Clr'cr;
Writeln('Introduceti numarul de caiete cum2arate: ');
Readln(x);
Writeln('Introduceti 2retul unui caiet: ');
Readln(21);
Writeln('Introduceti numarul de creioane cum2arate: ');
Readln(y);
Writeln('Introduceti 2retul unui creion: ');
Readln(2%);
'uma:=x721y72%;
Writeln('*arin a c-eltuit suma de ','uma:+:%,' lei');
Read#ey;
End$
Exemplul&: Se considera un numar natural n# ce indica pozitia unei litere in
alabetul latin. Sa se scrie un program care aiseaza litera de pe pozitia n.
In 2rogram .or /i utili0ate: /unctia 8rd, care determina numarul de ordine al unui caracter
in codul 5'CII si /unctia C-r, care determina caracterul du2a numarul de ordine$
Program P+;
Uses crt;
Var n: &yte;
Begin
Clr'cr;
Write('Introduceti un numar din inter.alul 1$$%9 : ');
Readln(n);
Write(',itera de 2e 2o0itia ',n,' este :');
Writeln(C-r((8rd('5')11)n),':');
Read#ey;
End$
Exemplul': Se considera doua numere intregi dierite a si b. Sa se scrie un
program# care atribuie variabilei t valoarea ()*E# daca numarul a este mai mare
decit numarul b# iar in caz contrar + valoarea ,-.SE.
4eseori, 2ro&lemele de acest ti2 se re0ol.a /olosind instructiunea I/, insa cu utili0area
.aria&ilelor &ooleene 2rogramele de.in mai sim2le$
Program P9;
Uses crt;
Var t: &oolean;
a,&: integer;
Begin
Clr'cr;
Write('Introduceti doua numere intregi:');
Readln(a,&);
t:=a;&;
Writeln('Re0ultatul: ',t);
Read#ey;
End$
Exemplul/: Sa se scrie un program care atribuie variabilei ( valoarea ()*E# daca
caracterul introdus de la tastatura este litera mica# in caz contrar + valoarea
,-.SE. Se admit litere numai din alabetul latin.
Program P<;
Uses crt;
Var =: &oolean;
C-: c-ar;
Begin
Clr'cr;
Write('Introduceti un caracter: ');
Readln(C-);
=:=(C-;='a')5nd(C->='0');
Writeln('Re0ultatul: ',=);
Read#ey;
End$
Exemplul0 1e la tastatura se citeste numarul de ordine al zileisaptaminii. Sa se
aiseze denumirea zilei. .uni are numarul de ordine 1# marti + 2 s.a.m.d.
Programul citeste un numar intre 1 si < si a/isea0a denumirea 0ilei cores2un0atoare
numarului$
Program P16;
Uses crt;
Var n: 1$$<
Begin
Clrscr;
Write('Introduceti un numar intre 1$$< : ');
Readln(n);
Write('Ras2uns: ');
2ase n 3
1: Write(',uni');
%: Write('*arti');
): Write('*iercuri');
6: Write('?oi');
+: Write('@ineri');
9: Write(''im&ata');
<: Write('4uminica')
Else Write('"u exista 0i a sa2taminii cu asa numar');
End;
Read#ey;
End$

Exemplul4 1e la tastatura se introduce o data din luna apilie5anul 2006. Sa se
determine ce zi a ost la aceasta data 5denumirea zilei6# daca se stie ca 1 aprilie a
ost simbata.
Program P1+;
Uses crt;
Var data 1$$)!;
Begin
Clrscr;
Write('Introduceti un numar intre 1$$)! : ');
Readln(data);
Write('Ras2uns: ');
2ase data 3
1, A, 1+, %%, %B : Writeln(''im&ata');
%, B, 19, %), )! : Writeln('4uminica');
), 1!, 1<, %6: Writeln(',uni');
6, 11, 1A, %+: Writeln('*arti');
+, 1%, 1B, %9: Writeln('*iercuri');
9, 1), %!, %<: Writeln('?oi');
<, 16, %1, %A: Writeln('@ineri')
Else Writeln('"1ati introdus corect data');
End;
Read#ey;
End$
Exemplul101e la tastatura se citeste unul dintre urmatoarele numere: 1# &# 10#
&0# 100# &00 sau 1000. Sa se scrie un program care aiseaza cira romana
corespunzatoare numarului citit.
Program P19;
Uses crt;
Var x: 1$$1!!!;
Begin
Clrscr;
Write('Introduceti 1,+,1!,1!!,+!! sau 1!!!: ');
Readln(x);
Write('Ras2uns: ');
2ase x 3
1 : Writeln('I');
+ : Writeln('@');
1! : Writeln('C');
+! : Writeln(',');
1!! : Writeln('C');
+!! : Writeln('4');
1!!! : Writeln('*');
End;
Read#ey;
End$

Exemplul11Sa se scrie un program care determina actiunea pietonului in ata
semaorului.
Program P1<;
Uses crt;
(%pe 'ema/or=(Rosu,Dal&en,@erde);
Var x: 'ema/or;
Begin
Clrscr;
x:=Dal&en;
x:='ucc(x);
Write('Ras2uns: ');
2ase x 3
Rosu : Writeln('82riti1.a');
Dal&en : Writeln('5tentie');
@erde : Writeln('Porniti1.a');
End;
Read#ey;
End$

Exemplul121e la tastatura se citeste un caracter din tabelul de cod -S277. Sa se
determine ce el de caracter este# adica litera mare# litera mica# cira sau semn
special. Se admit litere numai din alabetul latin.
In 2rogram se utili0ea0a ti2ul inter.al$
'e citeste caracterul si se .eri/ica daca el a2artine inter.alului de litere mari, inter.alul
de litere mici sau inter.alului de ci/re$ 4aca este ade.arata una din conditiile enumerate
mai sus, atunci se a/isea0a mesaEul cores2un0ator, in ca0 contrar se a/isea0a mesaEul
ce con/irma ca caracterul introdus este semn s2ecial$
Program P1A;
Uses crt;
Var car: c-ar;
Begin
Clrscr;
Write('Introduceti un caracter: ');
Readln(car);
Write('Ras2uns: ');
2ase car 3
'5'$$'F' : Writeln('caracterul introdus este litera mare');
'a'$$'0' : Writeln('caracterul introdus este litera mica');
'!'$$'B' : Writeln('caracterul introdus este ci/ra')
Else Writeln('caracterul introdus este semn s2ecial');
End;
Read#ey;
End$
Exemplul13 Se considera doua numere intregi distincte. Sa se scrie un program
care determina numarul mai mare.
Prima .arianta a 2rogramului a/isea0a numarul mai mare imediat du2a ce se /ace
com2ararea celor doua numere$
Program PA31;
Uses crt;
Var a,&: integer;
Begin
Clrscr;
Write('a='); Readln(a);
Write('&='); Readln(&);
Write('Ras2uns: ');
7 a;&
(!en Writeln('numarul ',a,' este mai mare ca ',&)
Else Writeln('numarul ',&,' este mai mare ca ',a);
Read#ey;
End$

5 doua .arianta a 2rogramului com2ara cele doua numere si atri&uie .aria&ilei max
numarul cel mai mare, a2oi a/isea0a .aloarea .aria&ilei max$
Program PA3%;
Uses crt;
Var a,&: integer;
max: integer;
Begin
Clrscr;
Writeln('Introduceti doua numere intregi a si &: ');
Readln(a,&);
7 a;& (!en max:=a Else max:=&;
Write('Ras2uns: ');
Writeln('numarul mai mare dintre ',a,' si ',&,' este ',max);
Read#ey;
End$
In a treia .arianta a 2rogramului se considera la ince2ut ca 2rimul numar este maxim,
a2oi se com2ara numarul al doilea cu max$ 4aca numarul al doilea este mai mare decit
max, maxim de.ine al doilea, in ca0 contrar ramine maxim 2rimul numar$
Program PA3);
Uses crt;
Var a,&,max: integer;
Begin
Clrscr;
Write('4ati doua numere intregi: ');
Readln(a,&);
max:=a;
7 &;a (!en max:=&;
Write('Ras2uns: ');
Writeln('numarul mai mare dintre ',a,' si ',&,' este ',max);
Read#ey;
End$
Exemplul1"Se considera doua numere intregi distincte. Sa se scrie un program
care inlocuieste numarul mai mare cu suma numerelor date# iar numarul mai mic
+ cu valoarea absoluta a dierentei lor.
Programul va utiliza o instructiune 7# unde dupa cuvintele+c!eie (!en si Else vor
urma instructiuni compuse.
Program PB;
Uses crt;
Var a,&,',4: integer;
Begin
Clrscr;
Writeln('4ati a si &: ');
Write('a='); Readln(a);
Write('&='); Readln(&);
Write('Ras2uns: ');
':=a&;
4:=5&s(a1&);
7 a;& (!en Begin
Writeln('Primul numar este mai mare');
a:=';
&:=4;
Gnd
Else Begin
Writeln('5l doilea numar este mai mare');
a:=4;
&:=';
End;
Writeln('a=',a:),' &=',&:));
Read#ey;
End$
Exemplul1&Se considera doua numere intregi. 1aca primul numar este pozitiv#
atunci de ridicat acest numar la patrat# in caz contrar numerele sa ramina
nesc!imbate.
Program P1!;
Uses crt;
Var x,y: integer;
Begin
Clrscr;
Write('x=');
Readln(x);
Write('y=');
Readln(y);
7 x;! (!en x:=x7x;
Write('Ras2uns: ');
Writeln('x=',x,' y=',y);
Read#ey;
End$

Exemplul1'Se considera trei numere intregi. Sa se scrie un program care
aran8eaza aceste numere in ordine crescatoare.
Program P11;
Uses crt;
Var x,y,0,aux: integer;
Begin
Clrscr;
Writeln('4ati ) numere intregi x,y si 0: ');
Readln(x,y,0);
7 x;y (!en Begin
aux:=x;
x:=y;
y:=aux;
End;
7 y;0 (!en Begin
aux:=y;
y:=0;
0:=aux;
End;
7 x;y (!en Begin
aux:=x;
x:=y;
y:=aux;
End;
Write('"umerele aranEate crescator: ');
Writeln(x,' ',y,' ',0);
Read#ey;
End$
Exemplul1/Se considera trei numere intregi. 1aca primele doua sunt nenule sa
se aiseze media aritmetica a tuturor numerelor# in caz contrar sa se aiseze
numarul mai mare dintre toate numerele.
Program P1%;
Uses crt;
Var a,&,c: integer;
max: integer;
Begin
Clrscr;
Write('4ati ) numere intregi a,& si c: ');
Readln(a,&,c);
7 a7&>;! (!en Writeln('*edia aritmetica:' (a&c)():+:1)
Else
Begin
max:=a;
7 &;max (!en max:=&;
7 c;max (!en mac:=c;
Writeln('"umarul mai mare :',max);
End;
Read#ey;
End$

Exemplul10Se considera un cerc de raza ) si un patrat cu latura a. Sa se scrie un
program care determina daca cercul incape in patrat.
Program P1);
Uses crt;
Var a,R: real;
Begin
Clrscr;
Write('Introduceti ra0a cercului: ');
Readln(R);
Write('Introduceti latura 2atratului: ');
Readln(a);
Write('Ras2uns: ');
7 R>=a(% (!en Writeln('cercul inca2e in 2atrat')
Else Writeln('cercul nu inca2e in 2atrat');
Read#ey;
End$
Exemplul14 Sa se scrie un program care aiseaza pe ecran cuvintul 97normatica9
de n ori 5n:;206# marimea n iind introdusa de la tastatura.
Instructiunea Write('In/ormatica') a/isea0a 2e ecran cu.intul In/ormatica$ Intrucit se
cere ca acest cu.int sa /ie a/isat de n ori se organi0ea0a re2etarea de n ori a
instructiunii res2ecti.e 2rin intermediul instructiunii de ciclare ,or$
Program P1B31;
Uses crt;
Var i,n: 1$$%!;
Begin
Clrscr;
Write('n=');
Readln(n);
,or i:=1 to n do
Write('In/ormatica');
Read#ey;
End$
@arianta a doua a 2rogramului re0ol.a 2ro&lema 2rin utili0area instructiunii de ciclare cu
conditie anterioara <!ile, in care incrementarea .aria&ilei i se /ace ex2licit$
Program P1B3%;
Uses crt;
Var i,n: 1$$%!;
Begin
Clrscr;
Write('Introduceti n=');
Readln(n);
i:=1;
<!ile i>=n do
Begin
Write('In/ormatica');
i:=i1;
End;
Read#ey;
End$

@arianta a treia a 2rogramului organi0ea0a re2etarea instructiunilor res2ecti.e 2rin
intermediul instructiunii de ciclare cu conditie 2osterioara )epeat$
Program P1B3);
Uses crt;
Var i,n: 1$$%!;
Begin
Clrscr;
Write('4ati n=');
Readln(n);
i:=1;
)epeat
Write('In/ormatica ');
i:=i1;
*ntil i;n;
Read#ey;
End$
Exemplul20 Sa se scrie un program care calculeaza suma numerelor naturale
mai mici sau egale ca =.
Pentru a calcula suma res2ecti.a se /oloseste .aria&ila ', care se initiali0ea0a cu !$ 'e
2arcurg toate .alorile i din ciclu, adunindu1le 2e rind la suma '$ 4u2a terminarea executiei
ciclului in ' se .a o&tine .aloarea sumei cerute$
In cele trei .ariante ale 2rogramului care sunt 2ro2use 2entru re0ol.area acestei
2ro&leme, .aria&ilele ",' si i sunt declarate de ti2 inter.al 1$$*axInt, deoarece ele
re2re0inta numere intregi 2o0iti.e$
Program P%!31;
Uses crt;
Var ",',i: 1$$*axInt;
Begin
Clrscr;
Write('Introdu "=);
Readln(");
':=!;
,or i:=1 to " do
':='i;
Writeln(''uma este: ',');
Read#ey;
End$
@arianta de calcul a sumei 2rimelor " numere naturale consecuti.e cu utili0area
instructiunii <!ile$
Program P%!3%;
Uses crt;
Var i,",': 1$$*axInt;
Begin
Clrscr;
Write('Introduceti "=');
Readln(");
':=!;
i:=1;
<!ile i>=" do
Begin
':='i;
i:=i1;
End;
Writeln(''uma este:',');
Read#ey;
End$

21lcularea sumei primelor = numere naturale cu utilizarea instructiunii )epeat.
Program P%!3);
Uses crt;
Var ",',i: 1$$*axInt;
Begin
Clrscr;
Write('Introduceti "=');
Readln(");
':=!;
i:=1;
)epeat
':='i;
i:=i1;
*ntil i;";
Writeln(''uma este:',');
Read#ey;
End$
Exemplul 22Se considera o secventa de n numere reale 51:;n:;1006. Sa se
scrie un program care determina numarul mai mare.
Se citeste primul numar si se presupune ca el este maxim 5maxim temporar6. Se
citesc celelalte numere pe rind si se compara cu max. 2ind se gaseste o valoare
mai mare decit cea considerata pina atunci# aceasta valoare se stabileste ca
maxima.
Program P%1;
Uses crt;
Var i,n: integer;
x,max: real;
Begin
Clrscr;
Write('4ati n=');
Readln(n);
Write('Introduceti 2rimul numar:');
Readln(x);
max:=x;
,or i:=% to n do
Begin
Write('Introduceti numarul al ',i,'1lea:');
Readln(x);
7 x;max (!en max:=x;
End;
Writeln('Ras2uns: cel mai mare numar este',max:<:%);
Read#ey;
End$

Exemplul 231e la tastatura se introduce o secventa de n numere intregi
51:;n:;1006.
Sa se scrie un program care calculeaza media aritmetica a numerelor introduse.
Se organizeaza un ciclu care citeste si aduna cele n numere. 1upa executia
ciclului se calculeaza media lor aritmetica.
Program P%%;
Uses crt;
Var 'uma,#,x,n,i: 1$$*axInt;
*ed: real;
Begin
Clrscr;
Write('Cite numere are sirulH n=');
Readln(n);
'uma:=!;
,or i:=1 to n do
Begin
Read(x);
'uma:='umax;
End;
Writeln(''uma numerelor este:','uma);
*ed:='uma(n;
Writeln('*edia =',*ed:9:1);
Read#ey;
End$
Exemplul 2"1e la tastatura se introduce o secventa de numere 5cel putin unul6
intregi nenule# care se termina cu zero. Sa se scrie un program care calculeaza
media aritmetica a numerelor introduse.
Intrucit nu se cunoaste numarul de elementele din sec.enta de intrare, 2ro&lema nu
2oate /i re0ol.ata utili0ind instructiunea ,or$ Pot /i utili0ate doar instructiunile <!ile sau
)epeat$ In continuare este 2ro2us 2rogramul de re0ol.are cu utili0area instructiunii <!ile$
Program P%);
Uses crt;
Var 'uma,#,x: integer;
*ed: real;
Begin
Clrscr;
'uma:=!;
#:=!;
Readln(x);
<!ile x>;! do
Begin
'uma:='umax;
Inc(#);
Readln(x);
End;
Writeln(''uma=','uma,' #=',#);
*ed:='uma(#;
Writeln('*edia=',*ed:9:%);
Read#ey;
End$
Exemplul 2&Se considera numarul natural =. Sa se scrie un program care
determina daca numarul = este prim.
Prima .arianta a 2rogramului calculea0a numarul di.i0orilor 2ro2rii ai numarului " 2rin
intermediul unui ciclu 2arametrul caruia .aria0a de la % la " di. %$ 4u2a terminarea
executiei ciclului se /ace .eri/icarea: daca numarul " nu are di.i0ori 2ro2rii, atunci se
a/isea0a mesaEul ce con/irma ca numarul " este 2rim, in ca0 contrar se a/isea0a mesaEul ce
neaga acest lucru$
Program P%6;
Uses crt;
Var ",#,i: 1$$*axInt;
Begin
Clrscr;
Write('Introdu numarul "=');
Readln(");
#:=!;
,or i:=% to " di. % do
7 " mod i =C (!en Inc(#);
Write('Ras2uns:');
7 #=! (!en Writeln('numarul',",'este 2rim')
Else Writeln('numarul',",'nu este 2rim');
Read#ey;
End$
Exemplul 2'Se considera secventa de numere naturale: 2#'#10#1"#10... . Sa se
scrie un program care calculeaza suma primilor n termeni# n:;100# marimea n
iind introdusa de la tastatura.
Program P%+;
Uses crt;
Var n,i,=,'uma: 1$$*axInt;
Begin
Clrscr;
Write('Introduceti n=');
Readln(n);
'uma:=%;
=:=%;
,or i:=1 to n11 do
Begin
=:==6;
'uma:='uma=;
End;
Writeln(''uma este:','uma);
Read#ey;
End$


Exemplul 2/Se considera numarul narural =. Sa se scrie un program care
determina numarul de aparitii ale cirelor 1#2#3 in scrierea numarului =.
'e detasea0a /iecare ci/ra de la s/irsitul numarului, calculind restul im2artirii
numarului la 1!$ 'e .eri/ica daca aceasta ci/ra este una din cele cautate$ In continuare
numarul se modi/ica inlocuindu1l cu numarul ramas du2a des2rinderea ci/rei, care este
citul im2artirii lui la 1!$
Program P%9;
Uses crt;
Var ": longint;
#1,#%,#),c: 1$$%++;
Begin
Clrscr;
Write('Introduceti un numar (cel mult B ci/re) "=');
Readln(");
#1:=!; #%:=!; #):=!;
<!ile ">;! do
Begin
C:=" mod 1!;
2ase C 3
1: Inc(#1);
%: Inc(#%);
): Inc(#)); End;
":=" di. 1!;
End;
Writeln('Ci/ra 1 se re2eta de ',#1,'ori');
Writeln('Ci/ra % se re2eta de ',#%,'ori');
Writeln('Ci/ra ) se re2eta de ',#),'ori');
Read#ey;
End$
Exmplul 201e la tastatura se introduce o secventa ormata din cel putin doua
numere intregi nenule care se termina cu 0. Sa se scrie un program care
determina de cite ori in acest sir se sc!imba semnul. 1e exemplu# in sirul 2#+&#+
/#"#1#4#+&#0 semnul alterneaza de 3 ori.
Program P%<;
Uses crt;
Var a,&,#: integer;
Begin
Clrscr;
Readln(a);
Readln(&);
#:=!;
)epeat
7 a7&>! (!en Inc(#);
a:=&;
Readln(&);
*ntil &=!;
Writeln(''emnul numerelor se sc-im&a de',#,'ori');
Read#ey;
End$
Exemplul 24Sa se scrie un program care aiseaza pe ecran urmatorul sir:
abbcccddddeeeee...zzzzzzz...z.
In 2rogram se utili0ea0a doua cicluri im&ricate$ Ciclul exterior 2arcurge literele
al/a&etului latin, iar ciclul interior a/isea0a litera de un numar de ori egal cu numarul de
ordine al literei res2ecti.e$
Program P%A;
Uses crt;
Var i,E: c-ar;
Begin
Clrscr;
,or i:='a' to '0' do
,or E:='a' to i do Write(i);
Read#ey;
End$
Exemplul 30a se scrie un program care aiseaza pe ecran urmatorul triung!i:
1
1 %
1 % )
1 % ) 6
1 % ) 6 +
Programul utili0ea0a acelasi 2rinci2iu ca si 2rogramul 2recedent$ 4eose&irea este ca
a/isarea numerelor se /ace in rinduri se2arate, /a2t ce im2lica 2re0enta unei 2roceduri
Writeln du2a ciclul ce a/isea0a continutul unui rind$
Program P%B;
Uses crt;
Var i,E: &yte;
Begin
Clrscr;
,or i:=1 to + do
Begin
,or E:=1 to i do Write(E:%);
Writeln;
End;
Read#ey;
End$
31
Se citeste de la tastatura un intreg n<=6>.
Exemplu :
3
program sort(input,output);
var
a,b,c : integer;
begin
readln(a,b,c);
if a < b then
if b < c then
writeln(a,b,c)
else if a < c then
writeln(a,c,b)
else
writeln(c,a,b)
else
if a < c then
writeln(b,a,c)
else if b < c then
writeln(b,c,a)
else
writeln(c,b,a)
end.
32
program permutari>
ty2e sti.a=arrayI1$$+!J o/ integer;
.ar st:sti.a; e.,ams:&oolean; n,#:integer;
2rocedure Init(.ar st:sti.a; #:integer);
&egin
stI#J:=!;
end;
2rocedure 'uccesor(.ar st:sti.a; #:integer; .ar ams:&oolean);
&egin
i/ stI#J>n t-en &egin
stI#J:=stI#J1; ams:=true;
end else ams:=/alse
end;
2rocedure @alid(st:sti.a; #:integer; .ar e.:&oolean);
.ar i:integer;
&egin
e.:=true;
/or i:=1 to #11 do
i/ stIiJ=stI#J t-en e.:=/alse;
end;
/unction 'olutie:&oolean;
&egin
'olutie:=(#=n)
end;
2rocedure =i2ar;
.ar i:integer;
&egin
/or i:=1 to n do Krite(stIiJ,' ');
Kriteln
end;
&egin
Kriteln('LelloM');
readln(n);
#:=1; Init(st,#);
K-ile #;! do &egin
re2eat
'uccesor(st,#,ams);
i/ ams t-en @alid(st,#,e.)
until (ams and e.) or (not ams);
i/ ams t-en
i/ 'olutie t-en =i2ar
else &egin #:=#1; Init(st,#) end
else #:=#11
end;
readln;
end$
33
program partitiile?unui?nr>
ty2e sti.a=arrayI1$$+!J o/ integer;
.ar st:sti.a; e.,ams:&oolean; n,#:integer;
2rocedure Init(.ar st:sti.a; #:integer);
&egin
stI#J:=!;
end;
2rocedure 'uccesor(.ar st:sti.a; #:integer; .ar ams:&oolean);
&egin
i/ stI#J>n1#1 t-en &egin
stI#J:=stI#J1; ams:=true;
end else ams:=/alse
end;
2rocedure @alid(st:sti.a; #:integer; .ar e.:&oolean);
&egin
e.:=true;
end;
/unction 'olutie:&oolean;
.ar s,i:integer;
&egin
s:=!;
/or i:=1 to # do s:=sstIiJ;
'olutie:=(s=n)
end;
2rocedure =i2ar;
.ar i:integer;
&egin
/or i:=1 to # do Krite(stIiJ,' ');
Kriteln
end;
&egin
Kriteln('LelloM');
readln(n);
#:=1; Init(st,#);
K-ile #;! do &egin
re2eat
'uccesor(st,#,ams);
i/ ams t-en @alid(st,#,e.)
until (ams and e.) or (not ams);
i/ ams t-en
i/ 'olutie t-en =i2ar
else &egin #:=#1; Init(st,#) end
else #:=#11
end;
readln;
end$
3"
program combinari>
ty2e sti.a=arrayI1$$+!J o/ integer;
.ar st:sti.a; e.,ams:&oolean; n,#,2:integer;
2rocedure Init(.ar st:sti.a; #:integer);
&egin
stI#J:=!;
end;
2rocedure 'uccesor(.ar st:sti.a; #:integer; .ar ams:&oolean);
&egin
i/ stI#J>n12# t-en &egin
stI#J:=stI#J1; ams:=true;
end else ams:=/alse
end;
2rocedure @alid(st:sti.a; #:integer; .ar e.:&oolean);
.ar i:integer;
&egin
e.:=true;
/or i:=1 to #11 do
i/ (stIiJ=stI#J) or (stIiJ;stIi1J) t-en e.:=/alse;
end;
/unction 'olutie:&oolean;
&egin
'olutie:=(#=2)
end;
2rocedure =i2ar;
.ar i:integer;
&egin
/or i:=1 to # do Krite(stIiJ,' ');
Kriteln
end;
&egin
Kriteln('LelloM');
readln(n,2);
#:=1; Init(st,#);
K-ile #;! do &egin
re2eat
'uccesor(st,#,ams);
i/ ams t-en @alid(st,#,e.)
until (ams and e.) or (not ams);
i/ ams t-en
i/ 'olutie t-en =i2ar
else &egin #:=#1; Init(st,#) end
else #:=#11
end;
readln;
end$
3&
program paranteze>
ty2e sti.a=arrayI1$$1!!J o/ integer;
.ar st:sti.a; #,n:integer; ams,e.:&oolean;
2rocedure Init(#:integer; .ar st:sti.a);
&egin
stI#J:=11;
end;
2rocedure 'uccesor(.ar ams:&oolean; .ar st:sti.a; #:integer);
&egin
i/ stI#J>1 t-en &egin
stI#J:=stI#J1;
ams:=true;
end
else ams:=/alse
end;
2rocedure @alid(.ar e.:&oolean; st:sti.a; #:integer);
&egin
e.:=true;
end;
/unction 'olutie(#:integer):&oolean;
.ar i, E:integer; co2ie:sti.a;
&egin
/or i:=1 to n do co2ieIiJ:=stIiJ;
/or i:=1 to n11 do
i/ co2ieIiJ=! t-en
/or E:=i1 to n do
i/ co2ieIEJ=1 t-en
&egin co2ieIEJ:=11; co2ieIiJ:=11; &rea# end;
solutie:=true;
/or i:=1 to n do
i/ (co2ieIiJ=1) or (co2ieIiJ=!) t-en solutie:=/alse
end;
2rocedure =i2ar;
.ar i:integer;
&egin
/or i:=1 to n do
i/ stIiJ=! t-en Krite('(') else Krite(')');
Kriteln
end;
&egin
Krite(' PR8DR5* P5R5"=GFG ');
readln;
Krite('Introduceti "= '); readln(n);
#:=1; Init(#,st);
K-ile (#;!) do &egin
re2eat
'uccesor(ams,st,#);
i/ ams t-en @alid(e.,st,#);
until (not ams) or (ams and e.);
i/ ams t-en i/ #=n t-en i/ solutie(#) t-en ti2ar
else Krite('7')
else &egin #:=#1; Init(#,st) end
else #:=#11 end;
readln
end$
3'
program produs?cartezian>
ty2e sti.a=arrayI1$$+!J o/ integer;
.ar st,max:sti.a; e.,ams:&oolean; n,#,i:integer;
2rocedure Init(.ar st:sti.a; #:integer);
&egin
stI#J:=!;
end;
2rocedure 'uccesor(.ar st:sti.a; #:integer; .ar ams:&oolean);
&egin
i/ stI#J>maxI#J t-en &egin
stI#J:=stI#J1; ams:=true;
end else ams:=/alse
end;
2rocedure @alid(st:sti.a; #:integer; .ar e.:&oolean);
.ar i:integer;
&egin
e.:=true
end;
/unction 'olutie:&oolean;
&egin
'olutie:=(#=n)
end;
2rocedure =i2ar;
.ar i:integer;
&egin
/or i:=1 to n do Krite(stIiJ,' ');
Kriteln
end;
&egin
Kriteln('PR84U' C5R=GFI5"');
Kriteln('4ati nr multimilor, a2oi elementele lorM');
readln(n);
/or i:=1 to n do readln(maxIiJ);
#:=1; Init(st,#);
K-ile #;! do &egin
re2eat
'uccesor(st,#,ams);
i/ ams t-en @alid(st,#,e.)
until (ams and e.) or (not ams);
i/ ams t-en
i/ 'olutie t-en =i2ar
else &egin #:=#1; Init(st,#) end
else #:=#11
end;
readln;
end$
3/
program cubuletze>
NO5PP=PPG C8"'8,GQ
Fiind data o multime de n cuburi, fiecare cub fiind caracterizat de lungimea laturii si culoarea sa, sa se
genereze toate turnurile care se pot forma cu p cuburi astfel incat doua cuburi vecine sa nu aiba
aceeasi culoare.
uses
'ysUtils;
ty2e sti.a=arrayI1$$+!J o/ integer;
cu&=record
l:integer; cul:'tring end;
.ar st:sti.a; ams,e.:&oolean; cu&uri:arrayI1$$+!J o/ cu&;
#,n,i:integer;
2rocedure 'uccesor(.ar st:sti.a; #:integer; .ar ams:&oolean);
&egin
i/ stI#J>n t-en &egin stI#J:=stI#J1; ams:==rue end
else ams:=Ralse
end;
2rocedure @alid(st:sti.a; #:integer; .ar e.:&oolean);
.ar i:integer;
&egin
e.:==rue;
/or i:=1 to #11 do i/ stI#J=stIiJ t-en e.:=Ralse;
i/ #;1 t-en &egin
i/ cu&uriIstI#11JJ$cul=cu&uriIstI#JJ$cul t-en e.:=Ralse;
i/ cu&uriIstI#11JJ$l > cu&uriIstI#JJ$l t-en e.:=Ralse
end
end;
2rocedure =i2ar;
.ar i:integer;
&egin
/or i:=1 to n do
Krite('Cu&ul ',stIiJ,' 1',cu&uriIstIiJJ$l,' 1',cu&uriIstIiJJ$cul,' ');
Kriteln
end;
&egin
Read,n(n);
/or i:=1 to n do &egin
Write('Cu&ul ',i,':'); Read,n(cu&uriIiJ$l);
Read,n(cu&uriIiJ$cul) end;
#:=1; stI#J:=!;
K-ile #;! do &egin
re2eat
'uccesor(st,#,ams);
i/ ams t-en @alid(st,#,e.)
until (ams and e.) or (not ams);
i/ ams t-en i/ #=n t-en =i2ar
else &egin #:=#1; stI#J:=! end
else #:=#11
end; Read,n
end$
30
program $ai?mic?gen>
NO5PP=PPG C8"'8,GQ
Fiind data relatia: (a1,a2,...,an) < (b1,b2,...,bn) <=> (ricare i:a!i"<= b!i") si (#$ista %:a!%"<b!%").
&a se genereze elementele c cu proprietatea a<=c<=b.
uses
'ysUtils;
ty2e sti.a=arrayI1$$)!J o/ integer;
.ar st,a,&:sti.a; ams,e.:&oolean; #,n,i:integer;
2rocedure Init(.ar st:sti.a; #:integer);
&egin stI#J:=aI#J end;
2rocedure 'uccesor(.ar st:sti.a; #:integer; .ar ams:&oolean);
&egin
i/ stI#J>&I#J t-en &egin stI#J:=stI#J1; ams:=true end
else ams:=/alse
end;
2rocedure @alid(st:sti.a; #:integer; .ar e.:&oolean);
&egin e.:=true end;
/unction *aimic(.1,.%:sti.a):&oolean;
.ar i:integer; c1,c%:&oolean;
&egin
c1:=true; c%:=/alse;
/or i:=1 to n do i/ .1IiJ;.%IiJ t-en c1:=/alse;
/or i:=1 to n do i/ .1IiJ>.%IiJ t-en c%:=true;
*aimic:=c1 and c%;
end;
/unction *ai*ic'auGgal(.1,.%:sti.a):&oolean;
.ar i:integer; c1:&oolean;
&egin
c1:=true;
/or i:=1 to n do i/ .1IiJ;.%IiJ t-en c1:=/alse;
*ai*ic'auGgal:=c1
end;
2rocedure =i2ar;
.ar i:integer;
&egin
i/ *aimic'auGgal(st,&) and *aimic'auGgal(a,st) t-en &egin
/or i:=1 to n do Krite(stIiJ,' ');
Kriteln
end
end;
&egin
Write('"='); Read,n(n);
Write('Citeste .ec a: ');
/or i:=1 to n do Read,n(aIiJ);
Write('Citeste .ec &: ');
/or i:=1 to n do Read,n(&IiJ);
#:=1; stI#J:=!;
K-ile #;! do &egin
re2eat
succesor(st,#,ams);
i/ ams t-en .alid(st,#,e.)
until (not ams) or (ams and e.);
i/ ams t-en i/ #=n t-en ti2ar
else &egin #:=#1; stI#J:=! end
else #:=#11
end; Read,n, end$
)B
program Secv?)ealizabile>
NO5PP=PPG C8"'8,GQ
Fie n,m si '=('1,'2,...,'n) si (=((1,...,(n) doua secv de numere nat. )ceste secv se numesc
*realizabile* daca e$ista o matrice cu n $ n elemente din multimea +,,1- astfel incat pe fiecare linie i
suma elementelor este '!i", si pe fiecare coloana suma elem este (!%". &a se gen pt doua secv date
toate matricele cu proprietatea enuntata.
uses
'ysUtils;
ty2e matrice=arrayI1$$)!,1$$)!J o/ integer;
.ec=arrayI1$$)!J o/ integer;
.ar ams,e.:&oolean; m,n,i,nrc,nrl:integer;
a:matrice; l,c:.ec;
2rocedure 'uccesor(.ar a:matrice; .ar ams:&oolean);
&egin
i/ aIm,nJ>1 t-en &egin aIm,nJ:=aIm,nJ1; ams:=true end
else ams:=/alse
end;
2rocedure @alid(a:matrice; .ar e.:&oolean);
&egin
e.:=true;
end;
/unction @eri/ica:&oolean;
.ar i,E,s:integer; o#:&oolean;
&egin
o#:=true; s:=!;
/or i:=1 to nrl do &egin
/or E:=1 to nrc do s:=saIi,EJ;
i/ s>;,IiJ t-en o#:=/alse;
s:=!
end; s:=!;
/or i:=1 to nrc do &egin
/or E:=1 to nrl do s:=saIE,iJ;
i/ s>;CIiJ t-en o#:=/alse;
s:=!
end;
@eri/ica:=o#
end;
2rocedure =i2ar;
.ar i,E:integer;
&egin
i/ @eri/ica t-en &egin
/or i:=1 to nrl do &egin
/or E:=1 to nrc do Krite(aIi,EJ,' ');
Kriteln
end;
Kriteln('SSSSSSSSSSSSSSSSSSSSSSS') end
end;
&egin
Write('4ati nr linii si nr coloane: '); Read,n(nrl,nrc);
Write(''umele 2e linii: ');
/or i:=1 to nrl do Read,n(,IiJ);
Write(''umele 2e coloane: ');
/or i:=1 to nrc do Read,n(CIiJ);
m:=1; n:=1; aIm,nJ:=11;
K-ile (n;!) and (m;!) do &egin
re2eat
succesor(a,ams);
i/ ams t-en .alid(a,e.)
until (not ams) or (ams and e.);
i/ ams t-en i/ (m=nrl) and (n=nrc) t-en ti2ar
else &egin
i/ n=nrc t-en &egin m:=m1; n:=1 end
else n:=n1;
aIm,nJ:=11; end
else &egin i/ n=1 t-en &egin m:=m11; n:=nrc end
else n:=n11 end
end;
Read,n
end$
6!
program Submultime?de?suma?$>
&e da o multime cu n elemente, si un intreg pozitiv .. &a se det toate submultimile pt care suma
elementelor este .
uses
'ysUtils;
ty2e sti.a=arrayI1$$+!J o/ integer;
.ar st:sti.a; ams,e.:&oolean; #,n,m,i:integer;
.al:arrayI1$$+!J o/ integer;
2rocedure 'uccesor(.ar st:sti.a; #:integer; .ar ams:&oolean);
&egin
i/ stI#J>1 t-en &egin stI#J:=stI#J1; ams:=true end
else ams:=/alse
end;
2rocedure @alid(st:sti.a; #:integer; .ar e.:&oolean);
.ar i:integer;
&egin
e.:=true;
end;
2rocedure =i2ar;
.ar i,s:integer;
&egin
s:=!;
/or i:=1 to n do s:=sstIiJ7.alIiJ;
i/ s=m t-en &egin
/or i:=1 to n do i/ stIiJ=1 t-en Krite(.alIiJ,' ');
Kriteln end
end;
&egin
Write('"='); Read,n(n); /or i:=1 to n do Read,n(.alIiJ);
Write('*='); Read,n(m);
#:=1; stI#J:=11;
K-ile #;! do &egin
re2eat
succesor(st,#,ams);
i/ ams t-en .alid(st,#,e.)
until (not ams) or (ams and e.);
i/ ams t-en i/ #=n t-en ti2ar
else &egin #:=#1; stI#J:=11 end
else #:=#11
end;
Read,n
end$
61
program 2al>
// &a se genereze toate posibilitatile de a muta un cal
// pe o tabla n $ n astfel incat sa fie acoperita toata
// tabla
uses
'ysUtils;
ty2e mat=arrayI!$$)!,!$$)!J o/ integer;
const dx:arrayI1$$AJ o/ integer=(1%,11,1,%,%,1,11,1%);
dy:arrayI1$$AJ o/ integer=(1,%,%,1,11,1%,1%,11);
.ar a:mat; x!,y!,n,i,E,sol:integer;
2rocedure 5/is*at(a:mat; n:integer);
.ar i,E:integer;
&egin
/or i:=1 to n do &egin
/or E:=1 to n do Write(aIi,EJ:%,' ');
Write,n
end;
Write,n('1111111111'); sol:=sol1
end;
2rocedure Cal'are(.ar a:mat; x,y,2as:integer);
.ar i,xn,yn:integer;
&egin
/or i:=1 to A do &egin
xn:=xdxIiJ; yn:=ydyIiJ;
i/ (xn in I1$$nJ) and (yn in I1$$nJ) and (aIxn,ynJ=!) t-en &egin
aIxn,ynJ:=2as;
i/ 2as=n7n t-en 5/is*at(a,n)
else Cal'are(a,xn,yn,2as1);
aIxn,ynJ:=!
end
end
end;
&egin
sol:=!;
Write('4ati marimea ta&lei (n x n): '); Read,n(n);
/or i:=1 to n do
/or E:=1 to n do aIi,EJ:=!;
Write('4ati 2o0itia de start: '); Read,n(x!,y!);
aIx!,y!J:=1;
Cal'are(a,x!,y!,%);
Write,n(''olutii: ',sol); Read,n
end$
"2
program .abirint>
// &e da o matrice binara unde , reprezinta drum liber,
// iar 1 obstacol. &e cere sa se gen toate drumurile
// posibile pentru a iesi din labirint, pornind dintr0o
// pozitie data.
uses
'ysUtils;
ty2e mat=arrayI1$$+!,1$$+!J o/ integer;
sir=arrayI1$$6J o/ integer;
const dx:sir=(11,!,1,!);
dy:sir=(!,1,!,11);
.ar a:mat; x!,y!,n,i,E:integer; R:=ext;
2rocedure 5/is*at(a:mat; n:integer);
.ar i,E:integer;
&egin
/or i:=1 to n do &egin
/or E:=1 to n do Write(aIi,EJ:%,' ');
Writeln
end;
Write,n('11111111111'); Read,n
end;
2rocedure ,a&(.ar a:mat; x,y,2as:integer);
.ar xn,yn,i:integer;
&egin
/or i:=1 to 6 do &egin
xn:=xdxIiJ; yn:=ydyIiJ;
i/ (xn in I1$$nJ) and (yn in I1$$nJ) and (aIxn,ynJ=!) t-en &egin
aIxn,ynJ:=2as;
i/ (xn in I1,nJ) or (yn in I1,nJ) t-en 5/is*at(a,n)
else ,a&(a,xn,yn,2as1);
aIxn,ynJ:=!
end
end
end;
&egin
5ssign(R,'la&irint$txt'); Reset(R);
Read,n(R,n);
/or i:=1 to n do &egin
/or E:=1 to n do Read(R,aIi,EJ);
Read,n(R) end;
Close(R);
Write,n(',a&irintul este:');
5/is*at(a,n);
Write('4ati 2o0itia initiala: '); Read,n(x!);
Write(' '); Read,n(y!);
aIx!,y!J:=%;
,a&(a,x!,y!,))
end$
"3
program Palindroame>
NO5PP=PPG C8"'8,GQ
uses
'ysUtils;
ty2e sti.a=arrayI1$$)!J o/ integer;
.ar st:sti.a; ams,e.,im2ar:&oolean; #,n,m:integer;
2rocedure 'uccesor(.ar st:sti.a; #:integer; .ar ams:&oolean);
&egin
i/ stI#J>m t-en &egin stI#J:=stI#J1; ams:=true end
else ams:=/alse
end;
2rocedure @alid(st:sti.a; #:integer; .ar e.:&oolean);
.ar i:integer;
&egin
e.:=true;
/or i:=1 to #11 do i/ stIiJ=stI#J t-en e.:=/alse
end;
2rocedure =i2ar;
.ar i:integer;
&egin
i/ not im2ar t-en &egin
/or i:=1 to n do Krite(stIiJ,' ');
/or i:=n doKnto 1 do Krite(stIiJ,' ');
Kriteln end
else &egin
/or i:=1 to n do Krite(stIiJ,' ');
/or i:=n11 doKnto 1 do Krite(stIiJ,' ');
Kriteln end
end;
&egin
Write('4ati lungimea: '); Read,n(n);
im2ar:=(n mod %=1);
n:=n di. %;
i/ im2ar t-en n:=n1; N2t su2ra2unereQ
Write('4ati limita: '); Read,n(m);
#:=1; stI#J:=!;
K-ile #;! do &egin
re2eat
succesor(st,#,ams);
i/ ams t-en .alid(st,#,e.)
until (not ams) or (ams and e.);
i/ ams t-en i/ #=n t-en ti2ar
else &egin #:=#1; stI#J:=! end
else #:=#11
end;
Read,n
end$
""
program =umarul">
// 1ornind de la nr 2 sa se obtina orice nr:
// adaugand la sfarsit cifra 2 sau ,
// impartind la 2 numarul
uses
'ysUtils;
ty2e sol=record
.al:arrayI1$$+!J o/ integer;
nr:integer
end;
.ar n,i:integer; s:sol;
2rocedure 'al.ea0a(x:integer);
&egin
s$nr:=s$nr1;
s$.alIs$nrJ:=x
end;
2rocedure Code;
&egin
re2eat
re2eat
n:=n7%; 'al.ea0a(n);
until (n mod 1!=6) or (n mod 1!=!) or (n=6);
i/ n>;6 t-en &egin
n:=n di. 1!;
'al.ea0a(n)
end
until n=6
end;
&egin
s$nr:=1;
Write,n('Pro&lema numarului 6M');
Write,n('SSSSSSSSSSSSSSSSSSSSS');
Write('4ati n: '); Read,n(n);
s$.alI1J:=n;
Code;
/or i:=s$nr doKnto 1 do Krite(s$.alIiJ,' ');
Read,n
end$
"&
program 1esc?suma?consec>
// &a se descompuna un nr in suma de termeni
// intregi consecutivi
// #$. 3=4 0> 2 5 2
// 2 6
uses
'ysUtils;
ty2e sir=arrayI1$$6!J o/ integer;
.ar st:sir; ams,e.:&oolean; #,n:integer;
2rocedure Init(.ar st:sir; #:integer);
&egin
i/ #;1 t-en stI#J:=stI#11J
else #:=!
end;
2rocedure 'uccesor(.ar st:sir; #:integer; .ar e.:&oolean);
&egin
i/ stI#J
else ams:=/alse
end;
2rocedure @alid(st:sir; #:integer; .ar e.:&oolean);
.ar s,i:integer;
&egin
s:=!; e.:==rue;
/or i:=1 to # do s:=sstIiJ;
i/ s;n t-en e.:=Ralse;
/or i:=1 to #11 do i/ stIiJ=stI#J t-en e.:=/alse
end;
/unction 'olutie:&oolean;
.ar s,i:integer;
&egin
s:=!;
/or i:=1 to # do s:=sstIiJ;
'olutie:=(s=n)
end;
2rocedure =i2ar;
.ar i:integer; &un:&oolean;
&egin
&un:=true;
/or i:=1 to #11 do i/ stIi1J1stIiJ>;1 t-en &un:=/alse;
i/ &un t-en &egin
/or i:=1 to # do Write(stIiJ,' ');
Write,n
end
end;
&egin
Write('"= '); Read,n(n);
#:=1; Init(st,#);
K-ile #;! do &egin
re2eat
'uccesor(st,#,ams);
i/ ams t-en @alid(st,#,e.)
until (not ams) or (ams and e.);
i/ ams t-en i/ 'olutie t-en =i2ar
else &egin #:=#1; Init(st,#) end
else #:=#11
end;
Read,n
end$
"'
program (renuri>
// 7oua orase 1 si 2 sunt conectate printr0o retea de cale ferata.
// 7istanta dintre orase este 7 8m. 7e la 1 la 2 pleaca trenuri la
// fiecare 91 ore. 7e la 2 la 1 pleaca trenuri la fiecare 92 ore.
// 9renurile merg de la 1 la 2 cu :1 ;m/<, iar de la 2 la 1 cu :2 ;m/<.
// &a se det nr de intalniri pe calea ferata care uneste orasele 1 si 2
// in intervalul !9,,9f", stiind ca la momentul 9, pleaca doua trenuri simultan,
// unul de la 1 spre 2 si celalalt de la 2 spre 1.
ty2e sir=arrayI!$$1!!!!!!J o/ integer;
.ar dr:sir; d,.1,.%,t1,t%,t!,t/:integer;
i,E,-,#:integer;
&egin
Write('4='); Read,n(4);
Write('@1='); Read,n(@1);
Write('@%='); Read,n(@%);
Write('=1='); Read,n(=1);
Write('=%='); Read,n(=%);
Write('=!='); Read,n(=!);
Write('=R='); Read,n(=R);
/or i:=1 to d do drIiJ:=!;
-:=!; #:=!; drI!J:=1; drId1J:=%;
re2eat
i:=!;
re2eat
i/ drIiJ=1 t-en i/ i.1
drIi.1J:=1;
/or E:=i to i.1 do i/ drIEJ=% t-en inc(#);
drIiJ:=!;
i:=i.11 end
else drIiJ:=!
else
i/ drIiJ=% t-en i/ i1.%;! t-en &egin
drIi1.%J:=%;
/or E:=i1.% to i do i/ drIEJ=1 t-en inc(#);
drIiJ:=! end
else drIiJ:=!;
i:=i1
until i=d%;
-:=-1;
i/ - mod t1=! t-en drI!J:=1;
i/ - mod t%=! t-en drId1J:=%
until -==R1=!;
Write('=renurile se intalnesc de ',#,' oriM'); Read,n
end$
"/
program Baze?numer>
uses
'ysUtils;
/unction 4in4ecIn(n,&:integer):integer;
&egin
i/ n;! t-en 4in4ecIn:=4in4ecIn(n di. &,&)71!n mod &;
end;
/unction Putere(n,e:integer):integer;
&egin
i/ e;! t-en Putere:=n7Putere(n,e11)
else Putere:=1
end;
/unction In4ec(n,&:integer):integer;
.ar i,ret,x,cod:integer; s:'tring;
&egin
ret:=!;
'tr(n,s);
/or i:=1 to lengt-(s) do i/ sIiJ>;'!' t-en &egin
@al(sIiJ,x,cod);
ret:=retPutere(&,lengt-(s)1i)7x
end;
In4ec:=ret
end;
&egin
end$
"0
program Sume?de?ractii>
// &e citeste n si m de la tastatura. &a se descompuna
// fractia m/n in suma de fractii cu numaratorul 1.
// 3umarul fractiilor trebuie sa fie minim.
// 3umitorul trebuie sa se descompuna
uses
'ysUtils;
ty2e sir=arrayI1$$)!J o/ integer;
lista=record
.al:sir; nr:integer end;
solutii=record
.al:sir; si0e:integer end;
.ar st:sir; ams,e.:&oolean; #,n,m,i:integer;
di.i0:lista; sol:solutii;
2rocedure Init(.ar st:sir; #:integer);
&egin stI#J:=11 end;
2rocedure 'uccesor(.ar st:sir; #:integer;.ar ams:&oolean);
&egin
i/ stI#J>1 t-en &egin
stI#J:=stI#J1; ams:=true end
else ams:=/alse
end;
2rocedure @alid(st:sir; #:integer; .ar e.:&oolean);
&egin e.:=true end;
/unction 'olutie:&oolean;
&egin 'olutie:=(#=di.i0$nr) end;
2rocedure 'al.ea0a;
.ar i,s,marime:integer;
&egin
s:=!; marime:=!;
/or i:=1 to di.i0$nr do i/ stIiJ=1 t-en &egin
s:=sdi.i0$.alIiJ; marime:=marime1 end;
i/ s=m t-en i/ marime>sol$si0e t-en &egin
sol$.al:=st;
sol$si0e:=marime end
end;
2rocedure 4i.i0ori(x:integer);
.ar i:integer;
&egin
/or i:=1 to x di. % do i/ x mod i=! t-en &egin
di.i0$nr:=di.i0$nr1;
di.i0$.alIdi.i0$nrJ:=i
end
end;
&egin
sol$si0e:=*axInt;
Write('"= '); Read,n(n);
Write('*= '); Read,n(m);
di.i0$nr:=!; 4i.i0ori(n);
#:=1; Init(st,#);
K-ile #;! do &egin
re2eat
'uccesor(st,#,ams);
i/ ams t-en @alid(st,#,e.)
until (not ams) or (ams and e.);
i/ ams t-en i/ 'olutie t-en 'al.ea0a
else &egin #:=#1; Init(st,#) end
else #:=#11
end;
Write('Rractia ',m,'(',n,' este egala cu suma: ');
i/ m=% t-en Write('1(',n,' 1(',n)
else /or i:=1 to di.i0$nr do i/ sol$.alIiJ=1 t-en Write('1(',n di. di.i0$.alIiJ,' ');
Read,n
end$
6B
Se dau doua segmente 5determinate de cate doua puncte6.
Sa se determine daca cele doua segmente se intersecteaza.
program IntersSeg;
{$APPTYPE CONSOLE}
uses
SysUtils;
type punct=record
x,y:real end;
var a1,a2,b1,b2:punct;
procedure Citeste(var a:punct);
begin
it! a do begin ReadLn(x); ReadLn(y) end
end;
procedure Retara!(a,b:punct; var !,n,p:real);
begin
!:=a"y#b"y;
n:=b"x#a"x;
p:=#a"x$a"y%a"x$b"y%a"x$a"y#b"x$a"y
end;
"unction &partineSeg(p,a,b:punct):b''lean;
begin
&partineSeg:=((p"x(=a"x) and (p"x)=b"x) and (p"y(=a"y) and (p"y)=b"y)) or
((p"x(=b"x) and (p"x)=a"x) and (p"y(=b"y) and (p"y)=a"y))
end;
"unction Inters(p1,p2,*1,*2:punct):b''lean;
var a1,b1,c1,a2,b2,c2:real; p:punct;
begin
Retara!(p1,p2,a1,b1,c1);
Retara!(*1,*2,a2,b2,c2);
p"x:=(b2$c1#b1$c2) + (b1$a2#b2$a1);
p"y:=(a2$c1#a1$c2) + (a1$b2#a2$b1);
,riteLn(p"x:-:1,. .,p"x:-:1);
Inters:=&partineSeg(p,p1,p2)
end;
begin
Citeste(a1);
Citeste(a2);
Citeste(b1);
Citeste(b2);
,riteLn(Inters(a1,a2,b1,b2));
ReadLn
end"
50
program /i01stra;
{$APPTYPE CONSOLE}
{ AL#O$%T&'L L'% (%)*ST$A PENT$' (ETE$&%NA$EA ($'&'L'% &%N%& }
uses
SysUtils;
const in2init=33333333;
var d,ant:array41""156 o" integer;
s:array41""156 o" b''lean;
c:array41""15,1""156 o" integer;
n,i,0,i5,pas,!in,1:integer;
begin
{ C%T%$EA NO('$%LO$ S% A COST'$%LO$ &'C+%%LO$ }
,rite(.7=.); ReadLn(n);
"or i:=1 to n do
"or 0:=i%1 to n do begin
,rite(i,.#.,0,.:.);
readLn(c4i,06);
i" c4i,06=5 t!en c4i,06:=in2init;
c40,i6:=c4i,06
end;
,rite(.Start= .); ReadLn(i5);
{ %N%T%AL%,A$EA -ECTO$%LO$ }
"or i:=1 to n do begin
s4i6:=8alse;
d4i6:=C4i5,i6;
i" d4i6)in2init t!en ant4i6:=i5
e.se ant4i6:=5 end;
s4i56:=9rue; d4i56:=5; ant4i56:=5;
{ PA$C'$#E$EA #$A/'L'% S% (ET ($'&'L'% &%N%& }
"or pas:=1 to n#1 do begin
!in:=in2init;
"or i:=1 to n do
i" (not s4i6) and (d4i6)!in) t!en begin !in:=d4i6; 1:=i end;
s416:=9rue;
"or i:=1 to n do
i" (not s4i6) and (d416%C41,i6)d4i6) t!en begin
d4i6:=d416%C41,i6; ant4i6:=1 end
end;
,rite(./estinatie: .); ReadLn(i);
{ A/%SA$EA ($'&'L'% &%N%& (E LA i0 12 i }
!i.e i)(5 do begin
:rite(i,. .);
i:=ant4i6 end;
ReadLn
end"
51
program ;en;ra2;
{$APPTYPE CONSOLE}
{ #ENE$A$E #$A/'$% NEO$%ENTATE C' N -A$/'$% }
uses
SysUtils;
type <at&d=array41""-5,1""-56 o" #1""1;
var a!s,e=:b''lean; l,c,n:integer; !:<at&d;
procedure Init(var !:!atad);
var i:integer;
begin
"or i:=1 to n do !4i,i6:=5
end;
procedure Succ(var !:!atad; l,c:integer; var a!s:b''lean);
begin
i" !4l,c6)1 t!en begin !4l,c6:=!4l,c6%1; !4c,l6:=!4l,c6; a!s:=9rue end
e.se a!s:=8alse
end;
procedure >alid(var e=:b''lean);
begin e=:=9rue end;
"unction ;ata:b''lean;
begin ;ata:=(l=n#1) and (c=n) end; { /%3E( /O$ (%A#ONAL }
procedure &2isare;
var i,0:integer;
begin
"or i:=1 to n do begin
"or 0:=1 to n do ,rite(!4i,06,. .);
,riteLn
end;
ReadLn
end;
begin
,rite(.7=.); ReadLn(n);
l:=1; c:=2; !4l,c6:=#1;
!i.e (l(5) and (c(5) do begin
repeat
Succ(!,l,c,a!s);
i" a!s t!en >alid(e=)
unti. (not a!s) or (a!s and e=);
i" a!s t!en i" ;ata t!en &2isare
e.se i" c)n t!en begin c:=c%1; !4l,c6:=#1 end
e.se begin l:=l%1; c:=l%1; !4l,c6:=#1 end
e.se i" c(l%1 t!en c:=c#1
e.se begin l:=l#1; c:=l%1 end
end
end"
http://www.pascal.go.ro/
)
52a se scrie un program care calculeaza f(x) pentru x numar natural dat.
f(x)=
program functie;
var x,f:integer;
egin
writeln (!x=!);rea"ln (x);
if x# 1 then
f:= $%x &1
else
f:= 1'x;
writeln( !valoarea lui f=!, f:();
rea"ln;
en".
5)
Se citeste de la tastatura un caracter.Sa se specifice daca acesta este litera,cifra sau un Se citeste de la tastatura un caracter.Sa se specifice daca acesta este litera,cifra sau un
alt caracter diferit de acesta. alt caracter diferit de acesta.
program caracter;
var c:char;
egin
writeln (!"ati pe c=!);rea"ln (c);
*ase c of
!+!..!,!,!a!..!-!:writeln (!ati tastat litera!);
!0!..!.!:writeln (!ati tastat o cifra!)
else
writeln (!ati tastat un alt tip "e caracter!);
en";
rea"ln;
en".
5(Sa se scrie un program care calculeaza f(x) pentru x numar natural dat.

f(x)=
program functie;
var x,f:integer;
egin
!riteln ("x#");readln (x);
if x$ 1 t%en
f:# 2&x '1
else
f:# 1(x;
!riteln( "valoarea lui f#", f:));
readln;
end.
?
$x/1 ,x01
1 ' x ,x11
55
Sa se calculeze aria unui triungi pentru care se cunosc lungimea azei si a inaltimii.
program arie1;
var ,%:integer;
egin
!riteln ("#");readln ();
!riteln ("%#");readln (%);
if ($*) and (%$*) t%en
!riteln ("aria este#", &%+2);
readln;
end.
3) Sa se calculeze aria unui rom ale carui diagonale se cunosc.
program arie2;
var d1,d2:integer;
egin
!riteln ("d1#");readln (d1);
!riteln ("d2#");readln (d2);
if (d1$*) and (d2$*) t%en
!riteln (,aria este#", d1&d2+2);
readln;
end.
-lgoritm .rei/numere/crescatoare
2ar a,,c:real
3egin
4ea"(a,,c)
5f a0 then
5f 0c then
6rite(a,,c)
7lse
5f a0c then
6rite (a,c,)
7lse
6rite (c,a,)
7n"if
7n"if
7lse
5f a 0c then
6rite (,a,c)
7lse
5f c0 then
6rite (c,,a)
7lse
6rite (,c,a)
7n"if
7n"if
7n"if
7n".
50
-lgoritm /produsul/a/doua/numere
2ar x,8,-:integer
3egin
4ea"(x,8)
,:= x%8
6rite(-)
7n".
59
-lgoritm 1ax/si/minim/a/doua/numere
2ar x,8,max,min:integer
3egin
4ea"(x,8)
5f x08 then
:ax:=8
:in:=x
7lse
:ax:=x
:in:=8
7n"if
6rite(max,min)
en".
5;
Sa se calculeze suma produsul si diferenta numerelor a si cu a$
+lgoritm<operatii
2ar a,s,,p,":integer
3egin
4ea"(a,)
==a'
>=a%
?=a/
6rite(s,p,")
7n".
5.
Sa se calculeze 2#x
2
(x#1, 3#x
2
(4
2
si 5#(x&4(x
2
(4
2
(1)+2 pentru acelasi valori ale lui x si 4
+lgoritm expresii
var x,8,7,@:integer ;A :real
egin
rea"(x,8)
7=x%x'8'1
@=x%x'8%8
A=(x%x'8%8'1)/7
6rite (7,@,A)
7n".
B0
Se da un numar natural n(n 32***) se cere sa calculezi suma si produsul cifrelor sale.
7xemplu pentru n=$)( se va afisa suma=., pro"usul=$(
=olutie vom folosi "oua variaile s si p, prima pentru suma cifrelor lui n, iar cea "e a "oua pentru
pro"usul cifrelor lui n. 5nitial s:=0,iar p:=1. 4epetat scoatem ultima cifra c "in n cu care
actuali-am s si p, pana can" n va "eveni 0
+lgoritm(
2ar s,p,c;n;integer
3egin
4ea"(n)
=:=0
>:=1
4epeat
*:=n mo" 10
=:=s'c
>:=p%c
C:=n "iv mo" 10
Dntil n=0
6rite (Esuma=!,s)
6rite(Epro"usul=!,p)
7n".
B1
Se dau doua numere si se cere sa se determine suma,diferenta,produsul si catul lor.
/vom folosi "oua variaile a si in are citim valorile numerelor "upa care afisam valoarea
corespun-atoare celor patru operatii.
>rogram<operatii;
var a,:integer;
egin
write(Ea=!);rea"ln(a);
write(E=!);rea"ln();
writeln(a,!'!,,!=!,a');
writeln(a,!/!,,!=!,a/);
writeln(a,!%!,,!=!,a%);
writeln(a,!/!,,!=!,a/:5:));
rea"ln;
en".
B$
Sa se determine ultima cifra a sumei x(4 ,unde x si 4 sunt numere naturale naturale data
de la tastatura.
7x .pentru x=$(5 si 8 =1. se va afifa (
=oltie :pentru a afla ultima cifra a sumei folosim impartirea la 10
6rogram 7ltima8cifra;
var x,8:integer;
s:longint;
egin
write(Ex=!); rea"ln(x);
write(E8=!); rea"ln(8);
s:=x'8;
writeln(Eultima cifra a sumei E,x,!'!,8,!este!,s mo" 10);
rea"ln
en".
B)
Se citeste de la tastatura un numar natural cu cel mult 9 cifre.sase afiseze suma cifrelor
acestui numar. 2xemplu pentru numarul 32)::1 se va afisa 20.
1. =e oservF ca structura repetitivF repeta.p!n" c!nd n#i$% se va opri cGn" se gFseHte o
valoare i la care n se Imparte (primul "ivi-or al lui n). 5n variaila s vom avea la final cGtul
ImpFrJirii lui n la "ivi-orul i gFsit. ?aca "ivi-orul i gFsit nu este chiar n (a"icF numFrul n nu e
prim), se afiHea-F s, "aca nu, programul nu va afiHa nimic.
>t. n=)5, primul "ivi-or este 5, i=5, s=)5 :5=9, s0n, "eci se va afiHa valoarea 9.
$. CumFrul n treuie sa fie prim, cum am mai explicat mai sus. ?e exemplu n=9.
).
program ac ;
var s, n, i : integer ;
egin
write(En=!); rea"(n);
i:=1;
repeat
i:=i'1;
s: = n "iv i
until n mo" i =0;
if i0n then write(s);
en".
(.
citeste n;
i$;
cat timp nKi 0#0 executa i:=i'1; // creHtem i cat timp nu gFsim un "ivi-or
s Ln/iM;
"aca i0n atunci scrie s;


555.
B(
>rogram ac;
N8pe vector=arra8L1..100M of integer;
2ar v: vector;
n, i: 1..100;
a, :1.....;
3egin
6rite(E?ati nr. "e elemente ale vectorului!) ; rea"ln(n) ;
6rite(E?ati a si !) ; rea"ln(a,) ;
vL1M :=a ; vL$M := ; // primele "oua elemente sunt fixate
@or i :=) to n "o // pt fiecare elem IncepGn" cu po-iJia )

5f i mo" $0#0 then vLiM:=vLi/1M'vLi/$M // pt po-itiile impare
7lse
vLiM:=as(vLi/1M/vLi/$M); // pt po- pare, folosim funcJia abs pt mo"ul
@or i:=1 to n "o write(vLiM,! E); // afiHarea vectorului
7n".
B5
a) =e oserva ca :
pt. nL0,.M nr. "e cifre este n x 1
pt. nL10....M nr cifre este . x 1 ' (n/.) x $ a"icF . numere "e cate o cifra ' (n/.) "e cate $
pt. nL100.....M nr. cifre este . x 1 ' .0 x $ ' (n/..) x ) analog cu mai sus
pt. nL1000......M nr "e cifre este . x 1 ' .0 x $' .00 x ) ' (n/...) x (

function calc(n: integer): integer;
egin
if (n0.) then calc : = n
else
if(n#=10) an"(n0=..) then calc: = .'(n/.)%$
else
if (n#=100)an" (n0=...) then calc: = .'.0%$'(n/..)%)
else
calc:=.'.0%$'.00%)'(n/...)%(
en";
) :eto"a consta in a i"entifica cate numere "e cate o cifra, cate "e $ cifre, cate "e ), cate "e (
intra in alcFtuirea numFrului cerut. @ormula "e calcul a numFrului "e cifre este "ata la punctul a.
7ficienta este "ata "e faptul ca nu folosim structuri repetitive ce ar mari timpul "e execuJie, si "e
asemenea ca nu folosim variaile suplimentare.
c) =cF"em "in numFrul "e cifre ale numFrului oJinut prin concatenarea numerelor 1, $,O.
numFrul "e cifre ale numFrului oJinut prin concatenare numerelor 1, $, O.(a/1).

CumFrul cerut va fi "at "e calc() & calc(a/1).
var a,:integer;
function calc(n:integer):integer;
egin
OOOOOOOOOOOOO
en";
egin
write(Pa=P); rea"(a);
write(P=P); rea"();
write(PC4 ?7 *5@47 7=N7P, calc()/calc(a/1));
en".
00
var f:text; // variaila fiHier
n,i: 1..1000;
contor: 0..1000; // valoarea ceruta
caracter: char; // memorea-F caracterul citit "in fiHier

egin
assign(f,P3+*.NQNP); // asignare
reset(f); // "eschi"ere pt. citire "in fiHier
write(Pn=P); rea"(n); // citire n
contor:=0; // iniJiali-are contor
for i:=1 to n "o // citim n caractere "in fiHier
egin
rea"(f, caracter); // la fiecare pas citim un caracter
if caracter in LP0P..P.PM then // "aca aparJine mulJimii cifrelor LP0P..P.PM, mFrim contorul
contor:=contor'1;
en";
6rite(P=unt P, contor, Pcaractere cifraP); //afiHare re-ultat

close(f); // Inchi"ere fiHier
en".
B9
. Sa se verifice daca o valoare data ;a; exista intr8un sir de numere ordonat crescator. Se va
folosi un algoritm azat pe metoda <ivide et =mpera.
program cautare@binara@di;
type =ect=array41""2A6o" integer;
var =:=ect;
a,n:integer;
procedure cit@=ect@di (var =:=ect; p,*:integer; nu!e:string);
begin
i" p=* t!en
begin
:rite(nu!e,.4.,p,.6=.);
readln(=4p6);
end
e.se
begin
cit@=ect@di(=,p,(p%*) div 2,nu!e);
cit@=ect@di(=,((p%*) div 2) % 1,*,nu!e);
end;
end;
"unction cb@di (p,*:integer):b''lean;
var !:integer;
begin
i" p=* t!en
cb@di:=(=4p6=a)
e.se
begin
!:=(p%*)div 2;
i" =4!6=a t!en
cb@di:=true
e.se
i" a)=4!6 t!en
cb@di:=cb@di(p,!#1)
e.se
cb@di:=cb@di(!%1,*);
end;
end;
begin
:riteln(.Se cauta ' =al'are intr#un =ect'r : .);
:rite(./ati nu!arul de ele!ente al =ect'rului = .); readln(n);
cit@=ect@di(=,1,n,.=.);
:rite(./ati =al'area cautata = .); readln(a);
i" cb@di(1,n) t!en
:riteln(.>al'area cautata se gaseste in =ect'rul dat B.)
e.se
:riteln(.>al'area cautata nu se gaseste in =ect'rul dat B.);
end"
{
Sa se verifice daca o valoare data 'a' exista intr-un sir de numere
ordonat
crescator. Se va folosi un algoritm bazat pe metoda Divide et Impera.
}
0:1odificati algoritmul cautarii inare, astfel incat, cautarea sa se faca intr8un vector
ordonat descrescator.
program cautare@binara@=ect@di;
type =ect=array41""2A6o" integer;
var =:=ect;
a,n:integer;
procedure cit@=ect@di (var =:=ect; p,*:integer; nu!e:string);
begin
i" p=* t!en
begin
:rite(nu!e,.4.,p,.6=.);
readln(=4p6);
end
e.se
begin
cit@=ect@di(=,p,(p%*) div 2,nu!e);
cit@=ect@di(=,((p%*) div 2) % 1,*,nu!e);
end;
end;
"unction cb@di (p,*:integer):b''lean;
var !:integer;
begin
i" p=* t!en
cb@di:=(=4p6=a)
e.se
begin
!:=(p%*)div 2;
i" =4!6=a t!en
cb@di:=true
e.se
i" a(=4!6 t!en
cb@di:=cb@di(p,!#1)
e.se
cb@di:=cb@di(!%1,*);
end;
end;
begin
:riteln(.Se cauta ' =al'are intr#un =ect'r : .);
:rite(./ati nu!arul de ele!ente al =ect'rului = .); readln(n);
cit@=ect@di(=,1,n,.=.);
:rite(./ati =al'area cautata = .); readln(a);
i" cb@di(1,n) t!en
:riteln(.>al'area cautata se gaseste in =ect'rul dat B.)
e.se
:riteln(.>al'area cautata nu se gaseste in =ect'rul dat B.);
end"
{
Modificati algoritmul cautarii binare, astfel incat, cautarea sa se faca
intr-un vector ordonat descrescator.
}
093olosind <ivide et =mpera, sa se calculeze n>, unde 1?#n?#2*.
program 2act'rial@di;
var n:byte;
"unction 2act'rial@di (n:byte; p,*:integer):l'ngint;
begin
i" p=* t!en
2act'rial@di:=p
e.se
2act'rial@di:=2act'rial@di(n,p,(p%*) div 2)$2act'rial@di(n,(p%*)
div 2 % 1,*);
end;
begin
:riteln(.Se calculeaCa 2act'rialul unui nu!ar : .);
:rite(./ati nu!arul = .); readln(n);
i" (n(=25) or (n)=1) t!en
:riteln(.7u!arul nu este c'respunCat'rB.)
e.se
:riteln(.8act'rialul nu!arului .,n,. (.,n,.B) este =
.,2act'rial@di(n,1,n));
end"
{
olosind Divide et Impera, sa se calculeze n!, unde
"#$n#$%&.
}
@*Sa se inverseze un cuvant.
program in=ersare@cu=ant@di;
var x:string;
"unction in=ert@di (var x:string; p,*:integer):string;
begin
i" p=* t!en
in=ert@di:=x4p6
e.se
in=ert@di:=in=ert@di(x,(p%*) div 2 % 1,*) % in=ert@di(x,p,(p%*) div
2);
end;
begin
:riteln(.Se in=erseaCa un cu=ant : .);
:rite(./ati cu=antul : .); readln(x);
:riteln(.Cu=antul in=ersat este : .,in=ert@di(x,1,lengtD(x)),. ".);
end"
{
Sa se inverseze un cuvant.
}
@1Sa se verifice daca un cuvant este palindromic.
program palindr'!@di;
var x:string;
"unction in=ert@di (var x:string; p,*:integer):string;
begin
i" p=* t!en
in=ert@di:=x4p6
e.se
in=ert@di:=in=ert@di(x,(p%*) div 2 % 1,*) % in=ert@di(x,p,(p%*) div
2);
end;
begin
:riteln(.Se =eri2ica daca un cu=ant este palindr'!ic : .);
:rite(./ati cu=antul : .); readln(x);
i" in=ert@di(x,1,lengtD(x))=x t!en
:riteln(.Cu=antul este palindr'!icB.)
e.se
:riteln(.Cu=antul nu este palindr'!icB.)
end"
{
Sa se verifice daca un cuvant este palindromic.
}
9$
.3iind dat un vector v cu n elemente intregi, sa se afiseze de cate ori gasim doua elemente
consecutive egale intre ele.
program =ect@1;
type =ect=array41""2A6 o" integer;
var =:=ect;
n:integer;
procedure cit@=ect (var =:=ect; var n=:integer; id:string);
var i:integer;
begin
:riteln(.Se citeste =ect'rul .,id,. :.);
:rite(./ati nu!arul de ele!ente = .); readln(n=);
i" n=)1 t!en
begin
:riteln(.7u!arul ele!entel'r trebuie sa 2ie cel putin 1 B .);
Dalt;
end
e.se
"or i:=1 to n= do
begin
:rite(id,.4.,i,.6=.);
readln(=4i6);
end;
end;
"unction ele!@c'nsec (=:=ect; n:integer):integer;
var 1,i:integer;
begin
1:=5;
"or i:=1 to n#1 do
i" =4i6==4i%16 t!en
inc(1);
ele!@c'nsec:=1;
end;
begin
:riteln(.Se =eri2ica de cate 'ri apar d'ua =al'ri c'nsecuti=e egale intr#un
=ect'r: .);
cit@=ect(=,n,.=.);
i" ele!@c'nsec(=,n)=5 t!en
:riteln(.7u exista nu!ere c'nsecuti=e egale in
=ect'r B.)
e.se
:riteln(.7u!arul ele!entel'r c'nsecuti=e egale este
= .,ele!@c'nsec(=,n),. ".);
end"
{
iind dat un vector v cu n elemente intregi, sa se afiseze de cate ori
gasim doua elemente consecutive egale intre ele.
}
@3Sa se afiseze elementele prime ale unui sir de n numere intregi citit de la tastatura.
program =ect@2;
type =ect=array41""2A6 o" integer;
var =:=ect;
1:byte;
n,i:integer;
procedure cit@=ect (var =:=ect; var n=:integer; id:string);
var i:integer;
begin
:riteln(.Se citeste =ect'rul .,id,. : .);
:rite(./ati nu!arul de ele!ente = .); readln(n=);
i" n=)1 t!en
begin
:riteln(.7u!arul ele!entel'r trebuie sa 2ie cel putin 1 B .);
Dalt;
end
e.se
"or i:=1 to n= do
begin
:rite(id,.4.,i,.6=.);
readln(=4i6);
end;
end;
"unction pri! (1:integer):b''lean;
var se!:b''lean;
d:integer;
begin
se!:=true;
i" (1=5) or (1=1) t!en
se!:="a.se
e.se
begin
se!:=true;
"or d:=2 to 1 div 2 do
i" 1 mod d=5 t!en
se!:="a.se;
end;
pri!:=se!;
end;
begin
:riteln(.Se a2iseaCa =al'rile pri!e dintr#un =ect'r : .);
cit@=ect(=,n,.=.);
"or i:=1 to n do
i" pri!(=4i6) t!en
inc(1);
i" 1=5 t!en
:rite(.>ect'rul nu are ele!ente nu!ere pri!e B.)
e.se
begin
:rite(.Ele!entele pri!e din =ect'r sunt = .);
"or i:=1 to n do
i" pri!(=4i6) t!en
:rite(=4i6,. .);
:rite(.".);
end;
:riteln;
end"
{
Sa se afiseze elementele prime ale unui sir de n
numere intregi citit de la tastatura.
}
@)Se citeste de la tastatura un sir de n elemente numere intregi. Sa se afiseze elementul cu
proprietatea ca suma cifrelor lor este diviziila cu o valoare p data.
program =ect@-;
type =ect=array41""2A6 o" integer;
var =:=ect;
n,i,p:integer;
procedure cit@=ect (var =:=ect; var n=:integer; id:string);
var i:integer;
begin
:riteln(.Se citeste =ect'rul .,id,. : .);
:rite(./ati nu!arul de ele!ente = .); readln(n=);
i" n=)1 t!en
begin
:riteln(.7u!arul ele!entel'r trebuie sa 2ie cel putin 1 B .);
Dalt;
end
e.se
"or i:=1 to n= do
begin
:rite(id,.4.,i,.6=.);
readln(=4i6);
end;
end;
"unction su!@ci2 (n:integer):integer;
var s:integer;
begin
s:=5;
repeat
s:=s%n mod 15;
n:=n div 15;
unti. n=5;
su!@ci2:=s;
end;
begin
:riteln(.Se a2iseaCa =al'rile cu su!a ci2rel'r di=iCibila cu ' =al'are
data : .);
cit@=ect(=,n,.=.);
:rite(./ati =al'area dei!partitului = .); readln(p);
i" p=5 t!en
:rite(.7u exista nu!ere di=iCibile cu 5 B.)
e.se
begin
:rite(.Ele!entele cu su!a ci2rel'r di=iCibila cu .,p,. sunt = .);
"or i:=1 to n do
i" su!@ci2(=4i6) mod p=5 t!en
:rite(=4i6,. .);
:rite(.".);
end;
:riteln;
end"
{
Se citeste de la tastatura un sir de n elemente numere intregi.
Sa se afiseze elementul cu proprietatea ca suma cifrelor lor
este divizibila cu o valoare p data.
}
@5Scrieti un program care verifica daca cele n elemente ale unui sir dat de numere intregi
sunt in ordine strict cescatoare de la stanga la dreapta.
program =ect@F;
type =ect=array 41""2A6 o" integer;
var =:=ect;
n:integer;
procedure cit@=ect (var =:=ect; var n=:integer; id:string);
var i:integer;
begin
:riteln(.Se citeste =ect'rul .,id,. : .);
:rite(./ati nu!arul de ele!ente = .); readln(n=);
i" n=)1 t!en
begin
:riteln(.7u!arul ele!entel'r trebuie sa 2ie cel putin 1 B .);
Dalt;
end
e.se
"or i:=1 to n= do
begin
:rite(id,.4.,i,.6=.);
readln(=4i6);
end;
end;
"unction s@crsc (=:=ect; n:integer):b''lean;
var se!:b''lean;
i,0:integer;
begin
se!:=true;
"or i:=1 to n#1 do
"or 0:=i%1 to n do
i" =4i6(=4i%16 t!en
se!:="a.se;
s@crsc:=se!;
end;
begin
:riteln(.Se =eri2ica daca un =ect'r este bine 'rd'nat crescat'r : .);
cit@=ect(=,n,.=.);
i" s@crsc(=,n) t!en
:riteln(.>ect'rul este bine 'rd'nat crescat'r B.)
e.se
:riteln(.>ect'rul nu este bine 'rd'nat crescat'r B.);
end"
{
Scrieti un program care verifica daca cele n elemente ale unui sir dat
de numere intregi sunt in ordine strict cescatoare de la stanga la
dreapta.
}
@03iind date doua siruri de numere intregi cu cate m respectiv n elemente, sa se afiseze
elementele primului sir care nu se gasesc in cel de8al doilea (elementele necomune celor
doua siruri), precum si numarul acestora.
program =ect@A;
type !ul@b=set o" byte;
=ect=array41""2A6 o" byte;
var a,b:=ect;
!,n,i,1:integer;
l:byte;
!a,!b,!!,!n:!ul@b;

procedure cit@=ect (var =:=ect; var n=:integer; id:string);
var i:integer;
begin
:riteln(.Se citeste =ect'rul .,id,. : .);
:rite(./ati nu!arul de ele!ente = .); readln(n=);
i" n=)1 t!en
begin
:riteln(.7u!arul ele!entel'r trebuie sa 2ie cel putin 1 B .);
Dalt;
end
e.se
"or i:=1 to n= do
begin
:rite(id,.4.,i,.6=.);
readln(=4i6);
end;
end;
begin
:riteln(.Se =eri2ica relatiile dintre d'i =ect'ri : .);
cit@=ect(a,!,.a.);
cit@=ect(b,n,.b.);
!a:=46; !b:=46; !!:=46; !n:=46;
1:=5;
"or i:=1 to ! do
!a:=!a%4a4i66;
"or i:=1 to n do
!b:=!b%4b4i66;
!!:=!a#!b;
!n:=!b#!a;
:riteln(.1"Ele!entele nec'!une cel'r d'ua siruri sunt : .);
:rite(. #Ele!entele din a care nu se a2la in b sunt = .);
"or l:=1 to 2AA do
i" l in !! t!en
begin
:rite(l,. .);
inc(1);
end;
:rite(.;.);
:riteln;
:rite(. #Ele!entele din b care nu se a2la in a sunt = .);
"or l:=1 to 2AA do
i" l in !n t!en
begin
:rite(l,. .);
inc(1);
end;
:rite(.;.);
:riteln;
:riteln(.2"7u!arul ele!entel'r nec'!une este = .,1,. ".);
end"
{
iind date doua siruri de numere intregi cu cate m
respectiv n elemente, sa se afiseze elementele primului
sir care nu se gasesc in cel de-al doilea 'elementele
necomune celor doua siruri(, precum si numarul acestora.
}
@@
Se citeste de la tastatura un sir de n numere intregi. Sa se afiseze maximul dintre
elementele pare ale sirului.
program =ect@G;
uses :incrt;
type =ect=array41""2A6 o" integer;
var c,=:=ect;
nc,n:integer;
i:byte;
procedure cit@=ect (var =:=ect; var n=:integer; id:string);
var i:integer;
begin
:riteln(.Se citeste =ect'rul .,id,. : .);
:rite(./ati nu!arul de ele!ente = .); readln(n=);
i" n=)1 t!en
begin
:riteln(.7u!arul ele!entel'r trebuie sa 2ie cel putin 1 B .);
Dalt;
end
e.se
"or i:=1 to n= do
begin
:rite(id,.4.,i,.6=.);
readln(=4i6);
end;
end;
"unction !ax@=ect (=:=ect; n:integer):integer;
var i,!ax:integer;
begin
!ax:==416;
"or i:=1 to n do
i" =4i6(!ax t!en
!ax:==4i6;
!ax@=ect:=!ax;
end;
begin
:riteln(.Se a2iseaCa !axi!ul dintre ele!entele pare ale unui =ect'r : .);
cit@=ect(=,n,.=.);
nc:=5;
"or i:=1 to n do
i" not('dd(=4i6)) t!en
begin
inc(nc);
c4nc6:==4i6;
end;
i" nc=5 t!en
:riteln(.>ect'rul nu are ele!ente pare B.)
e.se
:riteln(.<axi!ul dintre ele!entele pare ale =ect'rului este =
.,!ax@=ect(c,nc),. ".);
end"
{
Se citeste de la tastatura un sir de n numere intregi.Sa se afiseze
maximul
dintre elementele pare ale sirului.
}
@:Se citesc de la tastatura cele n elemente ale unui sir dat de numere intregi. Sa se afiseze
toate perec%ile de elemente ale sirului (nu neaparat consecutive) cu proprietatea ca amele
elemente ale perec%ii au aceeasi suma a cifrelor.
program =ect@H;
type =ect=array41""2A6 o" integer;
var =:=ect;
i,0,n:integer;
1:byte;
procedure cit@=ect (var =:=ect; var n=:integer; id:string);
var i:integer;
begin
:riteln(.Se citeste =ect'rul .,id,. : .);
:rite(./ati nu!arul de ele!ente = .); readln(n=);
i" n=)1 t!en
begin
:riteln(.7u!arul ele!entel'r trebuie sa 2ie cel putin 1 B .);
Dalt;
end
e.se
"or i:=1 to n= do
begin
:rite(id,.4.,i,.6=.);
readln(=4i6);
end;
end;
"unction su!@ci2 (n:integer):integer;
var s:integer;
begin
s:=5;
repeat
s:=s%n mod 15;
n:=n div 15;
unti. n=5;
su!@ci2:=s;
end;
begin
:riteln(.Se a2iseaCa perecDile de nu!ere cu su!a ci2rel'r egala : .);
cit@=ect(=,n,.=.);
1:=5;
:rite(.erecDile de nu!ere cu su!a ci2rel'r egala sunt : .);
"or i:=1 to n#1 do
begin
"or 0:=i%1 to n do
i" su!@ci2(=4i6)=su!@ci2(=406) t!en
begin
inc(1);
:rite(.(.,=4i6,.;.,=406,.) .);
end;
end;
"or i:=n donto 2 do
begin
"or 0:=i#1 donto 1 do
i" su!@ci2(=4i6)=su!@ci2(=406) t!en
begin
inc(1);
:rite(.(.,=4i6,.;.,=406,.) .);
end;
end;
i" 1=5 t!en
:rite(.7u exista ast2el de perecDi B.)
e.se
:rite(.".);
:riteln;
end" Se citesc de la tastatura cele n elemente ale unui sir dat de numere
intregi. Sa se afiseze toate perec)ile de elemente ale sirului 'nu
neaparat consecutive( cu proprietatea ca ambele elemente ale perec)ii au
aceeasi suma a cifrelor.}
@9
1. 6entru o matrice data a cu m linii & n coloane si elemente numere intregi, sa se
elimine o coloana data c, fara a folosi alta matrice.
program !at@1;
type !at=array 41""2A,1""2A6 o" integer;
var !:!at;
nl!,nc!,c'l:integer;
procedure cit@!at (var a:!at; var nl,nc:integer;nu!e:string);
var i,0:integer;
begin
:riteln(.Se citeste !atricea .,nu!e,. : .);
:rite(./ati nu!arul de linii al !atricii .,nu!e,. = .); readln(nl);
:rite(./ati nu!arul de c'l'ane al !atricii .,nu!e,. = .); readln(nc);
"or i:=1 to nl do
"or 0:=1 to nc do
begin
:rite(nu!e,.4.,i,.,.,0,.6=.);
readln(a4i,06);
end;
end;
procedure a2@!at (a:!at;nl,nc:integer;nu!e:string);
var i,0:integer;
begin
:riteln(.Se a2iseaCa !atricea .,nu!e,. : .);
"or i:=1 to nl do
begin
"or 0:=1 to nc do
:rite(a4i,06:-);
:riteln;
end;
end;
procedure c'py@c'l (var a:!at; nl,nc,c1,c2:integer);
var i:integer;
begin
"or i:=1 to nl do
a4i,c26:=a4i,c16;
end;
procedure eli!@c'l (var a:!at; var nl,nc:integer; 1:integer);
var i:integer;
begin
"or i:=1%1 to nl do
c'py@c'l(a,nl,nc,i,i#1);
nc:=nc#1;
end;
begin
:riteln(.Se eli!ina ' c'l'ana dintr#' !atrice : .);
cit@!at(!,nl!,nc!,.!.);
a2@!at(!,nl!,nc!,.!.);
:rite(./ati nu!arul c'l'anei pe care =reti sa ' eli!inati = .);
readln(c'l);
i" (c'l(nc!) or (c'l)1) t!en
begin
:riteln(.C'l'ana data nu exista B .);
Dalt;
end
e.se
begin
eli!@c'l(!,nl!,nc!,c'l);
a2@!at(!,nl!,nc!,.! reCultata.);
end;
end"
{
*entru o matrice data a cu m linii + n coloane si elemente
numere intregi, sa se elimine o coloana data c, fara a folosi
alta matrice.
}
:*
2. 3iind data o matrice a cu m linii & n coloane si elemente numere intregi, sa se
construiasca transpusa acesteia (matricea care se otine scriind liniile pe coloane si
invers).
program !at@2;
type !at=array 41""2A,1""2A6 o" integer;
var a,ta:!at;
nla,nca,nlta,ncta:integer;
procedure cit@!at (var a:!at; var nl,nc:integer;nu!e:string);
var i,0:integer;
begin
:riteln(.Se citeste !atricea .,nu!e,. : .);
:rite(./ati nu!arul de linii al !atricii .,nu!e,. : .); readln(nl);
:rite(./ati nu!arul de c'l'ane al !atricii .,nu!e,. : .); readln(nc);
"or i:=1 to nl do
"or 0:=1 to nc do
begin
:rite(nu!e,.4.,i,.,.,0,.6=.);
readln(a4i,06);
end;
end;
procedure a2@!at (a:!at;nl,nc:integer;nu!e:string);
var i,0:integer;
begin
:riteln(.Se a2iseaCa !atricea .,nu!e,. : .);
"or i:=1 to nl do
begin
"or 0:=1 to nc do
:rite(a4i,06:-);
:riteln;
end;
end;
procedure transp (a:!at;nla,nca:integer;var ta:!at; var nlta,ncta:integer);
var i,0:integer;
begin
"or i:=1 to nla%1 do
"or 0:=1 to nca%1 do
ta4i,06:=a40,i6;
nlta:=nca;
ncta:=nla;
end;
begin
:riteln(.Se a2iseaCa transpusa unei !atrice : .);
cit@!at(a,nla,nca,.a.);
a2@!at(a,nla,nca,.a.);
transp(a,nla,nca,ta,nlta,ncta);
a2@!at(ta,nlta,ncta,.transpusa lui a.);
end"
{
iind data o matrice a cu m linii + n coloane si elemente
numere intregi, sa se construiasca transpusa acesteia 'matricea
care se obtine scriind liniile pe coloane si invers(.
}
I1
3. Se citeste de la tastatura o matrice a cu n linii & n coloane si elemente numere
intregi. Aealizati intersc%imarile de linii+coloane necesare, astefel incat elementele
de pe diagonala principala, citite de sus in Bos, sa fie sortate crescator.
program !at@-;
type !at=array 41""2A,1""2A6 o" integer;
var a:!at;
nla:integer;
procedure cit@!at (var a:!at; var nl:integer;nu!e:string);
var i,0:integer;
begin
:riteln(.Se citeste !atricea .,nu!e,. : .);
:rite(./ati nu!arul de linii+c'l'ane al !atricii .,nu!e,. : .); readln(nl);
"or i:=1 to nl do
"or 0:=1 to nl do
begin
:rite(nu!e,.4.,i,.,.,0,.6=.);
readln(a4i,06);
end;
end;
procedure a2@!at (a:!at;nl:integer;nu!e:string);
var i,0:integer;
begin
:riteln(.Se a2iseaCa !atricea .,nu!e,. : .);
"or i:=1 to nl do
begin
"or 0:=1 to nl do
:rite(a4i,06:-);
:riteln;
end;
end;
procedure scD@lin (var a:!at;n,l1,l2:integer);
var i,aux:integer;
begin
"or i:=1 to n do
begin
aux:=a4l1,i6;
a4l1,i6:=a4l2,i6;
a4l2,i6:=aux;
end;
end;
procedure scD@c'l (var a:!at;n,c1,c2:integer);
var i,aux:integer;
begin
"or i:=1 to n do
begin
aux:=a4i,c16;
a4i,c16:=a4i,c26;
a4i,c26:=aux;
end;
end;
procedure s'rt (var a:!at; n:integer);
var i,0:integer;
begin
"or i:=1 to n#1 do
"or 0:=i%1 to n do
i" a4i,i6(a40,06 t!en
begin
scD@lin(a,n,i,0);
scD@c'l(a,n,i,0);
end;
end;
begin
:riteln(.Se s'rteaCa crescat'r ele!entele de pe diag'nala principala : .);
cit@!at(a,nla,.a.);
a2@!at(a,nla,.a.);
s'rt(a,nla);
a2@!at(a,nla,.a cu diag'nala s'rtata.);
end"
{
Se citeste de la tastatura o matrice a cu n linii + n coloane
si elemente numere intregi. ,ealizati intersc)imbarile de linii-coloane
necesare, astefel incat elementele de pe diagonala principala, citite de
sus in .os, sa fie sortate crescator.
:2
). Se da un talou idimensional cu m linii si n coloane (m,n apartin C1,25D), avand ca
elemente numai cifrele * si 1. <oua linii se numesc complementare, daca, pentru
orice coloana, suma elemntelor aflate pe aceeasi coloana este 1. Sa se identifice
perec%ile de linii complementare si sa se determine numerele acestora. 6entru
ficeare astfel de perec%e se vor afisa pe un rand al ecranului indicii liniilor ce o
compun, separate prin spatii, iar pe ultimul rand se va tipari numarul perec%ilor de
linii complementare din talou.
program !at@F;
type !at=array 41""2A,1""2A6 o" integer;
var a:!at;
nla,nca:integer;
procedure cit@!at (var a:!at; var nl,nc:integer;nu!e:string);
var i,0:integer;
begin
:riteln(.Se citeste !atricea .,nu!e,. : .);
:rite(./ati nu!arul de linii al !atricii .,nu!e,. : .); readln(nl);
:rite(./ati nu!arul de c'l'ane al !atricii .,nu!e,. : .); readln(nc);
"or i:=1 to nl do
"or 0:=1 to nc do
begin
:rite(nu!e,.4.,i,.,.,0,.6=.);
readln(a4i,06);
end;
end;
procedure a2@!at (a:!at;nl,nc:integer;nu!e:string);
var i,0:integer;
begin
:riteln(.Se a2iseaCa !atricea .,nu!e,. : .);
"or i:=1 to nl do
begin
"or 0:=1 to nc do
:rite(a4i,06:-);
:riteln;
end;
end;
"unction =eri2 (a:!at;nla,nca,l1,l2:integer):b''lean;
var se!:b''lean;
i:integer;
begin
se!:=true;
"or i:=1 to nca do
i" (a4l1,i6%a4l2,i6))(1 t!en
se!:="a.se;
=eri2:=se!;
end;
procedure s'l (a:!at; nla,nca:integer);
var i,0,1:integer;
begin
1:=5;
:riteln(.S'lutie : .);
"or i:=1 to nla#1 do
"or 0:=2 to nla do
i" =eri2(a,nla,nca,i,0) t!en
begin
inc(1);
:riteln(i,. .,1);
end;
:riteln(1);
end;
begin
:riteln(.Se ceri2ica daca d'ua linii dintr#' !atrice sunt c'!ple!ntare : .);
cit@!at(a,nla,nca,.a.);
a2@!at(a,nla,nca,.a.);
s'l(a,nla,nca);
end"
{
Se da un tablou bidimensional cu m linii si n coloane 'm,n apartin
/",%01(,
avand ca elemente numai cifrele & si ". Doua linii se numesc
complementare, daca,
pentru orice coloana, suma elemntelor aflate pe aceeasi coloana este ". Sa
se identifice
perec)ile de linii complementare si sa se determine numerele acestora.
*entru ficeare
astfel de perec)e se vor afisa pe un rand al ecranului indicii liniilor ce
o compun,
separate prin spatii, iar pe ultimul rand se va tipari numarul perec)ilor
de linii
complementare din tablou.
}
:3
1. Sa se afiseze multimea caracterelor comune a doua siruri de caractere citite de la
tastatura.
program !ult@1;
type !ult@c=set o" cDar;
var x1,x2:string42AA6;
!1,!2,!:!ult@c;
i,0:integer;
1:cDar;

begin
:riteln(.Se a2iseaCa !ulti!ea caracterel'r c'!une a d'ua sirui de
caractere : .);
:rite(./ati sirul de caractere x1 : .); readln(x1);
:rite(./ati sirul de caractere x2 : .); readln(x2);
"or i:=1 to lengtD(x1) do
!1:=!1%4x14i66;
"or 0:=1 to lengtD(x2) do
!2:=!2%4x24066;
!:=!1$!2;
:rite(.<ulti!ea caracterel'r c'!une este : .);
"or 1:=.&. to .C. do
i" 1 in ! t!en
:rite(1,. .);
end"
{
Sa se afiseze multimea caracterelor comune a doua siruri de
caractere citite de la tastatura.
:)
1. Sa se afiseze toate permutarile unei multimi formate din n (n?1*) numere naturale,
a1, a2,..., an (*?ai?1***), date de la tastatura. <aca cele n numere nu formeaza
multime, se va afisa mesaBul ;2roare;. =n caz contrar se vor afisa cate una pe linie,
permutarile numerelor date, cu cate un spatiu intre elementele unei permutari.
program b1tr@1;
type =ect=array 41""1556 o" integer;
var x,!:=ect;
n:integer;


procedure input;
var i,0:integer;
begin
:riteln(.Se calculeaCa per!utarile dintr#un =ect'r : .);
:rite(./ati nu!arul de ele!ente al =ect'rului ! = .); readln(n);
:riteln(./ati ele!entele =et'rului ! : .);
"or i:=1 to n do
begin
:rite(.! 4 .,i,. 6 = .);
readln(!4i6);
i" (!4i6)5) or (!4i6(1555) t!en
begin
:riteln(.Er'areB.);
Dalt;
end
e.se
"or 0:=1 to i#1 do
i" !406=!4i6 t!en
begin
:riteln(.Er'areB.);
Dalt;
end;

end;
end;
procedure 'utput;
var i:integer;
begin
"or i:=1 to n do
:rite(!4x4i66,. .);
:riteln;
end;
"unction =alid (1:integer):b''lean;
var i:integer;
se!:b''lean;
begin
se!:=true;
"or i:=1 to 1#1 do
i" x4i6=x416 t!en
se!:="a.se;
=alid:=se!;
end;
procedure b1tr;
var 1:integer;
begin
"or 1:=1 to n do
x416:=5;
1:=1;
!i.e 1(5 do
i" 1=n%1 t!en
begin
'utput;
1:=1#1;
end
e.se
i" x416)=n#1 t!en
begin
x416:=x416%1;
i" =alid(1) t!en
1:=1%1;

end
e.se
begin
x416:=5;
1:=1#1;
end;
end;
begin
input;
b1tr;
end"
{
Sa se afiseze toate permutarile unei multimi formate din n 'n#"&(
numere naturale, a", a%,..., an '&#ai#"&&&(, date de la tastatura.
Daca cele n numere nu formeaza multime, se va afisa mesa.ul '2roare'.
In caz contrar se vor afisa cate una pe linie, permutarile numerelor
date, cu cate un spatiu intre elementele unei permutari.
}
IA
2. Scrieti un program care afiseaza toate modurile de a aranBa elementele unui sir dat
de numere intregi, astfel incat in sirul rezultat sa nu existe doua elemente alaturate
negative.
program b1tr@2;
type =ect=array 41""1556 o" integer;
var x,!:=ect;
n:integer;

procedure input;
var i:integer;
begin
:riteln(.Se calculeaCa per!utarile dintr#un =ect'r : .);
:rite(./ati nu!arul de ele!ente al =ect'rului ! = .); readln(n);
:riteln(./ati ele!entele =et'rului ! : .);
"or i:=1 to n do
begin
:rite(.! 4 .,i,. 6 = .);
readln(!4i6);
end;
end;
procedure 'utput;
var i:integer;
begin
"or i:=1 to n do
:rite(!4x4i66,. .);
:riteln;
end;
"unction =alid (1:integer):b''lean;
var i:integer;
se!:b''lean;
begin
se!:=true;
"or i:=1 to 1#1 do
i" (1)=n) and (1(=2) t!en
i" (!4x41#166)5) and (!4x4166)5) t!en
se!:="a.se;
=alid:=se!;
end;
procedure b1tr;
var 1:integer;
begin
"or 1:=1 to n do
x416:=5;
1:=1;
!i.e 1(5 do
i" 1=n%1 t!en
begin
'utput;
1:=1#1;
end
e.se
i" x416)=n#1 t!en
begin
x416:=x416%1;
i" =alid(1) t!en
1:=1%1;

end
e.se
begin
x416:=5;
1:=1#1;
end;
end;
begin
input;
b1tr;
end"
{
Scrieti un program care afiseaza toate modurile de a aran.a
elementele unui sir dat de numere intregi, astfel incat in sirul
rezultat sa nu existe doua elemente alaturate negative.
}
:0
3. Sa se afiseze toate modalitatile de a aseza n ture pe o tala de sa% de dimensiuni n&n.
program b1tr@-;
type =ect = array 41""1556 o" integer;
var x:=ect;
n:integer;



procedure 'utput;
var l,c:integer;
begin
"or l:=1 to n do
begin
"or c:=1 to n do
i" c=x4l6 t!en
:rite(l:2)
e.se
:rite(.5.:2);
:riteln;
end;
:riteln;
end;
"unction =alid (1:integer):b''lean;
var i:integer;
se!:b''lean;
begin
se!:=true;
"or i:=1 to 1#1 do
i" (x4i6=x416) t!en
se!:="a.se;
=alid:=se!;
end4

:@
). Sa se afiseze toate modalitatile de a aseza n regine pe o tala de sa% de dimensiuni
n&n.
program b1tr@F;
type =ect = array 41""1556 o" integer;
var x:=ect;
n:integer;



procedure 'utput;
var l,c:integer;
begin
"or l:=1 to n do
begin
"or c:=1 to n do
i" c=x4l6 t!en
:rite(l:2)
e.se
:rite(.5.:2);
:riteln;
end;
:riteln;
end;
"unction =alid (1:integer):b''lean;
var i:integer;
se!:b''lean;
begin
se!:=true;
"or i:=1 to 1#1 do
i" (abs(x4i6#x416)=abs(i#1)) or (x4i6=x416) t!en
se!:="a.se;
=alid:=se!;
end;
procedure b1tr;
var 1:integer;
begin
"or 1:=1 to n do
x416:=5;
1:=1;
!i.e 1(5 do
i" 1=n%1 t!en
begin
'utput;
1:=1#1;
end
e.se
i" x416)=n#1 t!en
begin
x416:=x416%1;
i" =alid(1) t!en
1:=1%1;

end
e.se
begin
x416:=5;
1:=1#1;
end;
end;
begin
:riteln(.Se a2iseaCa t'ate p'sibilitatile de a aseCa n da!e : .);
:rite(./ati nu!arul da!el'r = .); readln(n);
i" n)F t!en
:riteln(.7u exista nici ' p'sibilitate de a aseCa da!ele B .);
b1tr;
end"
{
Sa se afiseze toate modalitatile de a aseza n regine pe o tabla de
sa) de dimensiuni n+n.
}
55Se da un numar natura. par6 Sa se a"ise7e toate siruri.e de n parante7e care
se inc!id corect6 program b1tr@H;
type =ect = array 41""1556 o" integer;
var x:=ect; {
Solutia va fi generata in vectorul x.
3om codifica parantezele desc)ise cu " si cele inc)ise cu
&. 2lementele vectorului solutie vor lua valori din multimea
& si ".
}
n:integer; {
*entru a genera sirurile de n paranteze ce se inc)id
corect, n trebuie sa fie par
}


procedure 'utput;
var i:integer;
begin
"or i:=1 to n do
i" x4i6=1 t!en
:rite(.(.)
e.se
:rite(.).);
:riteln;
end;
"unction =alid (1:integer):b''lean;
var i,n1,n2:integer;
se!:b''lean;
{
*entru ca elementul x/41 sa aiba valoare valida trebuie
indeplinite urmatoarele conditii de continuare5
-numarul parantezelor desc)ise 'n"( nu trebuie sa fie
mai mare ca n div %
-numarul parantezelor inc)ise 'n%( nu poate fi mai mare
decat numarul parantezelor desc)ise
-daca 4$n atunci numarul parantezelor desc)ise, respectiv
inc)ise trebuie sa fie n div %
}
begin
se!:=true;
n1:=5; n2:=5;
"or i:=1 to 1 do
i" x4i6=1 t!en
n1:=n1%1
e.se
n2:=n2%1;
i" (n1(n div 2) or (n2(n1) t!en
se!:="a.se;
i" 1=n t!en
se!:=(n1=n div 2);
=alid:=se!;
end;
procedure b1tr;
var 1:integer;
begin
"or 1:=1 to n do
x416:=5;
1:=1;
!i.e 1(5 do
i" 1=n%1 t!en
begin
'utput;
1:=1#1;
end
e.se
i" x416)=1 t!en
begin
x416:=x416%1;
i" =alid(1) t!en
1:=1%1;

end
e.se
begin
x416:=5;
1:=1#1;
end;
end;
begin
:riteln(.Se a2iseaCa t'ate sirurile de paranteCe : .);
:rite(./ati nu!arul de paranteCe (par) = .); readln(n);
i" n mod 2)(5 t!en
begin
:riteln(.Er'areB.);
Dalt;
end;
b1tr;
end"
{
Se da un numar natural par. Sa se afiseze toate sirurile
de n paranteze care se inc)id corect.
}

S-ar putea să vă placă și