Sunteți pe pagina 1din 80

C U L E G E R E

DE PROBLEME LA INFORMATIC
pentru orele
de laborator


C
COLEGIUL FINANCIAR-BANCAR





Grigore VASILACHE
Silviu GNCU




Copie autorizata pentru studenii CFBC
1

Capitolul 1
INSTRUCIUNI




1 Operaii de intrare/ieire

Operaii de ieire
Pascal
wr i t e( x) ; sau wr i t el n( x) ;
wr i t e( x1, x2, xn) ; est e echi val ent cu wr i t e( x1) ;
wr i t e( x2, ) ; wr i t e( xn) ;
Parametrii din apel pot avea una din formele:
x x: w x: w: f , unde x este o
expresie de orice tip valoarea creia se va afia, w i f expresii de tip integer
specificatori de format. Ca parametru pot fi i constante caracteriale, care se
scriu n apostrofuri, i se afieaz aa cum se scriu ca parametru.
Fie urmtoarea secven de program:
Var a: i nt eger ; b: r eal ; . . . a: =5; b: =7. 236;
wr i t el n( Val oar ea l ui a est e , a: 6, b= , b: 5: 2)
va afia:
Val oar ea l ui a est e 5 b= 7. 24
Atragem atenia c ultima cifr este 4 i nu 3 fiindc a avut loc rotunjirea.
Instruciunea writeln se deosebete de write prin faptul c dup afiarea
tuturor parametrilor se trece n linie nou.
C
printf(sir_de_ieire,list_de_ieire);
unde :
ir_de_ieire este un ir n componena cruia intr caractere ordinare i
grupe de caractere speciale, ce se numesc formate sau specificaii de
conversie.
list_de_ieire reprezint enumerarea elementelor de ieire, ce se
despart prin virgul. n calitate de elemente pot fi constante, variabile i
expresii.
Exemplu :
Fie date urmtoarele declaraii :
int x=4, y=6;
pr i nt f ( " %d+%d=%d, x, y, x+y) ;
n rezultatul execuiei acestei secvene de program va fi afiat mesajul
4+6 =10.
int a=24;
Copie autorizata pentru studenii CFBC
2

double c=123. 1234567;
instruciunea
pr i nt f ( %d\ n a=%5d\ nc=%7. 2g, a, a, c) ;
va afia :
24
a= 24 numrul a este afiat pe 5 poziii
c= 123.12 numrul c este afiat pe 7 poziii cu 2 cifre dup virgul
C++
cout <<f l ux1<<f l ux2<<<<f l uxn;
Fie date urmtoarele declaraii :
int a=24;
double c=123. 1234567;
cout <<a<<endl <<a=<<set w( 5) <<a<<endl ;
cout <<c=<<set w( 7) <<set pr eci si on( 2) <<c;
cout << set f i l l ( ' x' ) << set w ( 10) ;
cout << 77 << endl ;
va afia :
24
a= 24 //numrul a este afiat pe 5 poziii
c=123.12 // numrul c este afiat pe 7 poziii cu 2 cifre dup virgul
xxxxxxxx77
Operaii de intrare
Pascal
r ead( x) ; sau r eadl n( x) ;
r ead( x1, x2, xn) ; este echivalent cu
r ead( x1) ; r ead( x2, ) ; r ead( xn) ;
La execuia acestei instruciuni compilatorul ateapt de la tastatur
valoare (valori) pentru parametrul (parametrii) nscrii n paranteze. La
introducerea datelor trebuie s inem cont de tipul parametrilor. n cazul a mai
multor valori numerice ele se despart prin spaiu. Finalul introducerii este tasta
enter.
Se recomand ca nainte de orice instruciune read s fie o instruciune write,
unde se va scrie ce se dorete de introdus, excepie fcnd cazul citirii din
fiier. n caz c lista parametrilor este mai mare de 1 la introducerea lor pot fi
desprite i prin enter, n acest caz menionm c se introduc n continuare,
nu de la nceput. Pentru tipul de date string se recomand s fie unicul
parametru n list sau mcar ultimul.
Fie urmtoarea secven de program:
Var a, b: i nt eger ; ;
Begi n wr i t e ( I nt r oducet i doua numer e i nt r egi )
r eadl n( a, b) ;
sau
Begi n wr i t e ( I nt r oducet i val oar ea l ui a ) r eadl n( a) ;
Copie autorizata pentru studenii CFBC
3

wr i t e ( b= ) r eadl n( b) ;
C
Pentru introducerea datelor cu format se folosete funcia scanf(), este
definit n biblioteca stdio.h. Mod de utilizare :
scanf(ir_de_control,lista_de_intrare);
unde :
ir_de_control este un ir scris n ghilimele. n cadrul acestui ir se
indic tipul valorilor care urmeaz a fi citite. irul este format din % i
caracterul de conversie (sunt date mai sus).
lista_de_intrare indic adresele variabilelor pentru care vor fi citite
valori. n faa fiecrei variabile va fi operatorul adres &. n cazul n care se
citesc mai multe valori acestea vor fi desprite prin virgul.

Exemplu
Fie date urmtoarele declaraii :
int a;
float b;
Pentru citirea valorilor de la tastatur a acestor variabile ntr-o singur
instruciune vom scrie :
scanf ( %d%f , &a, &b) ;
%d indic tipul variabilei a (int), pe cnd %f indic tipul variabilei b (float).
C++
Pentru citirea datelor de la consol vom scrie :
ci n>>var 1>>var 2>>>>var n;
unde var1, var2, , varn sunt variabile.
Exemplu
Fie date urmtoarele declaraii :
int a;
float b;
Pentru citirea valorilor de la tastatur a acestor variabile ntr-o singur
instruciune vom scrie :
ci n>>a>>b;

Probleme pentru rezolvare independent

1) De la tastatur se citete un caracter. Elaborai un program prin intermediul la
ecran se va afia un triunghi de forma
a) b) c) d)
Date de intrare * Date de intrare * Date de intrare * Date de intrare *
Date de ieire
*
**
***
****
Date de ieire
* * * *
* * *
* *
*

Date de ieire
****
***
**
*
Date de ieire
*
**
* * *
* * * *

Copie autorizata pentru studenii CFBC
4

2) ntr-o tabr numrul de biei este cu 10 mai mare dect cel al fetelor. De la
tastatur se citete numrul de fete. Elaborai un program prin intermediul cruia se va
determina numrul elevilor din tabr. Exemplu: date de intrare: 50 date de ieire: 110.

3) ntr-un autobuz care pleac n excursie sunt 7 copii. De la nc dou coli urc
ali copii, numrul acestora citindu-se de la tastatur. Elaborai un program prin
intermediul cruia se va determina numrul copiilor care au plecat n excursie.
Exemplu: Date de intrare: 15 20 Date de ieire: 42 copii.

4) Un brdu este mpodobit cu globulee albe, roii i albastre. Numrul
globuleelor albe se citete de la tastatur. Elaborai un program prin intermediul cruia
se va determina numrul globuleelor din brduul, dac numrul de globuleelor roii
este cu 3 mai mare dect numrul de globulee albe, iar numrul globuleele albastre
este mai mic cu 2 dect totalul celor albe i roii. Exemplu: Date de intrare: 12 Date de
ieire: 52.

5) Ion i Vasile joac dup urmtoarele reguli: Ion spune un numr iar Vasile
trebuie s gseasc cinci numere consecutive, cresctoare, numrul din mijloc fiind cel
ales de Ion. Elaborai un program prin intermediul cruia la ecran se vor afia numerele
gsite de ctre Vasile. Exemplu: Ion spune 10, Vasile spune 8 9 10 11 12.

6) Doi copii au primit acelai n mere, n se citete de la tastatur. Elaborai un
program prin intermediul cruia la ecran se va afia numrul de mere pe care l au copii
dac primul copil mnnc un mr i d unul celuilalt copil. Exemplu: Date de intrare:
10 Date de ieire: primul copil 8 mere al doilea copil 11 mere.

7) Maria vrea s verifice dac greutatea i nlimea ei corespund vrstei pe care o
are. Ea a gsit ntr-o carte urmtoarele formule de calcul ale greutii i nlimii unui
copil, v fiind vrsta: greutate=2*v+8 (n kg), nlime=5*v+80 (n cm). Elaborai un
program prin intermediul cruia se va determina greutatea i nlimea ideal a unui
copil, dac vrsta se citete de la tastatur.

8) Se introduc de la tastatur trei cifre. Elaborai un program prin intermediul
cruia se va afia pe aceeai linie 5 numere formate cu aceste cifre luate o singur dat.
Exemplu: date de intrare: 3 4 2 Date de ieire: 324 342 243 234 432.
9) De la tastatur se citesc tei numere ntregi. Elaborai un program prin
intermediul cruia se vor determina toate sumele posibile de cte dou numere. Afiarea
va cuprinde i termenii sumei, nu numai valoarea ei. Exemplu: Date de intrare: 2 13 4
Date de ieire: 2+13=15 2+4=6 13+4=17.
Copie autorizata pentru studenii CFBC
5

10) De la tastatur se citete un numr ntreg n(1n10). Elaborai un program prin
intermediul cruia se va afia la ecran tabla nmulirii cu numrul n. Exemplu: pentru
n=5, se va afia pe vertical 1x5=5 2x5=10 3x5=15 4x5=20 5x5=25 6x5=30 7x5=35
8x5=40 9x5=45 10x5=50.

11) De la tastatur se citete un numr ntreg, care reprezint numrul de ani.
Elaborai un program prin intermediul cruia la ecran se va afia numrul de luni, zile i
ore corespunztoare. Se consider c un an are 365 zile. Exemplu: date de intrare: 2 date
de ieire: 24 luni 730 zile 17520 ore.

12) De la tastatur se citesc dou numere ntregi a i b. Elaborai un program prin
intermediul cruia s se schimbe ntre ele valorile variabilelor a i b. La ecran se vor
afia noile valori ale lui a i b.

13) * Rezolvai problema 12) i fr a utiliza o variabil intermediar.

14) Distana dintre dou orae A i B este de x km. Un ofer cu automobilul,
parcurge aceast distan n a minute. Elaborai un program prin intermediul cruia la
ecran se va afia viteza medie a automobilului, dac valorile lui x i a se citesc de la
tastatur.

15) Distana dintre dou orae A i B este de x km. Un ofer cu automobilul
parcurge aceast distan. Elaborai un program prin intermediul cruia se va determina
costul deplasrii, dac la distana de 100 km automobilul consum n medie y litri de
combustibil. Costul unui litru de combustibil, distana dintre orae i consumul la
100km, se citesc de la tastatur.

16) O nav parcurge distana d (n km) dintre dou staii orbitale n a sptmni i b
zile. Elaborai un program prin intermediul cruia se va determina viteza navei
exprimat n km/or.

Copie autorizata pentru studenii CFBC
6

2 Funcii matematice

n varianta Pascal
Descriere Funcia
Tipul
argumentelor
Tipul
rezultatului
Arctangenta valorii x
arctan(x);
Numeric,
adic
integer sau
real
real
Sinusul lui x
sin(x);
Cosinusul lui x
cos(x);
Puterea numrului e e
x

exp(x);
logaritmul natural lnx
ln(x);
Rdcina ptrat a lui x
sqrt(x);
Valoarea absolut a lui x
abs(x);
Coi nci de cu
t i pul l ui x
Ptratul lui x
sqr(x);
Rotunjirea lui x
round(x)
real integer
Trunchierea lui x
trunc(x)
Paritatea lui x, True, daca x
este impar.
odd(x) integer boolean
Numrul valorii ordinale x
ord(x) ordinal integer
Predecesorul lui x
pred(x)
ordinal
Coi nci de cu
t i pul l ui x
Succesorul lui x
succ(x)
Caracterul cu numrul x
chr(x) integer char
Testarea sfritului de fiier
eof(f)
fiier boolean
Testarea sfritului de linie
eoln(f)
Partea fracionara obinuta prin
trunchierea argumentului
frac( x) real real
Partea ntreaga obinuta prin
trunchierea argumentului
Int(x) real real
Valoarea numrului Pi
(3,1415926536).
Pi Numeric real
Decrementarea valorii
variabilei x cu 1 [respectiv n].
Dec( x
[;n:LONGINT])
;
ordinal
Coincide cu
tipul lui x
Incrementarea valorii variabilei
x cu 1 [respectiv n].
Inc(
x:ordinal
[;n:LONGINT])
;
ordinal
Coincide cu
tipul lui x
Iniializarea generatorului
intern de numere aleatoare cu o
valoare arbitrara.
Randomize;
Numr real pseudoaleator,
subunitar, nenegativ (fr
argument).
Random - real
Numr ntreg pseudoaleator din
domeniul 0..Ord(x)-1.
Random(x) integer WORD

Copie autorizata pentru studenii CFBC
7

n varianta C/C++
Antet Descriere
double asin( double arg );
double acos( double arg );
Calculeaz arcsinusul/arccosinusul
valorii arg; rezultatul este msurat
n radiani
double atan( double arg );
double atan2( double y, double x );
Calculeaz arctangenta valorii arg,
respectiv a fraciei y/x
double floor( double num );
ntoarce cel mai mare ntreg mai
mic sau egal cu num (partea
ntreag inferioar)
double ceil( double num );
ntoarce cel mai mic ntreg mai
mare sau egal cu num (partea
ntreag superioar)
double sin( double arg );
double cos( double arg );
double tan( double arg );
Calculeaz
sinusul/cosinusul/tangenta
parametrului arg, considerat n
radiani
double sinh( double arg );
double cosh( double arg );
double tanh( double arg );
Calculeaz
sinusul/cosinusul/tangenta
hiperbolic a parametrului arg
double exp( double arg );
ntoarce valoarea e
arg

double pow(double base, double exp );
ntoarce valoarea base
arg

double log( double num );
Calculeaz logaritmul natural (de
baz e) al valorii arg
double log10( double num );
Calculeaz logaritmul n baza 10 al
parametrului
double sqrt( double num );
Calculeaz rdcina ptrat a
parametrului
double fmod( double x, double y );
ntoarce restul mpririi lui x la y
double fabs( double arg );
ntoarce valoarea absolut a lui arg

* Argumentul sau argumentele obligatoriu se scriu n paranteze dup numele
funciei.

Probleme pentru rezolvare independent

1) Elaborai un program prin intermediul cruia se va determina valoarea
expresiei:
I.
2 3
) ( x x x f + =
;
II.
2
1 1
) (
x x
x f + =
;
III.
1
) (
2
+
=
x
x
x f
;
IV.
x x x f ln ) (
2
=
;
Copie autorizata pentru studenii CFBC
8

V.
x x x f 2 sin
2
1
sin ) ( + =
;
VI.
x
x x f
8
) (
2
+ =
;
VII.
2
) (
x
e x f

=
;
VIII.
2
) (
x x
e e
x f

=
;
IX.
x x
x x
e e
e e
x f

= ) (
;
X.
x
tgx
x f = ) (
.
De la tastatur se citete valoarea lui x. Rezultatul va fi afiat cu o precizie de 3 cifre
dup virgul.

2) De la tastatur se citesc valorile variabilelor x i y, care sunt numere reale.
Elaborai un program prin intermediul cruia se va determina valoarea funciei f(x,y).
Rezultatul va fi afiat la ecran cu o precizie de 4 cifre dup virgul:
I.
x y
x y
y x
y x
y x f

+
+
= ) , (

II.
1 | |
) ( ) (
) , (
+
+
=
y x
y tg x tg
y x f

III.
) cos( *
) sin(
| |
) , (
x
y
x
y x
y x f

+

=

IV.
) 1 | (| *
| |
1
| |
) , ( +

+
= x
y x
y x
y x f

V.
x y
e e
y x
y x f
+
+
=
) sin( ) sin(
) , (

VI.
y
x
x y y x f + = ) , (

VII.
1 1 | |
) , (
2 2
2 2
+ +

+
+ +

=
y x
y x
y x
y x
y x f

VIII.

) ( sin 2 ) ( cos
) , (
2 2
y x
y x f
+
=

IX.
) ( sin * ) 1 (
) , (
2 2 2
y x y x
y x
y x f
+ + +
+
=

X.
x y
e e
y x
y x f

+
+
=
) ln( ) ln(
) , (
Copie autorizata pentru studenii CFBC
9

3 Instruciunea de ramificare if

Instruciunea de ramificare if
Pasc
al
If condiie then instruciunea1 else instruciunea2;

unde condiie este o expresie logic, care poate avea numai una din dou
valori true sau false. Dac rezultatul este true se execut instruciunea 1 i
se trece la urmtoarea instruciune dup if, i dac rezultatul este false se
execut instruciunea 2. Menionm aici c:
1. Dac este necesar s fie ndeplinite mai mult de o instruciune se
folosete instruciunea compus begin end.
2. nainte de cuvntul rezervat else nu se pune ;
3. Condiia poate fi simpl, dar i compus folosind OR, AND, NOT. n
acest caz trebuie s folosim parantezele.

Exempl e:
If a>b then c:=a else c:=b;
c:=b; If a>b then c:=a; {Instruciunea de ramificare redus}

If a>b
then begin c:=a; writeln(a este mai mare);
end
else begin c:=b; writeln(b este mai mare);
end;

If a>0
then if a mod 2=0 then writeln(a este pozitiv, par)
else writeln(a este pozitiv, impar)
else if a mod 2=0 then writeln(a este negativ, par)
else writeln(a este negativ, impar)

If (a>=10) and (a<100)
then writeln(a este format din 2 cifre)
C/C
++
if. . . else
este cea mai simpl instruciune condiional.
Poate fi folosit n mai multe forme:
if( condiie ){ // instruciuni }

if( condiie ){ //instruciuni }
else{ //alte instruciuni }

if( condiie1 ){//instruciuni1 }
else if( condiie2 ){ //instruciuni2 }
else if( condiie N ) { / / instruciuni N }


Copie autorizata pentru studenii CFBC
10

Probleme pentru rezolvare independent

1) Se introduc punctajele a doi sportivi. Elaborai un program prin intermediul
cruia se va afia punctajele n ordine descresctoare. Exemplu: Date de intrare 100
134 Date de ieire: 134 puncte 100 puncte

2) Se dau dou numere. Elaborai un program prin intermediul cruia se va
nmuli cel mai mare cu doi i cel mai mic cu trei i s se afieze rezultatele. Exemplu:
date de intrare: 3 7 date de ieire: 9 14

3) Se introduc dou numere ntregi. Elaborai un program prin intermediul
cruia se va determina dac primul numr este predecesorul (succesorul) celui de-al
doilea. Exemple: date de intrare: 2 4 date de ieire: Nu; date de intrare: 5 6 date de
ieire: Da.

4) Ionel spune prinilor doar notele mai mari sau egale cu 7. ntr-o zi el a luat
trei note. Elaborai un program prin intermediul cruia la ecran se vor afia doar notele
pe care le va comunica Ionel prinilor. Exemplu : Date de intrare 8 7 5 Date de ieire
8 7.
5) Se introduc dou numere. Elaborai un program prin intermediul cruia se
va afia ctul dintre primul i al doilea, dac al doilea numr este diferit de 0 sau
mesajul mprire imposibil n caz contrar. Exemple: Date de intrare 10 3 Date de
ieire 3.33 Date de intrare 45 0 date de ieire Impartire imposibila.

6) Un ascensor pentru copii accept o greutate de maxim 100 kg. De la
tastatur se introduc greutile a doi copii. Elaborai un program prin intermediul cruia
se va afia mesajul POT INTRA AMBII COPII, dac greutatea copiilor nu depete
100 kg i mesajul INTRA PE RIND n caz contrar. Exemple: Date de intrare: greuti
copii 87 50 Date de ieire : Intra pe rnd Date de intrare 45 52 Date de ieire Pot
intra ambii copii.

7) Ionel are voie s se uite la TV 20 de ore pe sptmn fr a fi pedepsit. De
la tastatur se citesc numrul de ore privite la TV pentru fiecare zi din sptmn.
Elaborai un program prin intermediul cruia se va determina dac Ionel va fi, sau nu
pedepsit. Exemplu: Date de intrare: 3 4 2 2 5 6 1 Date de ieire: Va fi pedepsit.

8) Elaborai un program prin intermediul cruia se va determin greutatea
ideal a unei persoane cunoscnd nlimea, vrsta i sexul persoanei. Formulele de
calcul sunt:
Copie autorizata pentru studenii CFBC
11

Gmasculin = 50 + 0.75 * (inaltime - 150) + (varsta - 20) / 4,
Gfeminin = Gmasculin 10,
unde nlimea este exprimat n cm i vrsta n ani. Sexul se citete sub forma unui
caracter, f sau m. Exemplu: Date de intrare: inaltime=160 varsta=21 sex=f Date de
ieire: greutate= 47.75 kg.

9) De la tastatur se citesc trei numere ntregi. Elaborai un program prin
intermediul cruia n dreapta fiecrui numr va fi afiat unul dintre mesajele: PAR, dac
numrul este par i IMPAR n caz contrar. Exemplu : Date de intrare: 45 3 24 Date de
ieire: 45 impar 3 impar 24 par.

10) ntr-o tabr, bieii sunt cazai cte 4 ntr-o csu, n ordinea sosirii. Ionel
a sosit al n-lea, n se citete de la tastatur. Elaborai un program prin intermediul cruia se
va determina n a cta csu se va afla Ionel Exemplu : date de intrare : n=69 date de
ieire : casuta 17.

11) Elevii clasei a V-a se repartizeaz n clase cte 25 n ordinea mediilor clasei
a IV-a. Radu este pe locul x (1<=X<=125) n ordinea mediilor, x se citete de la
tastatur. Elaborai un program prin intermediul cruia se va determina n ce clasa va fi
repartizat (A, B, C, D sau E)?. Exemplu : date de intrare : x=73 date de ieire : C.

12) De la tastatur se citesc trei numere diferite. Elaborai un program prin
intermediul cruia:
i. se va afia cel mai mare i cel mai mic numr. Exemplu : Date de intrare 45
34 78 Date de ieire max=78 min=34. Numerele vor fi afiate n ordine cresctoare.
Exemplu : Date de intrare 4 2 6 Date de ieire 2 4 6.
ii. se va afia numrul a crei valoare este cuprins ntre valorile celorlalte
dou. Exemplu: Date de intrare 12 14 10 Date de ieire 12.
iii. se va verifica dac numerele introduse, formeaz o secven de numere
consecutive. Exemple: Date de intrare 3 4 5 Date de ieire Da Date de intrare 4 5
7 Date de ieire Nu.

13) Andrei primete ntr-o zi trei note, nu toate bune. Se hotrte ca, dac
ultima not este cel puin 8, s le spun prinilor toate notele primite iar dac este mai
mic dect 8, s le comunice doar cea mai mare not dintre primele dou. De la tastatur
se citesc notele primite de ctre Andrei. Elaborai un program prin intermediul cruia se
vor afia notele pe care Andrei le va comunica prinilor. Exemple : Date de intrare 6 9
9 Date de ieire 6 9 9 ; Date de intrare 8 5 7 Date de ieire 8.

Copie autorizata pentru studenii CFBC
12

14) De la tastatur se citesc trei numere. Elaborai un program prin intermediul
cruia se va afia numrul mai mare dintre al doilea i al treilea numr, dac toate trei
numere sunt pare i suma primelor dou numere n caz contrar. Exemple: Date de
intrare 46 32 100 date de ieire 100 ; Date de intrare 34 -25 10 Date de ieire 9.

15) S se afieze cel mai mare numr par dintre doua numere introduse n
calculator. Exemple : Date de intrare 23 45 Date de ieire nu exista numar par ; Date
de intrare 28 14 Date de ieire 28 ; Date de intrare 77 4 Date de ieire 4.

16) De la tastatur se citesc trei cifre diferite de 0. Elaborai un program prin
intermediul cruia se va afia numrul format din aceste cifre, astfel nct acesta s fie
maximal. Exemplu: Date de intrare : 4 5 3 Date de ieire: 543.

17) De la tastatur se citesc trei cifre. Elaborai un program prin intermediul
cruia se va afia numrul format din aceste cifre, astfel nct acesta s fie minimal.
Exemplu: Date de intrare : 4 5 3 Date de ieire: 345. Not: Particip i cifra 0, dar
numrul nu poate ncepe cu 0.
Copie autorizata pentru studenii CFBC
13

4 Instruciunea cu selecie multipl

Instruciunea cu selecie multipl
Pasc
al
Case a of
cazul 1 :instruciunea 1;
cazul 2 :instruciunea 2;

cazul n :instruciunea n
[ else instruciunea n+1; ]
end;
Menionm, c:
1. else poate lipsi;
2. Cazul poate fi o valoare, mai multe desprite prin virgul, un
subdomeniu cum i o combinaie a acestora;
3. Variabila a trebuie s fie de tip ordinal;
4. Dac a se regsete n unul din cazuri se execut instruciunea
respectiv i se trece la urmtoarea instruciune, dup end.
C/C
++
switch este o instruciune menit s simplifice structurile condiionale cu mai
multe condiii.

switch( expr esi e ) {
case constanta1: //instruciuni1 break;
case constanta2: //instruciuni2 break;

[default: //instruciuni]
}
Valoarea expr esi e de tip ordinal este evaluat la un tip ntreg, apoi aceast
valoare este comparat cu fiecare constant;
este rulat blocul de instruciuni al valorii gsite. n caz ca numrul nu este egal
cu nici una dintre constante, este executat blocul aflat dup default. n cazul,
cnd lipsete break se verific i celelalte cazuri.

Probleme pentru rezolvare independent

1) De la tastatur se citete un caracter (liter). Elaborai un program care va
afia textul E VOCALA, dac caracterul introdus este vocal. De exemplu: date de
intrare E, date de ieire E VOCALA i NU E VOCALA n caz contrar.

2) De la tastatur se citete o cifr. Elaborai un program care va afia cifra
scris cu caractere. De exemplu: date de intrare 5, date de ieire cinci

Copie autorizata pentru studenii CFBC
14

3) De la tastatur se citesc 2 numere ntregi i un operator (+ - * / %). Elaborai
un program care n dependen de datele introduse va afia rezultatul. Dac se va
introduce un operator necunoscut rezultatul va fi 0. De exemplu: date de intrare 8 3 %,
8%3=2

4) De la tastatur se citesc 2 numere reale i un operator (+ - * /). Elaborai un
program care n dependen de datele introduse va afia rezultatul. Dac se va introduce
un operator necunoscut rezultatul va fi 0. De exemplu: date de intrare 8 3 *, 8*3=24

5) De la tastatur se citete un numr pozitiv, mai mic sau egal cu 100.
Elaborai un program care va afia numrul citit cu cifre romane. De exemplu: date de
intrare 18, date de ieire XVIII

6) Magazinul comercial Nr 1, ofer clienilor fideli o gam larg de reduceri la
produsele procurate. Dac suma este mai mic dect 500 lei, atunci n zilele de odihn
reducerea este de 5%, iar n zilele de lucru 3,5%. Dac suma este mai mare sau egal cu
500 lei atunci reducerile se ofer respectiv: 4% Luni, Mari 5%, Miercuri 6%, Joi 7%,
Vineri, 8% Smbt 9%, Duminic 10%. Elaborai un program care n dependen de
ziua i suma introdus va afia la ecran reducerea oferit, ct i Suma ce necesit a fi
achitat. De exemplu: date de intrare Duminic 1000, date de ieire reducere 100 lei,
suma ce necesit a fi achitat 900 lei.



Copie autorizata pentru studenii CFBC
15

5 Instruciuni ciclice

n varianta Pascal n varianta C/C++
while execut un bloc de instruciuni att timp ct o anumit condiie este adevrat.
Forma general a unui ciclu while este:
while (expresie) do instruciune;

while ( expr esi e) do
begin instruciuni end;
while ( expr esi e) {
//instruciuni
}

Dac condiia din expr esi e este adevrat (are o valoare nenul), instruciunile din
blocul de dup whi l e sunt executate. expr esi e este reevaluat dup fiecare iteraie.
Pentru ca condiia s devin fals este n responsabilitatea programatorului.
Repeat ..until (expresie);
do . . . while ( expr esi e) ;
este o instruciune repetitiv similar cu cea precedent, singura diferen fiind c
expr esi e este evaluat dup executarea instruciunilor, nu nainte. Astfel, blocul va fi
executat cel puin o dat.
Repeat
Instruciuni
.until (expresie);
do{
//instruciuni
} while ( expr esi e) ;
for reprezint o form mai simpl de a
scrie un while nsoit de o expresie iniial
i una final. Deosebim 2 variante: una cu
pasul +1:
for i:=1 to 10 do instruciune;
alta cu pasul -1
for i:=10 downto 1 do instruciune;
for reprezint o form mai simpl de a scrie
un while nsoit de o expresie iniial i de o
expresie de incrementare. Forma sa este:
for( expr esi e1; expr esi e2; expr esi e3) {
//instruciuni
}
Exemplul urmtor prezint un ciclu cu funcionalitate identic (tiprirea primelor 10
numere naturale), folosind cele 3 instruciuni repetitive:
Var i : i nt eger ;
Begi n
Wr i t el n( Ci cl ul f or ) ;
For i : =1 t o 10 do wr i t e ( i : 3) ;
Wr i t el n;
Wr i t el n( Ci cl ul whi l e ) ;
i : =1;
whi l e i <=10 do
begi n wr i t e ( i : 3) ; i : =i +1; end;
Wr i t el n;
Wr i t el n( Ci cl ul r epeat unt i l ) ;
i : =1;
r epeat
wr i t e ( i : 3) ; i : =i +1;
unt i l i >10;
int mai n( ) {
int i ;
pr i nt f ( " Ci cl u f or \ n" ) ;
for( i =1; i <=10; i ++)
pr i nt f ( " i =%d\ n" , i ) ;
pr i nt f ( " Ci cl u whi l e\ n" ) ;
i =1;
while ( i <= 10) {
pr i nt f ( " i =%d\ n" , i ) ;
i ++;
}
pr i nt f ( " Ci cl u do whi l e\ n" ) ;
i =0;
do{
i ++;
pr i nt f ( " i =%d\ n" , i ) ;
}while( i < 10) ;
}
Copie autorizata pentru studenii CFBC
16

end.
Probleme pentru rezolvare independent

1) Elaborai un program prin intermediul cruia se vor afia toate numerele de
forma a23a care se mpart exact la 6.

2) De la tastatur se citesc dou numere pozitive a i n. Elaborai un program
prin intermediul cruia se va afia numrul a urmat de n zerouri. Exemplu: Date de
intrare a=34 n=5 Date de ieire 3400000.

3) De la tastatur se citesc numrul n, n(1n10).. Elaborai un program prin
intermediul cruia se va afia S se afieze tabla nmulirii cu n. Exemplu: Date de
intrare n=5 date de ieire 1x5=5 2x5=10 3x5=15 4x5=20 5x5=25 6x5=30 7x5=35
8x5=40 9x5=45 10x5=50.

4) De la tastatur se citete un numr ntreg pozitiv. Elaborai un program prin
intermediul cruia se vor afia toi divizorii unui numr natural citit. Exemplu: Date de
intrare 12 Date de ieire 1 2 3 4 6 12.

5) De la tastatur se citete un numr ntreg pozitiv. Elaborai un program prin
intermediul cruia se va verifica dac este numrul este prim. Exemple: Date de intrare
23 date de ieire Este Prim Date de intrare 45 Date de ieire Nu este prim.

6) Un ascensor parcurge distana dintre dou etaje a i b. Elaborai un program
prin intermediul cruia se vor afia toate etajele parcurse, n ordinea atingerii lor.
Exemple: Date de intrare a=4 b=7 Date de ieire 4 5 6 7; Date de intrare a=10 b= 8
Date de ieire 10 9 8.
Copie autorizata pentru studenii CFBC
17


7) De la tastatur se citesc n numere ntregi pozitive, fiind date numerele a, b i
c. Elaborai un program care s afieze toate numerele care se divid cu a sau b i sunt
mai mici dect c.

8) De la tastatur se citete numrul n, ntreg pozitiv. Elaborai un program prin
intermediul cruia se vor determina sumele:
s1=1+2++n;
s2=1+3++2n-1;
s3=2+4++2n;
s4=1*2+2*3+3*4++(n-1)*n;
s5=1+1*2+1*2*3++1*2*3**n;
s6=2-3+4-5+-99+100;
9) Se citesc pe rnd temperaturile medii ale fiecrei luni a unui an, ca numere
ntregi. Elaborai un program prin intermediul cruia se va afia cu dou zecimale media
anual a temperaturilor pozitive i a celor negative. Exemplu: Date de intrare -5 -3 1
8 12 17 20 21 18 10 6 -2 Date de ieire medie_poz=13.66 medie_neg=-3.33.

10) Se citesc mediile a n elevi, ca numere reale. Elaborai un program prin
intermediul cruia se va afia cea mai mare i cea mai mic medie. S se verifice dac
sunt corigeni. Exemplu : Date de intrare n=4 9.50 4.25 9.66 6.33 Date de ieire
max=9.66 min=4.25 1 corigent.

11) Se dau dou numere ntregi nenule. Elaborai un program prin intermediul
cruia se va afia cmmdc i cmmmc al lor. Exemplu : Date de intrare 12 32 Date de
ieire cmmdc=4 cmmmc 96.

12) Se dau trei numere. Elaborai un program prin intermediul cruia se va afia
cmmmdc al lor. Exemplu : Date de intrare 12 32 36 Date de ieire 4.

13) Se citesc de la tastatur patru numere ntregi diferite de zero. Numerele
reprezint n ordinea citirii: numrtorul i numitorul primei fracii, respectiv
numrtorul i numitorul celei de a doua fracii. Elaborai un program prin intermediul
cruia se va afia suma celor dou fracii. Exemplu: Date de intrare: 6 18 12 24 Date
de ieire: 5 6.

14) De la tastatur se citesc 2 numere nenegative mai mici dect 10, care
reprezint lungimile laturilor unui dreptunghi. Elaborai un program care n dependen
de datele introduse va afia un dreptunghi. Exemplu:
Copie autorizata pentru studenii CFBC
18

a) b)
Date de intrare 4 3 Date de intrare 4 3
Date de ieire
1111
2222
3333

Date de ieire
1234
1234
1234

15) Se introduc succesiv numere nenule ntregi pn la introducerea numrului
0. S se afieze suma tuturor numerelor pare introduse. Exemplu: Date de intrare 3 5
4 2 0 Date de ieire 6.

16) Se introduc succesiv numere nenule ntregi pn la introducerea numrului
0. S se afieze suma tuturor numerelor divizibile cu 3 introduse. Exemplu: Date de
intrare 3 5 6 2 0 Date de ieire 9.

17) De la tastatur se citete un numr ntreg nenegativ n, mai mic dect 10.
Elaborai un program care va afia un triunghi.
a) b)
Date de intrare 4 Date de intrare 4
Date de ieire
1
12
123
1234
Date de ieire
1234
123
12
1

18) Se citesc numere de la tastatur pn la introducerea unui numr impar
divizibil cu 3. S se afieze suma tuturor numerelor pare i a numerelor impare
introduse. Precizai cte numere au fost introduce. Exemplu: Date de intrare 7 4 5 2
1 9 Date de ieire suma pare =6 suma impara=23.

19) Se citesc numere de la tastatur pn la introducerea unui numr divizibil cu
5. S se afieze suma tuturor numerelor pare i a numerelor impare introduse. Precizai
cte numere au fost introduce. Exemplu: Date de intrare 7 4 6 2 1 25 Date de
ieire suma pare =12 suma impara=35.

20) Pentru a o elibera pe Ileana Cosnzeana, Ft-frumos trebuie s parcurg x
km. El merge zilnic a km, dar Zna-cea-Rea l duce n fiecare noapte cu b km napoi,
b<a. Elaborai un program prin intermediul cruia se va afia dup cte zile Ft-frumos
Copie autorizata pentru studenii CFBC
19

o elibereaz pe Ileana Cosnzeana. Exemplu: Date de intrare x=10 a=4 b=1 Date de
ieire 3 zile.

21) Se citesc de la tastatur numere naturale pn cnd suma numerelor pare este
mai mare dect k. Cte numere au fost introduse i care este suma numerelor pare?
Exemplu: Date de intrare: K=12 5 8 1 2 2 3 6 Date de ieire: 7 (numere) 18
(suma celor pare).

22) Se citesc de la tastatur numere naturale pn cnd suma numerelor pare este
mai mare dect k. Cte numere au fost introduse i care este suma numerelor impare?
Exemplu: Date de intrare: K=12 5 8 1 2 2 3 6 Date de ieire: 7 (numere) 9
(suma celor impare)
23) Se citesc de la tastatur numere ntregi pozitive att timp ct suma lor nu
depete 1000. S se scrie un program care s afieze cea mai mic i cea mai mare
valoare a acestor numere. Exemplu: 550 345 100 45 Date de ieire max=550
min=100.

24) Se citesc de la tastatur numere ntregi pozitive att timp ct suma lor nu este
divizibil cu 3 S se scrie un program care s afieze cea mai mic i cea mai mare
valoare a acestor numere. Exemplu: 7 3 6 2 Date de ieire max=7 min=2.

25) De la tastatur se citesc n numere ntregi pozitive. Elaborai un program care
va determina suma i media numerelor citite cu excepia numerelor unde suma cifrelor
este un numr impar.

26) De la tastatur se citesc n numere ntregi pozitive. Elaborai un program care
va determina suma i media numerelor citite cu excepia numerelor unde suma cifrelor
crora este un numr divizibil cu trei.

27) De la tastatur se citesc datele despre n (n>2) dreptunghiuri (lungimea i
limea). Elaborai un program care va afia dreptunghiul (lungimile laturilor, aria i
perimetru) cu suprafaa maxim i dreptunghiul cu cel mai mic perimetru.

28) De la tastatur se citesc datele despre n (n>2) triunghiuri dreptunghice
(lungimea catetelor). Elaborai un program care va afia triunghiul (lungimile laturilor
aria i perimetru) cu suprafaa maxim i triunghiul cu cea mai mic ipotenuz.

29) Elaborai un program care va afia toate numerele ntregi pozitive a, b, c, mai
mici ca 20, cu urmtoarea proprietate: a
2
+b
2
=c
2

Copie autorizata pentru studenii CFBC
20


30) Elaborai un program care va afia toate numerele ntregi pozitive a, b, c, mai
mici ca 20, cu urmtoarea proprietate: (a+b)
3
=c
3


31) De la tastatur se citesc trei numere ntregi pozitive a, b, c mai mici ca
100000. S se afieze toi divizorii comuni.

32) De la tastatur se citesc trei numere ntregi pozitive a, b, c mai mici ca
10000. S se afieze la ecran:
a. numrul care are suma cifrelor o valoare maxim;
b. numrul care are produsul cifrelor o valoare maxim;
c. multiplu comun ale acestor numere.
Copie autorizata pentru studenii CFBC
21

6 Recapitulare

1) Se consider numrul ntreg N. Scriei un program care determin numrul
de cifre impare i numrul de cifre pare ale acestui numr (zero considerndu-se numr
par).

2) Se consider N un numr ntreg. Scriei un program care determin dac n
scrierea zecimal a numrului N cifrele formeaz o consecutivitate strict cresctoare.
De exemplu: pentru N la Intrare: 257 la ieire va fi afiat cuvntul Da
i dac N la Intrare este 275 la ieire va fi afiat cuvntul Nu

3) Scriei un program care s determine toate numerele naturale mai mici dect
MAXINT cu proprietatea c sunt egale cu suma factorialelor cifrelor lor.
Exemplu: 145 =1!+4!+5!

4) Scriei un program care determin toate numerele naturale mai mari ca 1 i
mai mici dect un numr natural diferit de zero dat i prime cu el numrnd cte sunt.
(Not: dou numere naturale se numesc prime ntre ele dac cel mai mare divizor
comun ale acestora este 1) Valoarea numrului respectiv este citit de la tastatur,
rspunsul se afieaz la ecran, pe primul loc numrul ce indic cantitatea de numere
cu proprietatea dat, i n continuare numerele gsite.
De exemplu dac este citit numrul 20 se va afia 7 3 7 9 11 13 17 19

5) Un numr de trei cifre se numete norocos dac suma crorva dou cifre
ale acestui numr este egal cu a treia. Elaborai un program care citete de la tastatur n
numere, formate din trei cifre i determin numrul de numere norocoase

6) Un numr de patru cifre se numete norocos dac suma primelor dou
cifre este egal cu suma ultimelor dou. Elaborai un program care citete de la tastatur
n numere, formate din patru cifre i determin numrul de numere norocoase

7) Un numr de patru cifre se numete nenorocos dac suma primelor dou
cifre este egal cu suma ultimelor dou i este 13. Elaborai un program care citete de
la tastatur n numere, formate din patru cifre i determin numrul de numere
nenorocoase
8) Scriei un program care citete de la tastatur numrul natural N i determin
numrul minim care poate fi obinut din toate cifrele acestui numr. De exemplu, dac
N=24175, atunci rezultatul va fi.: 12457. Scrierea cifrelor nu se ncepe cu cifra zero.

Copie autorizata pentru studenii CFBC
22

Capitolul 2
TIPURI STRUCTURATE



1 Tablouri unidimensionale


1) De la tastatur se citesc n (4<n<1000) numere ntregi. Elaborai un program
prin intermediul cruia se vor efectua urmtoarele operaii:
a) Se vor afia la ecran numerele la un interval de 5 poziii;
b) Se vor afia la ecran numerele n ordinea invers a introducerii lor la un interval
de 4 poziii;
a) Se vor afia doar numerele pare;
b) Se vor afia doar numerele impare;
c) Se vor afia doar numerele mai mari ca x i nu sunt divizibile cu y, x i y se citesc
de la tastatur;
d) Se vor afia doar numerele mai mari ca x i mai mici dect y, x i y se citesc de la
tastatur;
e) Se vor afia poziiile numerelor negative i impare din tablou;
f) Se va afia media numerelor pare;
g) Se vor afia poziiile numerelor formate din 2 cifre;
h) Se va afia suma numerelor divizibile cu 3;
i) Se va afia cele mai mari 2 numere;
j) Se va afia toate numerele cu excepia celui minimal i maximal.

2) De la tastatur se citesc elementele unui vector de dimensiune n (n<1000) cu
numere ntregi. Elaborai un program care va afia elementele introduse, apoi va mari
fiecare element al tabloului cu 10. Elementele modificate se vor afia la ecran.

3) De la tastatur se citesc elementele unui vector de dimensiune n (n<1000) cu
numere ntregi. Elaborai un program prin intermediul cruia elementele pare ale
vectorului, se vor dubla, iar cele impare se vor tripla. Se vor afia elementele vectorului
modificat.

4) De la tastatur se citesc elementele unui vector de dimensiune n (n<1000) cu
numere ntregi. Elaborai un program prin intermediul cruia primul element din tablou
va fi nlocuit cu elementul minimal i invers. Se vor afia elementele vectorului
modificat.
Copie autorizata pentru studenii CFBC
23

5) De la tastatur se citesc elementele unui vector de dimensiune n (n<1000) cu
numere ntregi. Elaborai un program prin intermediul cruia al treilea element va fi
nlocuit cu elementul maximal i invers. Se vor afia elementele vectorului modificat.

6) De la tastatur se citesc elementele unui vector de dimensiune n (n<1000) cu
numere ntregi. Elaborai un program prin intermediul cruia se va crea un nou vector
care va fi format numai din elementele vectorului iniial care au exact cel puin trei
divizori. Se vor afia elementele ambilor vectori.

7) De la tastatur se citesc elementele unui vector de dimensiune n (n<1000) cu
numere ntregi. Elaborai un program care va afia elementele introduse, apoi va
micora fiecare element al tabloului cu 12. Elementele modificate se vor afia la ecran.

8) De la tastatur se citesc elementele unui vector de dimensiune n (n<1000) cu
numere ntregi. Elaborai un program prin intermediul cruia:
i. elementele negative ale vectorului, se vor dubla, iar cele mai mari
dect 10 se vor micora cu 15. Se vor afia elementele vectorului modificat.
ii. se va crea un nou vector care va fi format numai din elementele
impare ale vectorului iniial. Se vor afia elementele ambelor vectori.
iii. care va afia elementele introduse, apoi se va mari fiecare element al
tabloului de 5 ori. Elementele modificate se vor afia la ecran.
iv. elementele impare ale vectorului, se vor mri cu 25, iar cele negative
micora de 2 ori. Se vor afia elementele vectorului modificat.
v. elementul maximal al vectorului, va fi nlocuit cu cel minimal i
reciproc. Se vor afia elementele vectorului modificat.

9) De la tastatur se citesc elementele unui vector de dimensiune n (n<1000) cu
numere ntregi. Elaborai un program prin intermediul cruia se va crea un nou vector
care
i. va fi format numai din elementele pare ale vectorului iniial. Se vor
afia elementele ambilor vectori.
ii. va fi format numai din elementele vectorului iniial care au doi sau
patru divizori. Se vor afia elementele ambilor vectori.
iii. va fi format numai din elementele divizibile cu 3 ale vectorului
iniial. Se vor afia elementele ambilor vectori.
iv. va fi format numai din elementele vectorului iniial care au cel mult
patru divizori. Se vor afia elementele ambilor vectori.

Copie autorizata pentru studenii CFBC
24

2 Tablouri bidimensionale

1) De la tastatur se citesc elementele unui tablou bidimensional cu n linii i
m coloane n,m<10 de numere ntregi. Elaborai un programa care:
a) Va afia elementele matricei;
b) Va determina numrul elementelor pare, mai mici dect 10;
c) Va determina numrul elementelor formate dintr-o singur cifr;
d) Va nlocui elementele divizibile cu 3, cu valoarea numrului maximal *3, i va
afia matricea modificat;
e) Va nlocui elementele pare cu valoarea numrului maximal * 2, i va afia
matricea modificat;
f) Va afia elementele de pe coloana 2 i elementele de pe linia 1;
g) Va afia elementele de pe coloana 1 i elementele de pe linia 2;
h) Va afia elementele de pe coloana a i elementele de pe linia b.

2) S se construiasc un tablou ptratic de dimensiune n,n cu primele n*n
numere:
a. pare. Exemplu: n=3 se va afia
2 4 6
8 10 12
14 16 18
b. impare. Exemplu: n=3 se va afia
1 3 5
7 9 11
13 15 19
c. divizibile cu 5. Exemplu: n=3 se va afia
5 10 15
20 25 30
35 40 45

3) De la tastatur se citesc elementele unui tablou bidimensional cu n linii i m
coloane. Elaborai un program care va afia la ecran elementele matricei, va aduga o
linie nou, elementele crora vor fi:
a. maximul de pe fiecare coloan. Rezultatul se va afia la ecran.
Exemplu Pentru o matrice cu 3 lini i 3 coloane
1 9 3
8 5 6
7 8 19
Linia nou adugat va fi 8 9 19
Copie autorizata pentru studenii CFBC
25

b. suma elementelor de pe coloana respectiv. Rezultatul se va afia la ecran.
Exemplu Pentru o matrice cu 3 lini i 3 coloane
1 2 3
4 5 6
7 8 9
Linia nou adugat va fi 12 15 18
c. suma dintre elementele primei linii i celei dea doua linie. Rezultatul se va
afia la ecran. Exemplu Pentru o matrice cu 2 lini i 3 coloane
1 2 3
4 5 6
Linia nou adugat va fi 5 7 9, adic 5=1+4; 7=2+5; 9=3+6.

4) De la tastatur se citesc elementele unui tablou bidimensional cu n linii i n
coloane. Elaborai un program care va afia la ecran elementele tabloului i:
A) va mri elementele de pe diagonala principal cu 5. Rezultatul se va
afia la ecran;
B) va afia elementele de pe linia ce conine elementul minimal;
C) va mri elementele unei coloane cu 15. Numrul de ordine a coloanei
se citete de la tastatur. Rezultatul se va afia la ecran.

5) De la tastatur se citesc elementele unui tablou bidimensional cu n linii i m
coloane. Elaborai un program care va afia la ecran elementele tabloului i va mri
elementele unei linii cu 10. Numrul de ordine a liniei se citete de la tastatur.
Rezultatul se va afia la ecran.

6) De la tastatur se citesc elementele unui tablou bidimensional cu n linii i m
coloane. Elaborai un program care va afia la ecran elementele tabloului i va afia
elementele de pe linia suma elementelor crora este maxim.

7) De la tastatur se citesc elementele unui tablou bidimensional cu n linii i m
coloane. Elaborai un program care va afia la ecran elementele tabloului i va afia
elementele de pe coloana ce conine elementul maximal.


Copie autorizata pentru studenii CFBC
26

3 iruri de caractere

Funcii i proceduri de prelucrare a irurilor de caractere

n varianta Pascal
Antet Descriere
wr i t el n( s) ; extrage la ecran irului s
r eadl n( s) ; citete irul de la tastatur n variabila s
LENGTH( S) Lungimea irului S
CONCAT( s1[ , s2, , sn] )
Concateneaz irurile S1, S2, Sn. Echivalent cu
S1+S2++Sn.
POS(Subir,ir)
Obinem poziia apariiei subirului n ir. Dac
rezultatul e 0 rezult c aa subir nu exist n ir.
COPY (irul,
De_La_Care_Poziie,
Ct e_Car ect er e)
Obinem un subir, din irul dat, ncepnd de la care
poziie, de lungimea Cte_Carectere.
I NSERT( Ce_I nser am,
In_Care_ir,
De_la_care_Poziie)
Se insereaz un subir ntr-un ir, ncepnd cu
poziia indicat.
DELETE (irul,
De_La_Care_Poziie,
Ct e_Car ect er e)
Din irul dat se exclud de la poziia indicat numrul
indicat de caractere.
VAL(i r ,
Variabil_Numeric, Cod)
Transform irul de caractere n numr. Dac nu
este posibil cod este diferit de zero, i dac s-a
transformat cu succes Cod este 0.
STR(Numr[ : m[ : n] ] ; ir)
Transform numrul n ir de caractere. M i n
precizeaz formatul n ir.
UpCase( x) ;
Litera mare corespunztoare literei mici date ca
argument

Exemple:
Funcia sau procedura Rezul t at ul
POS( ma , I nf or mat i ca ) 6
POS( i n , I nf or mat i ca ) 0
COPY ( I nf or mat i ca , 7, 3) at i
I NSERT ( m , maa , 3) - mama
DELETE ( I nf or mat i ca , 5, 4) I nf oi ca

n varianta C/C++
Antet Descriere
put s( si r ) ; extrage la consol coninutul irului si r
get s( si r ) ; citete caractere de la tastatur n variabila si r
int strcmp( char *s1, char
*s2) ;
compar irurile s1 i s2 returneaz o valoare
pozitiv, dac irul s1>s2, 0 dac s1 este egal cu
s2 i o valoare negativ dac s1<s2
Copie autorizata pentru studenii CFBC
27

int strcmpi( char *s1, char
*s2) ;
similar cu strcmp majuscule sunt
nesemnificative
int strncmp( char *s1, char
*s2, int n) ;
similar cu strcmp, dar se compar irurile s1 i s2
pentru cel mult n caractere din fiecare ir
char *strcpy( char *d, char
*s) ;
copiaz irul surs s n irul destinaie d i
returneaz adresa irului destinaie
char *strncpy( char *d,
char *s, int n) ;
copiaz maxim n caractere de la surs s la
destinaia d i returneaz adresa irului destinaie
int strlen( char *s) ;
returneaz lungimea irului fr a numra
caracterul terminator \0
char *strcat( char *d, char
*s) ;
concateneaz cele dou iruri i returneaz adresa
irului rezultat
double at of ( si r ) ;
convertete un ir ctre tipul double. Dac aceast
conversie eueaz (se ntlnete un caracter
nenumeric), valoarea ntoars este 0
long double _at ol d( si r ) ;
convertete un ir ctre tipul long double. Dac
aceast conversie eueaz, valoarea ntoars este 0
int at oi ( si r ) ;
convertete un ir ctre tipul int. Dac aceast
conversie eueaz (se ntlnete un caracter
nenumeric), valoarea ntoars este 0
long at ol ( si r ) ;
convertete un ir ctre tipul long. Dac aceasta
conversie eueaz (se ntlnete un caracter
nenumeric), valoarea ntoars este 0.
i t oa( int val oar e, si r , int
baza) ;
convertete o valoare de tip int n ir, care este
memorat n variabila si r . baza reine baza de
numeraie ctre care s se fac conversia
l t oa( long val oar e, si r , int
baza) ;
convertete o valoare de tip long int n ir, care
este memorat n variabila si r
ul t oa( unsi gned long
val oar e, si r , int baza) ;
convertete o valoare de tip unsigned long n ir,
care este memorat in variabila ir

Probleme pentru rezolvare independent

1) De la tastatur se citete un ir de caractere. Elaborai un program care va
determina:
A) numrul de majuscule din ir;
B) numrul de cifre din ir;
C) numrul de caractere speciale(paranteze, operatori aritmetici) din ir;
D) numrul de cifre pare citite.
Copie autorizata pentru studenii CFBC
28

2) De la tastatur se citete un ir de caractere. Elaborai un program care va
nlocui:
A) cifrele din ir cu semnul +;
B) vocalele din ir cu spaiu;
C) majuscule din ir cu cifra 8.

3) De la tastatur se citete un ir de caractere. Elaborai un program care va
afia:
i. doar cifrele din ir;
ii. fiecare cuvnt din rnd nou;
iii. doar consoanele din ir;
iv. toate cifrele cu excepia celor divizibile cu 3.

4) De la tastatur se citesc mai multe cifre. Elaborai un program prin
intermediul cruia se va determina dac mcar un numr care poate fi format din cifrele
citite este par.

5) De la tastatur se citesc patru cuvinte, fiecare cuvnt fiind citit ntr-o singur
variabil. Elaborai un program care va forma o fraz, va include toate cuvintele n ir.
Fiecare cuvnt va fi desprit prin spaiu, ultimul caracter din fraz va fi semnul punct.
La ecran se vor afia cuvintele citite ct i fraza format.

6) De la tastatur se citesc patru cuvinte, fiecare cuvnt fiind citit ntr-o singur
variabil, un cuvnt va fi format din minim 3 caractere. Elaborai un program care va
forma un cuvnt nou, n felul urmtor: din primul cuvnt va aduga primele 2 caractere,
din al doilea cuvnt va aduga primul caracter, primele trei caractere din cuvntul al
treilea i n/2 caractere din cuvntul patru(n lungimea cuvntului). La ecran se vor
afia cuvintele citite ct i cuvntul format.

7) De la tastatur se citesc patru cuvinte, fiecare cuvnt fiind citit ntr-o singur
variabil. Elaborai un program care va afia cuvintele n ordine alfabetic. Fiecare
cuvnt va fi afiat din rnd nou.

Copie autorizata pentru studenii CFBC
29

4 Fiiere

Pascal
Deosebim dou feluri de fiiere: textuale (cu acces secvenial) i tipizate sau
binare (cu acces direct).
Instruciunile de lucru cu fiierele:

Instruciunea textuale binare
Declararea n seciunea var
F: t ext
F: i nt eger sau
al t ul or i car e t i p
n afar de fiier
Asignarea fiierului logic, declarat
n program cu cel fizic, salvat pe
disc. De obicei fiierele se afl n
dosarul activ, n caz contrar se
scrie calea complet a fiierului.
Assi gn ( f , dat e. t xt ) ;
Assi gn ( f , c: \ val or i \ dat e. t xt ) ;

Deschiderea fiierului pentru citire
i modificri
Reset ( f ) ;
Deschiderea unui fiier nou. Dac
aa fiier exist informaia din el
va dispare.
Rewr i t e( f ) ;
Citirea valorilor a i b din fiierul f
Read( f , a, b)
Citirea valorilor a i b din fiierul f
i trecerea la linia urmtoare
Readl n( f , a, b)
Nu exist noiunea
de l i ni e! ! !
nscrierea valorilor a i b n fiierul
f
wr i t e( f , a, b)
nscrierea valorilor a i b n fiierul
f i trecerea la linia urmtoare
wr i t el n( f , a, b)
Nu exist noiunea
de l i ni e! ! !
nchiderea fiierelor. (Obligatorie
n cazul cnd nscriu sau se
modific date).
Cl ose( f )
Citirea datelor din fiierul textual poate fi organizat n mai multe moduri, n
dependen de condiiile problemei.
Exemplu 1: Fiierul tablou.txt conine n prima linie 2 numere ntregi m i n,
care reprezint numrul de linii i coloane al unui tablou (ambele mai mici ca
100). n urmtoarele m rnduri sunt scrise cte n numere reale elementele
fiecrei linii.
Var a:array [1..100,1..100] of real; i,j,m,n : integer;
f:text;
Begin
Assign (f,tablou.txt); reset(f); readln(f,m,n);
Copie autorizata pentru studenii CFBC
30

For i:=1 to m do
begin For j:=1 to n do read(f,a[I,j]);
readln(f);
end;
tablou.txt
3 5
2 4 78 43 121
123 43 546 76 8
8 5 2 45 312

Exemplu 2: Fiierul date.txt conine mai multe numere ntregi, care sunt scrise n
mai multe rnduri. De citit datele din fiier i de afiat la ecran aceste numere.
date.txt
23 5 456 6 8 9 80 65 432
524 78 143 121
123
43 546
76 8
18 55 26 445 12
Atragem atenia c n diferite rnduri a fiierului sunt scrise un numr de valori
diferite.
Var a: integer; f:text;
Begin Assign (f,date.txt); reset(f);
While not eof(f) do
Begin While not eoln(f) do
Begin read(f,a); write(a:8); end;
readln(f); writeln;
end;
Fiierul tipizat poate fi perceput ca un tablou unidimensional cu indicii 0,1,
Toate elementele fiierului au un indice. n timpul lucrului cu acest tip de fiier
pot fi folosite urmtoarele:
Instruciunea seek(f,n) cursorul fiierului trece la componenta cu indicele n.
Filesize(f) returneaz numrul de componente a fiierului.
Filepos(f) returneaz poziia cursorului n fiier.
C
FI LE *nume_f i l e;
ex : FI LE *f ;
Pentru deschiderea fiierului se va utiliza funcia fopen. Mod de utilizare :
FI LE *f open( adr esa_f i l e, mod_de_deschi der e) ;
Deschide fiierul cu numele dat pentru acces de tip mod_de_deschi der e.
Returneaz pointer la fiier sau NULL dac fiierul nu poate fi deschis, valoarea
returnat este memorat n variabila fiier, care a fost declarat pentru accesarea
lui.
adr esa_f i l e indic numele i adresa fiierului. Pentru a deschide fiierul
Copie autorizata pentru studenii CFBC
31

azi.txt n calitate de adres vom indica azi.txt, dac fiierul este pe discul c n
mapa temp atunci vom scrie C: \\temp\\azi.txt.
Parametrul mod_de_deschi der e este un ir de caractere care poate avea
urmtoarele valori :
"r" - readonly , este permis doar citirea dintr-un fiier existent;
"w" - write, creeaz un nou fiier, sau dac exist deja, distruge vechiul
coninut;
"a" - append, deschide pentru scriere un fiier existent (scrierea se va face
n continuarea informaiei deja existente n fiier, deci pointerul de acces se
plaseaz la sfritul fiierului );
"+" - permite scrierea i citirea - actualizare (ex: "r+", "w+", "a+"). O
citire nu poate fi direct urmata de o scriere i reciproc. nti trebuie repoziionat
cursorul de acces printr-un apel la fseek.
"b" - specific fiier de tip binar.

Funcii de prelucrare a fiierelor
int f eof ( FI LE *f p) ; returneaz o valoare nenul dac s-a ntlnit
sfritul de fiier la ultima operaie de intrare i 0 n caz contrar;
int f cl ose( FI LE *f p) ; unde fp este pointerul returnat de funcia
fopen. Prin nchiderea fiierului se elibereaz zona tampon alocat acestuia.
Funcia returneaz valoarea 0 dac operaia de nchidere s-a efectuat cu succes;
int f set pos( FI LE *f p, long int *poz) ; atribuie indicatorului
valoarea variabilei indicat prin pointerul poz i returneaz valoarea 0 n caz de
succes;
int f seek( FI LE *f p, long of f set , int whence) ; repoziioneaz
indicatorul fiierului la valoarea whence+offset; whence poate avea urmtoarele
valori:
SEEK_SET =0 - nceput de fiier;
SEEK_CUR =1 - poziie curent;
SEEK_END =2 - sfrit de fiier.
int get c( FI LE *f p) ; returneaz urmtorul caracter citit din fiierul fp
sau EOF dac se ntlnete sfritul fiierului;
int put c( i nt c, FI LE *f p) ; nscrie caracterul c n fiierul fp, n caz
de eroare returneaz EOF;
char *f get s( char *s, i nt n, FI LE *f p) ; citete maxim n-1
caractere din fiierul fp sau pn la '\n' inclusiv, le depune n s, adaug la sfrit
'\0' i returneaz adresa irului s, n caz de eroare ntoarce valoarea NULL;
int f put s( char *s, FI LE *f p) ; scrie irul s n fiier, fr caracterul
'\0', n caz de eroare ntoarce valoarea EOF;
Copie autorizata pentru studenii CFBC
32

int f scanf ( FI LE *f p, char *f or mat [ , adr esa, . . . ] ) ; citete
date din fiierul fp, conform formatului specificat (specific funciei scanf);
int f pr i nt f ( FI LE *f p, char *f or mat [ , ar gum. . . ] ) ; scrie date,
conform formatului (specific funciei printf) n fiierul fp, returneaz numrul de
octei transferai sau EOF n caz de eroare.
C++
Un fiier este vzut n C++ ca un obiect, deci ca o variabil de un tip
clas. Se pot folosi 3 clase predefinite n biblioteca fstream.h :
fstream pentru fiiere ce pot fi folosite n citire sau n scriere;
ifstream pentru fiiere din care este permis doar citirea;
ofstream pentru fiiere in care este permis doar scrierea.
Declararea unei variabile de tip fiier :
nume_cl asa nume_f i l e;
Deschiderea fiierului se efectueaz prin intermediul metodei open. Mod
de utilizare :
nume_f i l e. open( adr esa_f i l e, mod_de_deschi der e) ;
Argumentul mod_de_deschi der e este opional pentru streamuri de
intrare ifstream, pentru care valoarea implicit este i os: : i n, i pentru streamuri
de ieire ofstream, pentru care valoarea implicit este i os: : out . Pentru
streamuri de intrare/ieire fstream, argumentul mod_de_deschi der e trebuie s
aib una din valorile definite n clasa ios :
i os: : i n este permisa doar citirea dintr-un fiier existent;
i os: : out creeaz un nou fiier, sau dac exist deja, distruge vechiul
coninut;
i os: : app deschide un fiier pentru adugare, pointerul de acces se
plaseaz la sfrit;
i os: : at e deschide un fiier existent pentru citire sau scriere, pointerul de
acces se plaseaz la sfrit;
i os: : t r un deschide un fiier i tergere vechiul coninut;
i os: : bi nar y specific fiier de tip binar.
n argumentul mod_de_deschi der e se pot combina prin operatorul OR
(SAU) dou sau mai multe din aceste valori definite.
Implicit, fiierele se deschid n mod text. Valoarea i os: : bi nar y
determin deschiderea n mod binar a fiierului. Orice fiier poate fi deschis n
mod text sau mod binar, indiferent de felul n care au fost formatate datele.
Scrierea datelor n fiier se realizeaz prin intermediul operatorilor de
ieire:
Nume_f i l e<<f l ux1<<f l ux2<<<<f l uxn;
Citirea datelor din fiier se realizeaz prin intermediul operatorilor de intrare:
Nume_f i l e >>var 1>>var 2>>>>var n;
Copie autorizata pentru studenii CFBC
33

Valoarea argumentului acces determin tipul de acces la fiier.
int eof ( ) ; returneaz nenul dac este sfrit de fiier;
int bad( ) ; returneaz nenul dac s-a produs o eroare;
int f ai l ( ) ; returneaz nenul dac operaia nu a reuit.
get ( ch) ; extrage un caracter n ch;
get l i ne( st r , MAX, [ DELI M] ) ; extrage pn la MAX caractere din str
sau pn la caracterul DELIM (\0 sau \n);.
r ead( st r , MAX) ; extrage pn la MAX caractere n str sau pn la EOF;
seekg( posi t i e) seteaz distana (n bytes) a pointerului de fiier fa de
nceputul fiierului;
seekg( posi t i e, seek_di r ) seteaz distana (n bytes) a pointerului de
fiier fa de poziia specificat seek_dir, care poate lua urmtoarele valori:
i os: : beg - nceput de fiier
i os: : cur - poziie curent
i os: : end - sfrit de fiier
t el l g( pos) returneaz poziia (n bytes) a pointerului de fiier fa de
nceputul fiierului;
wr i t e( st r , SI ZE) insereaz SIZE caractere din vectorul str n stream.
t el l p( ) returneaz poziia pointerului de fiier n bytes.

Probleme pentru rezolvare independent

1) Fiierul date.in conine 3 valori separate printr-un singur spaiu, care
reprezint vrsta, nlimea i genul unei persoane. S se scrie un program care
determin greutatea ideal a unei persoane cunoscnd nlimea, vrsta i genul
persoanei (f sau m). Formulele de calcul sunt:
Gmasculin = 50 + 0.75 * (inaltime - 150) + (varsta - 20) / 4,
Gfeminin = Gmasculin 10,
unde nlimea este exprimat n cm i vrsta n ani.. La ecran se va afia greutatea
ideal. Toate datele despre persoan (vrsta, nlimea, genul, greutatea ideal) se vor
scrie n fiierul date.out.

2) Fiierul date.in conine 3 numere ntregi separate printr-un singur spaiu. S
se elaboreze un program care va afia aceste numere unul sub altul, afind n dreptul
fiecruia unul dintre cuvintele PAR sau IMPAR. Rezultatul va fi afiat la ecran ct i n
fiierul date.out

3) Fiierul date.in conine 3 numere ntregi distincte separate printr-un singur
spaiu. S se elaboreze un program care va specifica care dintre numere are valoare
Copie autorizata pentru studenii CFBC
34

maximal, minimal i care nu este nici minim nici maxim. Rezultatul va fi afiat la
ecran ct i n fiierul date.out.

4) Fiierul date.in conine 12 numere ntregi separate printr-un singur spaiu
care reprezint temperaturile medii ale lunilor unui an, ca numere ntregi. S se afieze
cu dou zecimale media anual a temperaturilor pozitive i a celor negative. Rezultatul
va fi afiat la ecran ct i n fiierul date.out.

5) Fiierul date.in conine n numere ntregi separate printr-un singur spaiu.
Primul numr reprezint numrul de numere din fiier. Datele din fiier reprezint
mediile a n elevi, ca numere reale. S se afieze cea mai mare i cea mai mic medie. S
se verifice dac sunt corigeni. Rezultatul va fi afiat la ecran ct i n fiierul date.out
Exemplu : Date de intrare 4 9.50 4.25 9.66 6.33 Date de ieire max=9.66 min=4.25
1 corigent.

6) Fiierul date.in conine n numere ntregi separate printr-un singur spaiu.
Primul numr reprezint numrul de numere din fiier. S se afieze numrul minimal,
maximal, numrul de elemente pare, impare i media numerelor cu dou zecimale.
Rezultatul va fi afiat la ecran ct i n fiierul date.out

7) Fiierul date.in conine elementele unei matrice. n prima linie sunt scrise
numrul de lini i de coloane separate printr-un spaiu. Pe urmtoarele linii sunt scrise
elementele matricei. Elaborai un program care va afia la ecran i va scrie n fiierul
date.out elementele matricei i poziiile pe care se afl valoarea maximal.

8) Fiierul date.in conine elementele unei matrice. n prima linie sunt scrise
numrul de lini i de coloane separate printr-un spaiu. Pe urmtoarele linii sunt scrise
elementele matricei. Elaborai un program care va afia la ecran si va scrie n fiierul
date.out elementele matricei i suma de pe fiecare linie.

9) Fiierul date.in conine elementele unei matrice. n prima linie sunt scrise
numrul de lini i de coloane separate printr-un spaiu. Pe urmtoarele linii sunt scrise
elementele matricei. Elaborai un program care va afia la ecran si va scrie n fiierul
date.out elementele matricei i minimul de pe fiecare coloan.

10) Fiierul date.in conine un ir de caractere. Elaborai un program care va
determina numrul de majuscule din ir. Rezultatul va fi afiat la ecran ct i n fiierul
date.out

Copie autorizata pentru studenii CFBC
35

11) Fiierul date.in conine un ir de caractere. De la tastatur se citete un ir de
caractere. Elaborai un program care va nlocui cifrele din ir cu semnul +. Rezultatul va
fi afiat la ecran ct i n fiierul date.out

12) Fiierul date.in conine un ir de caractere. De la tastatur se citete un ir de
caractere. Elaborai un program care va afia doar cifrele din ir. Rezultatul va fi afiat
la ecran ct i n fiierul date.out

13) Fiierul date.in conine un ir de caractere. De la tastatur se citete un ir de
caractere. Elaborai un program care va determina numrul de cifre din ir. Rezultatul
va fi afiat la ecran ct i n fiierul date.out

14) Fiierul date.in conine un ir de caractere. De la tastatur se citete un ir de
caractere. Elaborai un program care va nlocui vocalele din ir cu spaiu. Rezultatul va
fi afiat la ecran ct i n fiierul date.out

15) Fiierul date.in conine un ir de caractere. De la tastatur se citete un ir de
caractere. Elaborai un program care va determina numrul de caractere speciale
(paranteze, operatori aritmetici) din ir. Rezultatul va fi afiat la ecran ct i n fiierul
date.out

16) n fiierul numere.in sunt scrise mai multe numere ntregi. Elaborai un
program prin intermediul cruia se vor aduga numerele pare din fiierul numere.in n
fiierul date.txt.

17) Elaborai un program prin intermediul cruia va fi creat un fiier. Numele
fiierului se va citi de la tastatur. n fiier vor fi scrise toate numerele pare mai mici
dect n(n<10000), n se citete de la tastatur.

18) Elaborai un program prin intermediul cruia va fi creat un fiier. Numele
fiierului se va citi de la tastatur. n fiier vor fi scrise toate numerele impare mai mici
dect n(n<10000), n se citete de la tastatur.

19) Fiierul numere.in conine mai multe numere reale (cel puin 2). Elaborai un
program prin intermediul cruia n acest fiier se va aduga media aritmetic a ultimelor
2 numere.

Copie autorizata pentru studenii CFBC
36

20) Fiierul numere.in conine mai multe numere reale (cel puin 2). Elaborai un
program prin intermediul cruia n acest fiier se va aduga media aritmetic a
numerelor din fiier.

21) n fiierul date.in este scris un numr ntreg pozitiv mai mic dect 1000.
Elaborai un program care va aduga n fiier un triunghi:
a) b) c)
4
1
12
123
1234
4
1234
123
12
1
4
1
21
321
4321

22) n fiierul date.in sunt scrise mai multe cuvinte, fiecare cuvnt este separat
printr-un singur spaiu. Elaborai un program prin intermediul cruia se va afia la ecran
coninutul fiierului, cel mai lung cuvnt i cel mai mare cuvnt.



Copie autorizata pentru studenii CFBC
37

5 Metode de sortare

Procedura de sortare se aplic foarte larg n informatic.
Prin sortare vom nelege operaia de aranjare a elementelor ntr-o anumit
ordine: cresctoare sau descresctoare.
Existnd mai multe metode de sortare n continuare vom meniona unele din ele.
Admitem c avem declaraiile:
Varianta Pascal Varianta C/C++
var a : array [1..100] of
integer;
x,i,j,n,k,l:integer; p:boolean;
int a[100],x, i,j,n,k,l.p;
Se cunosc: valoarea lui n numrul de elemente al tabloului, i elementele
tabloului a.
Metoda de inserie
For i:=2 to n do
Begin x:=a[i]; j:=i-1;
While (j<=1) and (a[j]>x) do
Begin a[j+1]:=a[j]; j:=j-1;
end;
a[j+1]:=x;
end;
for(i=1;i<n;i++){
x=a[i]; j=i-1;
while(j<=0&&a[j]>x){
a[j+1]=a[j]; j--;
}
a[j+1]=x;
}
Metoda bulelor
k:=n; p:=false;
while p=false do
Begin p:=true; l:=k; i:=1;
While i<=l-1 do
Begin If a[i]>a[i+1] then
begin x:=a[i]; a[i]:=a[i+1];
a[i+1]:=x;
k:=i; p:=false;
end;
i:=i+1;
end;
end;
k=n; p=0;
while (!p){
p=1; l=k; i:=0;
While(i<=l-1){
if(a[i]>a[i+1]){
x=a[i]; a[i]=a[i+1]; a[i+1]=x;
k:=i; p=0;
}
i++;
};
};
Metoda de selecie
i:=1;
while i<=n-1 do
Begin x:=a[i]; l:=i; j:=i+1;
While j<=n do
Begin if x>a[j] then begin
x:=a[j]; l:=j; end;
j:=j+1;
end;
k:=a[i]; a[i]:=a[l]; a[l]:=k;
i=0;
while (i<n-1){
x=a[i]; l=i; j=i+1;
while(j<n){
if (x>a[j]){x=a[j];l=j;}
j++;
};
k=a[i];
a[i]=a[l];
Copie autorizata pentru studenii CFBC
38

i:=i+1;
end;
sau
for i:=1 to n-1 do
begin x:=a[i]; l:=i;
for j:=i+1 to n do
if x>a[j] then begin x:=a[j];
l:=j; end;
k:=a[i]; a[i]:=a[l];
a[l]:=k;
end;
a[l]=k;
i++;
};

Sortarea prin distribuire
Aceast metod se folosete de obicei n cazul cnd elementele tabloului numeric sunt
cuprinse ntr-un domeniu nu prea mare. Implementarea acestei metode se reduce la
declararea unui tablou suplimentar de dimensiunile domeniului. n acest tablou iniial
zerografiat, se adun cte o unitate n celula cu indicele egal cu valoarea elementului din
tabloul iniial. Fie tabloul a datele iniiale i b - cel cu rezultate, domeniul fiind de la c
la d.
For i:=c to d do b[i]:=0;
For i:=1 to n do begin t:=a[i];
b[t]:=b[t]+1; end;
{aranjm elementele n tabloul a}
i:=1;
For j:=c to d do
For k:=1 to b[j] do begin
a[i]:=j; i:=i+1; end;
for(i=c;i<d;i++) b[i]=0;
for(i=0;i<n;i++){
t=a[i]; b[t]=b[t]+1;
}
{aranjm elementele n tabloul a}
i=0;
for(j=c;j<d;j++)
for(k=0;k<b[j];k++){
a[i]=j; i++;
}

Probleme pentru rezolvare independent

1) Fiierul vector.in conine n numere ntregi separate printr-un singur spaiu.
Primul numr reprezint numrul de numere din fiier. Elaborai un program prin
intermediul cruia la ecran se vor afia numerele sortate cresctor i descresctor,
utiliznd metoda bulelor, inseriei i seleciei.

2) Fiierul caractere.in conine mai multe caractere. Elaborai un program prin
intermediul cruia la ecran se vor afia caracterele sortate cresctor i descresctor,
metoda bulelor, inseriei i seleciei.

3) Fiierul vector.in conine n numere ntregi separate printr-un singur spaiu.
Primul numr reprezint numrul de numere din fiier. Elaborai un program prin
Copie autorizata pentru studenii CFBC
39

intermediul cruia primele k numere vor fi sortate cresctor, iar restul numerelor
descresctor, k se citete de la tastatur.

4) Fiierul vector.in conine n numere ntregi separate printr-un singur spaiu.
Primul numr reprezint numrul de numere din fiier. Elaborai un program prin
intermediul cruia primele k numere vor fi sortate descresctor, iar restul numerelor
cresctor, k se citete de la tastatur.

5) Fiierul cuvinte.in conine mai multe cuvinte, separate printr-un singur
spaiu. Elaborai un program prin intermediul cruia la ecran se vor afia cuvintele
aranjate descresctor/cresctor.

6) Fiierul matrice.in conine elementele unei matrice. n prima linie sunt scrise
numerele m i n numrul de lini i de coloane separate printr-un spaiu. Pe
urmtoarele n linii sunt scrise cte m elemente ale matricei. Elaborai un program prin
intermediul cruia se vor sorta elementele fiecrei coloane n parte a matricei.

7) Fiierul matrice.in conine elementele unei matrice. n prima linie sunt scrise
numrul de lini i de coloane separate printr-un spaiu. Pe urmtoarele linii sunt scrise
elementele matricei. Elaborai un program prin intermediul cruia se vor sorta
elementele fiecrei linii a matricei.


Copie autorizata pentru studenii CFBC
40

6 Tipul de date articol

1) De la tastatur se citete numele i data naterii a trei copii. Elaborai un
program prin intermediul cruia la ecran se va afia copilul cu vrsta cea mai mic, cea
mai mare i cea mijlocie.

2) De la tastatur se citesc datele despre dou variabile de tipul data (an, luna,
zi). Elaborai un program prin intermediul cruia la ecran se va afia suma i diferena
dintre cele dou variabile de tipul data. La ecran data va fi afiat corect (0zi30,
0luna12)

3) De la tastatur se citesc datele despre dou variabile de tipul timp (ore, min,
sec). Elaborai un program prin intermediul cruia la ecran se va afia suma i diferena
dintre cele dou variabile de tipul timp. La ecran timpul va fi afiat corect (0sec59,
0min59).

4) Elaborai un program prin intermediul cruia:
A. De la tastatur se citesc coordonatele vrfurilor unui triunghi (3 vrfuri).
Determinai:
a) Dac coordonatele introduse pot forma un triunghi;
b) n cazul n care triunghiul poate fi format:
-) se va afia aria i perimetrul triunghiului;
-) tipul triunghiului: ascuit, obtuz, drept.
B. De la tastatur se citesc datele despre dou cercuri(coordonatele centrului i
raza). Determinai:
a) Pentru fiecare cerc aria i lungimea discului;
b) Poziia cercurilor(unul n interiorul altuia, tangente, au dou puncte
comune, nu au nici un punct comun(exclude cazul cnd un cerc este situat n
interiorul altui cerc).

Formule necesare:
Distana dintre 2 puncte A(x
1
,y
1
) i B(x
2
,y
2
)
2
2 1
2
2 1
) ( ) ( y y x x d
AB
+ =

Aria unui triunghi:
) ( * ) ( * ) ( c P b P a P P Aria =
, unde
2
c b a
P
+ +
=


5) Elaborai un program prin intermediul cruia se va crea tipul de date fracie.
De la tastatur se citesc datele despre dou fracii, la ecran se va afia:
a) ce mai mare i ce mai mic fracie;
b) suma fraciilor;
Copie autorizata pentru studenii CFBC
41

c) diferena fraciilor;
d) produsul fraciilor;
e) ctul fraciilor;
Fraciile se vor afia doar sub form de fracii ireductibile de forma a/b, de exemplu 3/4.

6) Pe o suprafa plan sunt mai multe puncte, date prin coordonatele lor.
Elaborai un program prin intermediul cruia se vor sorta cresctor n dependen de
distana acestora de la centru axei de coordonate a sistemului cartezian.
Date de intrare. Fiierul puncte.in, care pe prima linie conine numrul de puncte
din plan, iar pe urmtoarele linii sunt scrise coordonatele punctelor.
Date de ieire. La ecran se va afia punctele sortate, fiecare coordonat de punct
fiind urmat de distana acestuia de la centru.

7) Prin intermediul tipului de date articol, creai tipul de date telefon cu
cmpurile: marca, culoare, anul fabricrii, preul. n baza acestui tip elaborai un
program prin intermediul cruia se vor gestiona datele despre telefoanele mobile (minim
10 telefoane). Citirea datelor se va efectua din fiier. Programul va conine un meniu cu
urmtoarele opiuni:
a) Afiarea tuturor telefoanelor;
b) Afiarea telefoanelor cu cel mai mare an;
c) Afiarea celor mai scumpe telefoane;
d) Cutarea telefoanelor dup marc;
e) Cutarea telefoanelor dup pre, cu indicarea preului minim i maxim;
f) Sortarea telefoanelor descresctor dup anul fabricrii;
g) Sortarea telefoanelor cresctor dup marc.



Copie autorizata pentru studenii CFBC
42

7 Recapitulare

1) Se consider dou tablouri A[1..N] i B[1..N] de numere reale, N 100.
Scriei un program care numr cazurile cu urmtoarea proprietate:
A[i]<B[i]; A[i]=B[i]; A[i]>B[i].
Intrare: Numrul N i elementele tablourilor A i B se citesc de la tastatur.
Ieire: La ecran se vor afia trei rnduri, indicnd proprietatea i numrul de
situaii respective.

2) Se consider tabloul A[1..N] de numere ntregi, N 100. Scriei un program
care calculeaz media aritmetic a numerelor de pe locurile pare i media aritmetic a
numerelor de pe locurile impare.
Intrare: Numrul N i elementele tabloului se citesc de la tastatur.
Ieire: La ecran se vor afia dou valori.

3) Se consider tabloul A[1..N] de numere ntregi, N 100. Scriei un program
care calculeaz suma elementelor mai mici ca elementul maxim.
Intrare: Numrul N i elementele tabloului se citesc de la tastatur.
Ieire: La ecran se va afia suma cerut.

4) Se consider tabloul X[1..N] de numere ntregi, N 100. Scriei un program
care determin lungimea celei mai lungi secvene de elemente consecutive ordonate
cresctor.
Intrare: Numrul N i elementele tabloului se citesc de la tastatur.
Ieire: La ecran se va afia mrimea celei mai lungi secvene de elemente
ordonate cresctor i poziiile nceputului i sfritului ei.

5) Se consider tabloul A[1..N] de numere ntregi, N 100. Scriei un program
care efectueaz deplasarea spre stnga cu o poziie a elementelor A[2], A[3],..., A[n].
Primul element va fi nscris pe ultima poziie.
Intrare: Numrul N i elementele tabloului se citesc de la tastatur.
Ieire: La ecran se vor afia elementele tabloului modificat.

6) Se consider tabloul A[1..N] de numere ntregi, N 100. Scriei un program
care efectueaz deplasarea elementelor spre stnga cu M poziii. Primele M elemente
vor fi nscrise pe ultimele M poziii.
Intrare: Numerele N, M i elementele tabloului se citesc de la tastatur.
Ieire: La ecran se vor afia elementele tabloului modificat.

Copie autorizata pentru studenii CFBC
43

7) Se consider tabloul X[1.. 10] de numere ntregi egale numai cu 0, 1 sau 2.
Scriei un program care aranjeaz pe primele locuri elementele egale cu 1, apoi cele
egale cu 0, apoi cele egale cu 2.
Intrare: Elementele tabloului se citesc de la tastatur.
Ieire: La ecran se va afia elementele tabloului modificat.

8) Se consider tabloul A[1..2*N] de numere naturale, unde N elemente sunt
pare, iar N elemente sunt impare, N 50. Scriei un program care aranjeaz elementele
astfel: pe locuri pare - elemente cu valori pare, pe locuri impare - elemente cu valori
impare pstrnd ordinea.
De exemplu, pentru tabloul: 4 5 6 7 8 9 se va obine: 5 4 7 6 9 8
Intrare: Numrul N i elementele tabloului se citesc de la tastatur.
Ieire: La ecran se vor afia elementele tabloului modificat.

9) Se consider tabloul X[ 1 .. N] de numere reale, N 100. Scriei un program
care creeaz tabloul Y din elementele tabloului X, insernd ntre fiecare 2 elemente
media lor aritmetic. De exemplu, avnd tabloul: 7 4.2 11 -1 20 se va obine tabloul: 7
5.6 4.2 7.6 11 5 -1 9.5 20
Intrare: Numrul N i elementele tabloului se citesc de la tastatur.
Ieire: Elementele tabloului Y se vor afia la ecran.

10) Se consider tabloul T[1..N, 1..M ] cu numere reale, N 20 i M 20.
Scriei un program care interschimb cu locurile elementul maxim de pe fiecare coloan
cu elementul din prima linie a aceleiai coloane.
Intrare: Numerele N, M i elementele tabloului se citesc de la tastatur.
Ieire: La ecran se vor afia elementele tabloului modificat

11) Se consider dou tablouri liniare A[1..N] i B[1..N], N 100. Scriei un
program care modific elementele acestor tablouri conform regulii: A[i]:= A[i] + B[i] i
B[i]:= A[i]* B[i]. De exemplu, dac A[i]= 7 i B[i] = 3 atunci dup modificare obinem
valorile lui A[i] = 10 i B[i] = 21.
Intrare: Numrul N i elementele tablourilor se citesc de la tastatur.
Ieire: La ecran se vor afia elementele tablourilor modificate.

12) Se consider tabloul X[1..N] de numere ntregi nenule, N 100. Scriei un
program care numr de cte ori se schimb semnul numerelor din acest tablou. De
exemplu: pentru tabloul 2 9-5-4 6 12 -8 5 32 1 sunt 4 alternri de semne.
Intrare: Numrul N i elementele tabloului se citesc de la tastatur.
Ieire: La ecran se va afia numrul de alternri de semne.
Copie autorizata pentru studenii CFBC
44

Capitolul 3
SUBPROGRAME




1
Parametri formali de tip valoare

1) De la tastatur se citete un numr ntreg n, n<100000. Elaborai un program
cu funcii prin intermediul cruia se va determina:
a) Numrul de cifre;
b) Numrul de cifre pare;
c) Numrul de cifre impare;
d) Suma cifrelor;
e) Cifra maxim;
f) Cifra minim;
g) Media aritmetic a cifrelor;
h) Cifrele care se repet de cel puin dou ori;
i) Cifrele numrului separate printr-un sigur spaiu;
j) Divizorii numrului;
k) Inversul numrului;
l) Mesajul PRIM, dac numrul este numr prim;
m) Cel mai mare numr posibil creat din aceste cifre.

2) De la tastatur se citesc dou numere ntregi. Elaborai un program cu funcii
prin intermediul cruia se va determina:
a) Suma numerelor;
b) Produsul numerelor;
c) Media aritmetic a numerelor;
d) Cel mai mare divizor comun;
e) Cel mai mic multiplu comun;
f) Numrul minim;
g) Numrul maxim;
h) Suma numerelor n formatul a+b=c, dac a i b reprezint numerele citite;
i) Produsul numerelor n formatul a*b=c, dac a i b reprezint numerele citite;
j) Toi divizorii comuni;
k) Cinci multipli comuni;
l) Cifrele care se conin n ambele numere;
m) Cifrele care sunt n primul numr i nu sunt n al doilea numr;
Copie autorizata pentru studenii CFBC
45

n) Va afia mesajul PRIETENE, dac numerele sunt prietene. Dou numere se
numesc prietene, dac numrul de divizori este acelai.

3) De la tastatur se citesc trei numere ntregi. Elaborai un program cu funcii
prin intermediul cruia:
a) Se va determina cel mai mare divizor comun al numerelor;
b) Se va determina cel mai mic multiplu comun al numerelor;
c) Se va determina valoarea maxim;
d) Se va determina valoarea minim;
e) Se vor afia toi divizorii comuni;
f) Se vor cei mai mici trei multipli comuni.
g) Se va verifica dac numerele citite pot fi lungimile laturilor unui triunghi;
g.1. Se va determina aria triunghiului, dac valorile citite pot forma un triunghi;
g.2.Se va determina perimetrul triunghiului, dac valorile citite pot forma un
triunghi;
h) Se va afia soluiile reale ale ecuaiei ax
2
+bx+c=0, dac a, b, c reprezint
coeficienii ecuaiei.

Copie autorizata pentru studenii CFBC
46

2
Parametri formali de tip variabil

1) De la tastatur se citesc dou numere ntregi. Pentru fiecare dintre
urmtoarele cazuri s se creeze cte o procedur, prin intermediul creia se va
determina:
a) Suma numerelor;
b) Produsul numerelor;
c) Media aritmetic a numerelor;
d) Cel mai mare divizor comun;
e) Cel mai mic multiplu comun;
f) Numrul minim;
g) Numrul maxim.

2) Se consider tipul de date timp (ora:min:sec). Elaborai un program prin
intermediul cruia se va crea cte o procedur pentru:
a) Citirea timpului de la tastatur;
b) Afiarea timpului la ecran, n formatul ora:min:sec, dac 0sec59 i 0min59.
c) Determinarea sumei dintre cele dou variabile de tipul timp;
d) Determinarea diferenei dintre cele dou variabile de tipul timp;
e) Determinarea valorii maximale;
f) Determinarea valorii minimale;

3) Se consider tipul de date data (an:luna:zi). Elaborai un program prin
intermediul cruia se va crea cte o procedur pentru:
a) Citirea datei de la tastatur;
b) Afiarea datei la ecran, n formatul an:luna:zi, dac 1zi30 i 1luna12.
c) Determinarea sumei dintre cele dou variabile de tipul data;
d) Determinarea diferenei dintre cele dou variabile de tipul data;
e) Determinarea valorii maximale;
f) Determinarea valorii minimale;

4) Se consider tipul de date polinom (ax
2
+bx+c). Elaborai un program prin
intermediul cruia se va crea cte o procedur pentru:
a) Citirea coeficienilor polinomului de la tastatur;
b) Afiarea polinomului la ecran, n formatul ax2+bx+c, dac a, b, c reprezint
coeficienii polinomului.
c) Determinarea sumei dintre cele dou polinoame;
d) Determinarea diferenei dintre cele dou polinoame;
e) Determinarea polinomului maxim;
Copie autorizata pentru studenii CFBC
47

f) Determinarea polinomului minim;
g) Determinarea soluiilor reale ale polinomului.

5) Se consider un triunghi cu lungimile laturilor egale cu a, b, c, - numere
reale. Pentru fiecare dintre urmtoarele cazuri s se creeze cte o procedur, prin
intermediul creia:
a) Se va citi de la tastatur lungimile laturilor;
b) Se va determina dac valorile a,b i c au fost introduse corect(pot forma un
triunghi), n caz contrar se va repeta operaia de citire, pn cnd valorile nu vor
fi introduse corect;
c) Se va determina aria i perimetrul triunghiului.
d) Se va afia tipul triunghiului (ascuit, drept, obtuz).

Copie autorizata pentru studenii CFBC
48

3
Tablouri i funcii

1) Se consider un tablou unidimensional. Elaborai un program cu
funcii/proceduri prin intermediul crora:
a) De la tastatur se vor citi elementele tabloului;
b) Se vor afia elementele tabloului la ecran;
c) Se vor sorta elementele cresctor;
d) Se vor inversa elementele tabloului;
e) Va fi determinat elementul maximal;
f) Va fi determinat elementul minimal;
g) Se va determina numrul de elemente maximale;
h) Se va determina numrul de elemente minimale.

2) Se consider dou tablouri cu numere ntregi, a i b. Elaborai un program
utilizarea funciilor/procedurilor prin intermediul crora:
a) De la tastatur se citesc elementele tablourilor;
b) Se afieaz la ecran elementele tablourilor;
c) Va determina suma elementelor fiecrui tablou;
d) Va determina diferena elementelor fiecrui tablou;
e) Va crea un nou tablou care va conine toate elementele tabloului a i b;
f) Va crea un nou tablou format doar din elementele comune ambelor tablouri.

3) Se consider un tablou bidimensional cu numere ntregi. Elaborai un
program cu funcii/proceduri prin intermediul crora:
a) De la tastatur se vor citi elementele tabloului;
b) Se vor afia elementele tabloului la ecran;
c) Va fi determinat elementul maximal;
d) Va fi determinat elementul minimal;
e) Se va determina numrul de elemente maximale;
f) Se va determina numrul de elemente minimale;
g) Se va afia sumele pe linii;
h) Se va afia sumele pe coloane;
i) Se vor sorta elementele cresctor pe linii;
j) Va determina suma elementelor de pe perimetrul tabloului.

4) Se consider un ir de caractere. Elaborai un program cu funcii/proceduri,
prin intermediul cruia:
a) Va determina dac irul este palindrom;
b) Va afia doar vocalele din ir;
Copie autorizata pentru studenii CFBC
49

c) Va afia doar cifrele din ir;
d) Va determina numrul de cuvinte din ir;
e) Va sorta cresctor elementele irului;
f) Va inversa irul;
g) Va determina cuvntul maxim;
h) Va determina cuvntul de lungime maxim;
i) Va inversa fiecare cuvnt din ir.

5) Elaborai un program prin intermediul cruia vor fi create proceduri pentru
conversia numerelor n ir de caractere i reciproc:
a) Procedur pentru transformarea irului n numr ntreg, dac irul conine doar
cifre;
b) Procedur pentru transformarea unui numr ntreg n ir;
c) Procedur pentru transformarea irului n numr real, dac irul conine doar cifre
i caracterul punct;
d) Procedur pentru transformarea unui real n ir.

Copie autorizata pentru studenii CFBC
50

4 Subprograme recursive

1) De la tastatur se citete un numr ntreg. Elaborai un subprogram recursiv,
prin intermediul cruia se va determina valoarea expresiilor:
a) 1+3+5++2n-1;
b) 2+4+6++2n;
c) 2+5+8++3n-1;
d) 1+5+9++4n-3;
e)
3 5
1
...
12
1
7
1
2
1

+ + + +
n
;
f)
2 5
1
...
13
1
8
1
3
1

+ + + +
n
;
g)
n
n
2
1
) 1 ( ...
16
1
8
1
4
1
2
1
+ + +
.

2) Se consider un tablou unidimensional cu numere ntregi. Elaborai un
subprogram recursiv prin intermediul cruia:
a) De la tastatur se citesc elementele acestui tablou unidimensional;
b) Se vor afia elementele tabloului n ordinea citirii lor;
c) Se vor afia elementele tabloului n ordine invers a citirii lor;
d) Va determina suma elementelor;
e) Va determina suma elementelor pare;
f) Va determina suma elementelor impare;
g) Va afia elementele pare;
h) Va afia elementele impare;
i) Va verifica existena numrului k n tablou (k se introduce de la tastatur);
j) Va verifica existena numerelor pare n tablou.

3) Elaborai un subprogram recursiv prin intermediul cruia:
a) Se va determina produsul dintre dou numere ntregi prin adunri repetate;
b) Se va determina ctul dintre dou numere ntregi prin scderi repetate;
c) Se va determina restul mpririi dintre dou numere ntregi prin scderi repetate;

4) Elaborai un subprogram recursiv, prin intermediul cruia se va determina
dac un numr ntreg, este sau nu numr prim.


Copie autorizata pentru studenii CFBC
51

5 Recapitulare

1) Se consider tabloul A[1..N,1..N] de numere ntregi, unde N 20. Scriei un
program care va aduna la fiecare element al tabloului valoarea elementului maxim de pe
diagonala principal.
Intrare: Numrul N i elementele tabloului se citesc de la tastatur.
Ieire: La ecran se vor afia elementele tabloului modificat.

2) Se consider tabloul A[1..N,1..N] de numere ntregi, unde N 20. Scriei un
program care calculeaz suma elementelor care nu se afl pe diagonala secundar.
Intrare: Numrul N i elementele tabloului se citesc de la tastatur.
Ieire: La ecran se va afia suma calculat.

3) Se consider un tablou ptrat (numrul de linii este egal cu numrului de
coloane) elementele cruia sunt numere ntregi. Scriei un program care modific
tabloul astfel c toate elementele acesteia se mresc cu valoarea elementului situat pe
diagonala secundar i n aceeai linie.
Intrare: Fiierul text TABEL.IN organizat astfel: prima linie al fiierului conine
un numr pozitiv ntreg 1< N 10; celelalte N linii conin cte N valori numerice
separate prin spaii
Ieire: Fiierul text TABEL.OUT conine N linii a cte N valori separate prin
spaii. De exemplu:
TABEL.IN
4
2 5 8 5
6 1 3 -3
8 2 5 -5
11 5 0 1
TABEL.OUT
7 10 13 10
9 4 6 0
10 4 7 -3
22 6 11 12

4) Se consider un tablou ptrat (numrul de linii este egal cu numrul de
coloane) completat cu numere ntregi. Scriei un program care modific tabloul astfel c
toate elementele din fiecare linie se mresc cu valoarea elementului situat n prima
coloan i n aceeai linie.
Intrare: Fiierul text TABEL.IN organizat astfel: prima linie al fiierului conine
un numr pozitiv ntreg 1< N 10; celelalte N linii conin cte N valori numerice
separate prin spaii
Ieire: Fiierul text TABEL.OUT conine N linii a cte N valori separate prin
spaii

Copie autorizata pentru studenii CFBC
52

De exemplu:
TABEL.IN
4
2 5 8 5
6 1 3 -3
8 2 5 -5
11 5 0 1
TABEL.OUT
4 7 10 7
12 7 9 3
16 10 13 3
22 6 11 12

5) Se consider un tablou ptrat (numrul de linii este egal cu numrul de
coloane) completat cu numere ntregi. Scriei un program care modific tabloul astfel c
toate elementele de deasupra diagonalei principale se mresc cu valoarea elementului
situat n prima linie i n aceeai coloan cu elementul modificat.
Intrare: Fiierul text TABEL.IN organizat astfel: prima linie al fiierului conine
un numr pozitiv ntreg 1< N 10; celelalte N linii conin cte N valori numerice
separate prin spaii
Ieire: Fiierul text TABEL.OUT conine N linii a cte N valori separate prin
spaii. De exemplu:
TABEL.IN
4
2 5 8 5
6 1 3 -3
8 2 5 -5
11 5 0 1
TABEL.OUT
2 10 16 10
6 1 11 2
8 2 5 0
11 -5 0 1

6) Se consider tabloul liniar T[1..N] de tip ntreg, N100. Scriei un program
care nscrie numerele nenule la nceputul tabloului (pstrnd ordinea lor) iar zerourile le
plaseaz la finele tabloului. Restricie: se interzice utilizarea altor tablouri!
Intrare: Numrul N i elementele tabloului se citesc de la tastatur.
Ieire: La ecran se vor afia elementele tabloului modificat

7) Fiierul cu acces direct DATE.DAT conine 3*n numere reale (n triplete).
Scriei un program care modific fiierul astfel: fiecare al doilea element din triplete
consecutive se nlocuiete cu media aritmetic a vecinilor lui. De exemplu, dac
DATE.DAT coninea 4 7 6 8 2 10 1 5 7 atunci dup ndeplinirea programului va
conine 4 5 6 8 9 10 1 4 7.
Intrare: Fiierul DATE.DAT
Ieire: Fiierul DATE.DAT modificat.
8) Fiierul text ELEVI.IN conine datele referitoare la examenele de admitere a
cel mult 200 concureni. Fiecrui elev i corespund cte dou linii din acest fiier, pe
Copie autorizata pentru studenii CFBC
53

prima aflndu-se numele i prenumele su, iar pe a doua media obinut la examene.
Scriei un program care scrie n fiierul ELEVI.OUT lista elevilor admii (care au
media nu mai mic dect 5) ordonat descresctor dup medii.
Intrare: Fiierul text ELEVI.IN
Ieire: Fiierul text ELEVI.OUT, ce conine pe fiecare linie numele i
prenumele elevilor admii, separate printr-un spaiu.

9) n fiierul text ELEVI.INT se conin date despre toi elevii absolveni din
Republica Moldova. n fiecare rnd sunt nscrise datele despre o singur persoan
astfel: nume, prenume, sex i nlimea, desprite printr-un spaiu. Din aceste date se va
crea o list simplu nlnuit ordonat alfabetic, dup nume. Parcurgei lista n scopul
calculrii i afirii la ecran a nlimii medii a fetelor i a bieilor.
Intrare: Fiierul text ELEVI.INT, unde sexul este indicat prin f pentru fete i b
pentru biei.
Ieire: La ecran se vor afia mesajul respectiv i mediile cerute.

10) Se numesc numere bine ordonate acele numere care au cifrele n ordine
strict cresctoare sau strict descresctoare (de exemplu 7532 i 2589 sunt bine
ordonate).
Scriei un program care citete din fiierul text DATE.IN cte un numr de 4 cifre
din fiecare linie, i creeaz alt fiier text DATE.OUT unde nscrie numerele bine
ordonate. La ecran se va afia numrul lor.
Intrare: Fiierul text DATE.IN
Ieire: Fiierul text DATE.OUT La ecran se va afia numrul de numere bine
ordonate.

11) Se consider un fiier text, INTRARE.TXT, care conine cuvinte separate
prin cte un singur spaiu. S se creeze un fiier text, IESIRE.TXT, care conine
cuvintele textului n ordine alfabetic i numrul lor de apariii. Cuvintele textului apar
o singur dat n fiierul de ieire.
Intrare: Fiierul text INTRARE.TXT
Ieire: Fiierul text IESIRE.TXT
Exemplu:
Pentru fiierul INTRARE.TXT:
A f ost odat a ca- n povest i
A f ost ca ni ci odat a
Di n r ude mar i i mpar at est i
O pr ea f r umoasa f at a
fiierul IESIRE.TXT va fi:
A 2
Di n 1
Copie autorizata pentru studenii CFBC
54

O 1
ca 1
ca- n 1
f at a 1
f ost 2
f r umoasa 1
i mpar at est i 1
mar i 1
ni ci odat a 1
odat a 1
povest i 1
pr ea 1
r ude 1

12) Se consider un fiier text TEST.IN alctuit din mai multe linii. Scriei un
program care s afieze pe ecran toate literele alfabetului englez, folosite n acest fiier,
mpreun cu codul lor ASCII i frecvena lor de apariie. Afiai, de asemenea, codurile
ASCII ale caracterelor care apar n text cel mai frecvent.
Intrare: Fiierul text TEST.IN.
Ieire: La ecran se vor afia datele cerute.
De exemplu, pentru fiierul de intrare:
aBc bAaccaa
bc ac
pe ecran se va afia:
A 65 1
B 66 1
a 97 5
b 98 2
c 99 5
Car act er el e car e apar in text cu frecventa maxim 5 sunt:
Car act er ul cu codul ASCI I 97
Car act er ul cu codul ASCI I 99

13) Se consider fiierul text CUVINTE.TXT ce conine mai multe cuvinte
formate din litere minuscule ale alfabetului latin. Scriei un program care nscrie n
fiierul CUVINTE.OUT, n ordinea alfabetic literele distincte din componena
fiierului CUVINTE.TXT i numrul respectiv de apariii al fiecrei litere. Rezultatul
se nscrie n fiecare rnd cte o liter i numrul de apariii, separate printr-un spaiu.

14) Se cunoate c fiierul text INPUT.TXT este alctuit din numrul par de linii
i conine n linii impare numele elevilor, dar n cele pare notele acestora la o lucrare
de control. Numrul maxim al elevilor n clas 40. Scriei un program care citete
fiierul dat i creeaz un fiier text SORT.TXT care conine n fiecare rnd numele
elevului i nota n aa fel ca liniile s fie sortate n ordinea descresctoare a numelui.

Copie autorizata pentru studenii CFBC
55


Copie autorizata pentru studenii CFBC
56

Capitolul 4
STRUCTURI DINAMICE

Descriere Funcia/Procedura
Alocarea memoriei n heap pentru o variabil referin legat
i ncrcarea adresei n argumentul p.
New(var p:POINTER);
Eliberarea memoriei alocate n heap pentru o variabila
referin legat.
Dispose(var p:POINTER);
Lungimea celui mai mare bloc continuu existent n heap MaxAvail:LONGINT;
Lungimea totala a spaiului de memorie disponibil n heap. MemAvail:LONGINT;
Alocarea memoriei n heap pentru o variabila dinamica de
mrime l si ncrcarea adresei ei n argumentul p.
GetMem(VAR p:POINTER;
l:WORD);
Eliberarea memoriei alocate n heap pentru o variabila
dinamica de mrime l si de adresa memorata n p.
FreeMem(VAR p:POINTER;
l:WORD);
Memorarea adresei vrfului heap-ului (HeapPtr) n
argumentul p.
Mark(VAR p:POINTER);
Eliberarea memoriei alocate variabilelor dinamice prin apelul
precedent al procedurii Mark (depune p n HeapPtr).
Release(VAR p:POINTER);


1) Prin intermediul structurilor dinamice de date, creai tipul de date telefon cu
cmpurile: marca, culoare, anul fabricrii, preul. n baza acestui tip elaborai un
program prin intermediul cruia se va gestiona datele despre telefoanele mobile (minim
10 telefoane). Citirea datelor se va efectua din fiier. Programul va conine un meniu cu
urmtoarele opiuni:
a) Afiarea tuturor telefoanelor;
b) Afiarea celor mai noi telefoane;
c) Afiarea celor mai scumpe telefoane;
d) Cutarea telefoanelor dup marc;
e) Cutarea telefoanelor dup pre, cu indicarea preului minim i maxim;
f) Sortarea telefoanelor descresctor dup anul fabricrii;
g) Sortarea telefoanelor cresctor dup marc.
h) Inserare datelor despre un telefon nou;
i) Excluderea unui telefon.

2) De la tastatur se citesc cuvinte. S se creeze o list simplu nlnuit
ordonat alfabetic, care conine n celule cuvintele distincte i frecvena lor de apariie.
Se va afia coninutul listei n ordine alfabetic

3) De la tastatur se citesc mai multe numere ntregi. S se creeze o list
ordonat cresctor.
Copie autorizata pentru studenii CFBC
57

4) De la tastatur se citete numrul n i numele a n copii. S se simuleze
urmtorul joc: cei n copii stau ntr-un cerc. ncepnd cu un anumit copil, se numr
copiii n sensul acelor de ceasornic. Fiecare al n-lea copil iese din cerc .Ctig ultimul
copil rmas n joc.

5) Se consider un depou de locomotive cu o singur intrare i cu o singur
linie de cale ferat, care poate cuprinde oricte locomotive. S se scrie programul care
realizeaz dispecerizarea locomotivelor din depou. Programul prelucreaz comenzi de
intrare n depou a unei locomotive, de ieire din depou a unei locomotive i de afiare a
locomotivelor din depou.

6) De la tastatur se citesc cuvinte (iruri de caractere). S se scrie un program
care creeaz un arbore de cutare, care conine n noduri cuvintele i frecvena lor de
apariie. S se afieze apoi cuvintele n ordine lexicografic cresctoare i frecvena lor
de apariie.

7) Informaiile pentru medicamentele unei farmacii sunt: nume medicament,
pre, cantitate, data primirii, data expirrii. Evidena medicamentelor se ine cu un
program care are drept structur de date un arbore de cutare dup nume medicament.
S se scrie programul care execut urmtoarele operaii:
a) creeaz arborele de cutare;
b) caut un nod dup cmpul nume medicament i actualizeaz cmpurile de
informaie;
c) tiprete medicamentele n ordine lexicografic;
d) elimin un nod identificat prin nume medicament;
e) creeaz un arbore de cutare cu medicamentele care au data de expirare mai
veche dect o dat specificat de la terminal.

8) Se consider o list unidirecional cmpul informaional al fiecrei celule
conine un numr real. Scriei declaraiile necesare i fragmentul de program care ar
aduga ntre oricare dou celule vecine a listei iniiale celule noi cmpul informaional
al crora va fi media aritmetic a numerelor din celulele vecine.
Ieire: La ecran se afieaz valorile cmpurilor informaionale ale celulelor
listei modificate.


Copie autorizata pentru studenii CFBC
58

Capitolul 5
TEHNICI DE PROGRAMARE




1
Metoda trierii


1) Se consider numerele naturale din mulimea {1, 2, 3, ..., n}, n<100000, n se
citete din fiier. S se determine toate elementele acestei mulimi, pentru care suma
cifrelor este un numr impar, divizibil cu trei;

2) Fiierul date.in conine mai multe caractere, s se afieze cea mai lung
secven de caractere identice. Dac sunt mai multe secvene, se va afia prima.
Exemplu: text: aabsssdadaaab se va afia sss.

3) Se consider numerele naturale din mulimea {1, 2, 3, ..., n}, n<100000, n se
citete din fiier. S se determine toate elementele acestei mulimi, pentru care suma
cifrelor este divizibil cu a i cu b, a i b se citesc din fiier.

4) Se consider mulimea P={P
1
,P
2
,,P
n
} format din n puncte (2n30) pe
un plan euclidian. Fiierul date.in conine n prima linie numrul n, care reprezint
numrul de puncte din plan pe liniile urmtoare se regsesc coordonatele punctelor.
Fiecare punct P
j
este definit prin coordonatele sale x
j
, y
j
. Elaborai un program care
afieaz la ecran coordonatele punctelor P
a
, P
b
distana dintre care este maxim.
Distana dintre punctele P
j
,P
m
se calculeaz cu ajutorul formulei:
( ) ( ) .
2 2
m j m j jm
y y x x d + =

5) Pe o suprafa plan sunt mai multe puncte, date prin coordonatele lor.
Fiierul puncte.in, care pe prima linie conine numrul de puncte din plan, iar pe
urmtoarele linii sunt scrise coordonatele punctelor. Elaborai un program prin
intermediul cruia se determina numrul maximal de triunghiuri care pot fi formate din
aceste puncte cu condiia c:
a) Triunghiurile formate nu se intersecteaz;
b) Triunghiurile formate sunt nscrise;
c) Triunghiurile formate au un vrf comun.
La ecran se va afia numrul de triunghiuri.
Copie autorizata pentru studenii CFBC
59

2
Metoda Greedy

1) Problema spectacolelor ntr-o sal ntr-o zi trebuie planificate n spectacole.
Pentru fiecare spectacol se cunoate intervalul n care se desfoar: (st, sf). Se cere s
se planifice un numr maxim de spectacole astfel nct s nu se suprapun.

2) Problema rucsacului O persoan are un rucsac cu care poate transporta o
greutate maxim G. Persoana are la dispoziie n obiecte i cunoate pentru fiecare obiect
greutatea i ctigul care se obine n urma transportului su la destinaie. Se cere s se
precizeze ce obiecte trebuie s transporte persoana n aa fel nct ctigul sa fie maxim.
Persoana are posibilitatea s taie obiectele

3) Problema bancomatelor Scriei un program, care afieaz modalitatea de
plat, a unui bancomat, folosind un numr minim de bancnote, a unei sume ntregi S de
lei (S<100000). Plata se efectueaz folosind bancnote cu valoarea 1, 5, 10, 50, 100, 200
i 500 de lei. Numrul de bancnote de fiecare valoare se citete din fiierul text
BANI.IN, care conine 7 rnduri, n fiecare din care sunt indicate numrul de bancnote
respectiv de 1, 5, 10, 50, 100, 200 i 500 de lei.

4) Suma componentelor prime Fie a o variabil indexat, ale crei
componente A(1) , A(2),, A(n) sunt numere naturale nenule. S se determine suma
componentelor care sunt numere prime. Atunci cnd un numr prim se repet, el va fi
luat n consideraie o singur dat.

5) La un concurs de automobilism de la linia de start pn la final sunt plasate n
staii de benzin (la diferite distane). Avnd rezervorul plin, maina unui concurent
poate parcurge cel mult o distan d (n kilometri). Concurentul dorete s se opreasc
de ct mai puine ori i desigur s parcurg ntreg drumul de la punctul de start la cel
final. Descriei o metod eficient pe care trebuie s o aplice concurentul i artai c
strategia respectiv conduce la o soluie optim.

6) Pe o band magnetic sunt n programe. Pentru fiecare program i (1 i n)
de lungime l
i
se cunoate probabilitatea p
i
cu care poate fi apelat (cerut), p
1
+p
2
+... +
p
n
= 1. Pentru a citi un program trebuie s citim banda de la nceput (secvenial). n ce
ordine s memorm programele pentru a minimiza timpul mediu de citire a unui
program oarecare?


Copie autorizata pentru studenii CFBC
60

3
Metoda Relurii

1) Labirintul Se consider planul unui
labirint desenat pe o foaie de hrtie liniate n
ptrele. Ptrelele haurate reprezint obstacolele,
iar cele nehaurate - camerele i coridoarele
labirintului.
n memoria calculatorului planul labirintului, este
redat prin matricea A=||a
ij
||
n*m
1n, m30, unde
a
ij
= 1, dac ptrelul este haurat, a
ij
=0, n caz contrar. Cltorul se poate deplasa
dintr-un ptrel nehaurat numai atunci cnd ele au o latur comun. Elaborai un
program care gsete, dac exist, un drum din ptrelul B n ptrelul C

2) Elaborai un program care afieaz la ecran toate modurile de a descompune
un numr natural n sum de k numere naturale distincte. Exemplu: pentru n=9 i k=3
soluiile sunt: 1+2+6,2+3+4,1+3+5 3.

3) Se consider n (n<50) sculee, numerotate respectiv: 1, 2, 3,, n. Sculeul
i conine m
i
monede de aceiai valoare V
i
. Elaborai un program care afieaz la ecran
modul de plat a unei sume p cu monedele din sculee.

4) Dintr-un fiier se citesc numele i notele medii a x clase de elevii. Fiecare
clas este format din minim a i maxim b studeni (2<a<b<30). Studenii necesit a fi
grupai n grupuri de cte x studeni, din fiecare grup este selectat cte un student,
astfel nct media notelor grupului s fie egal cu 8. Afiai lista tuturor grupelor, care
pot fi formate, enumernd numele elevilor din fiecare grup.

5) Se dau N (N50.000) dominouri. S se determine o modalitate de construire
al unui ir, care s conin toate dominourile, respectnd regula jocului domino. Aceasta
regula prevede ca numerele nscrise pe feele corespunztoare a dou dominouri
consecutive trebuie s fie egale. Dominourile pot fi alese n ordine oarecare i rotite.
Date de intrare. Prima linie a fiierului de intrare domino.in se va afla
numrul N al dominourilor. Pe urmtoarele N linii se vor afla cate doua numere separate
printr-un singur spaiu, reprezentnd cele doua numere nscrise pe dominoul
corespunztor.
Date de ieire. Pe prima linie a fiierul domino.out va trebuie s afiai 1,
dac exist soluie i 0 dac nu. Dac exist soluie vor urma exact N linii, care descriu
irul construit. Fiecare numr de ordine va fi urmat de un spaiu i de un numr, care
poate fi 0 sau 1 i va fi egal cu 1 n cazul n care dominoul corespunztor a fost rotit.
Copie autorizata pentru studenii CFBC
61

4
Desparte i stpnete

1) Utiliznd metoda desparte i stpnete
A) S se determine produsul a n numere ntregi;
B) S se determine maximul (minimul) a n numere ntregi;
C) S se determine cel mai mare divizor comun a n valori dintr-un vector;
D) S se caute o valoare ntr-un vector. Dac se gsete se va afia poziia pe
care s-a gsit, altfel se va afia mesajul Nu exista asa valoare;
E) S se caute o valoare ntr-un vector ordonat cresctor;
F) S se numere cte valori sunt egale cu x dintr-un ir de numere ntregi
citite.

2) Considerm un ir de n numere ntregi, ordonat cresctor i un numr ntreg
x. Scriei un program care mparte irul dat n dou subiruri n aa fel nct toate
elementele primului subir s fie mai mici sau cel mult egale cu x, iar toate elementele
celui de-al doilea subir sa fie strict mai mari dect x.

3) Turnurile din Hanoi. Se dau trei tije, a, b i c. Pe tija a se afl n discuri de
dimensiuni diferite, ordonate n ordinea diametrelor (discul cel mai mare la baz). Se
dorete mutarea tuturor discurilor de pe tija a pe tija b, utiliznd tija intermediar c, cu
condiia c un disc cu diametrul mai mare s nu fie pus pe vreo tij peste un disc cu
dimensiune mai mic.

4) Intr-o plac dreptunghiular cu dimensiunile N pe L (coordonatele
dreptunghiului) sunt fcute K guri. Coordonatele gurilor sunt numere ntregi. Fiierul
date.in conine n prima linie numrul n, care reprezint numrul de guri, pe liniile
urmtoare se regsesc coordonatele gurilor. Scriei un program, care determin cel mai
mic dreptunghi(cu o suprafa mai mare ca 0) fr guri din plac.

5) Cunoscndu-se numrul n al elevilor unei clase, precum i mediile generale
ale celor n elevi la finele unui an colar, realizai un program care, folosind un algoritm
Divide et Impera, testeaz dac n clasa respectiv exista doi elevi cu aceeai medie
general. Programul va tipri pe ecran mesajul da sau nu, n funcie de situaie.

6) Intr-o plac dreptunghiular cu dimensiunile N pe L sunt n puncte (2n30).
Fiierul date.in conine n prima linie numrul n, care reprezint numrul de puncte din
plan pe liniile urmtoare se regsesc coordonatele punctelor. Elaborai un program care
afieaz la ecran coordonatele punctelor P
a
, P
b
distana dintre care este minim. Distana
dintre punctele P
j
, P
m
se calculeaz cu ajutorul formulei:
( ) ( )
2 2
m j m j jm
y y x x d + =
Copie autorizata pentru studenii CFBC
62

5 Recapitulare

1) Se consider tabloul bidimensional T[1:5,1:6]. Elementele lui pot avea valori
0 sau 1. Determinai numrul insulielor formate de valorile 1.

2) Se consider tabloul bidimensional T[1:6,1:6]. Elementele lui sunt numere
ntregi pozitive. S ne imaginm c peste un element curge vopsea care se prelinge
peste elementele vecine, valoarea crora nu o depete pe a celor peste care s-a scurs
vopseaua. Curgerea vopselei are loc pe direciile orizontal i vertical. Determinai
toate elementele peste care s-a prelins vopseaua.

3) Se dau 1000 de monede, dintre care una este mai uoar dect celelalte, care
sunt identice. Determinai moneda fals printr-un numr minim de cntriri cu o balan
fr greuti marcate.

4) Pe un cmp dreptunghiular se afl diferite obiective militare de form
dreptunghiular. Limea lor este egal cu o unitate, iar lungimea poate fi diferit, dar
constituie numere ntregi de uniti de msur. Determinai numrul de obiective de
fiecare tip.

5) Un tablou bidimensional are valorile componentelor numere ntregi pozitive.
Determinai patru elemente ce ar reprezenta vrfurile unui ptrat, astfel nct suma
acestor elemente s fie maximal.

6) Se d mulimea A={1, 2, ..., n}. S se determine toate permutrile acestei
mulimi.

7) Se d mulimea A={1, 2, ..., n}. S se determine toate combinrile acestei
mulimi luate cte k elemente.

8) Se d mulimea A={1, 2, ..., n}. S se determine toate partiiile acestei
mulimi.

9) Un copil tie doar adunarea cu 1 i nmulirea cu 2. Ajutai-l, pornind de la 1,
s obin numrul 100 printr-un numr minim de operaii respective.

10) Se d un tablou liniar de numere ntregi ordonate cresctor. Determinai dac
o valoare dat m se regsete printre componentele tabloului printr-un numr minim de
comparri.
Copie autorizata pentru studenii CFBC
63

11) Se consider dou tablouri liniare de numere ntregi sortate cresctor.
Obinei n baza lor al treilea tablou astfel nct el s se obin sortat la completare.

12) Un cltor dorete s viziteze n orae, astfel nct s nu treac de dou ori
prin acelai ora, revenind n oraul de unde a pornit, marcat cu numrul 1. Cunoscnd
legturile existente ntre orae, se cere s se tipreasc toate drumurile posibile pe care
le poate efectua cltorul.

13) Determinai toate modalitile de a plti o sum anumit de bani S cu
bancnote avnd valorile nominalelor A1, A2, ..., An. Numrul bancnotelor de fiecare
nominal este suficient de mare.

14) Avem la dispoziie pnz de 6 culori. S se determine toate variantele de
drapele tricolore ce se pot proiecta, dac:
- un drapel are n mijloc galben sau verde;
- cele trei culori sunt distincte.

15) Fie un numr natural N. Determinai toate descompunerile sale n sum de
numere prime.

16) Fie N piese. Se cunoate timpul necesar pentru prelucrarea fiecrei piese la
fiecare dintre dou strunguri. Determinai n ce ordine trebuie prelucrate piesele la cele
dou strunguri, tiind c piesa poate fi prelucrat la strungul al doilea numai dup ce a
fost prelucrat la strungul nti, astfel nct timpul de lucru al strungurilor s fie cel mai
mic posibil.


17) Din fiierul secv.in se citesc un numr natural n i o matrice ptratic de
dimensiune nxn, coninnd litere din alfabet. De la tastatur se citete un cuvnt.
Verificai dac respectivul cuvnt se conine pe liniile sau coloanele matricei, parcurse
ntr-un sens sau n altul (de la stnga spre dreapta sau invers, de sus n jos sau invers).
Pe ecran se va afia numrul liniei i coloanei de unde ncepe cuvntul i sensul de
parcurgere. De ex.,
5
e r e m a
h e r e b
b m e r e
b a m e r
a e m r e
Cuvntul:
mere
Rspuns:
De la linia 1 coloana 4 spre stnga
De la linia 1 coloana 4 n jos
De la linia 3 coloana 2 spre dreapta

Copie autorizata pentru studenii CFBC
64

18) Aparatele pentru perforarea tichetelor de cltorie n transportul public
folosesc 9 puncte de perforare, dispuse n form de matrice 3x3. S se genereze toate
modalitile n care pot fi perforate biletele.

19) Se consider planul unui labirint, redat prin matricea [A1:n, 1:m],
elementele creia au valori 1, dac poziia respectiv reprezint obstacol, sau 0 n caz
contrar (1<=n, m<=30). Pe plan sunt date dou puncte B i C, ce nu reprezint
obstacole. Elaborai un program ce determin dac exist un drum din punctul B pn n
punctul C. Deplasarea se face doar pe direcie orizontal sau vertical.

20) Se dau n iruri de caractere formate din cifre. mbinai aceste iruri astfel,
nct numrul obinut s fie cel mai mare posibil ca valoare.

21) Se consider dou polinoame de mai multe necunoscute. Determinai suma
acestor polinoame. De ex., P1: 3ax2-2xy+5ay+3; P2: 2ax2-3x2y+6ay+2xy. Rspuns:
5ax2+11ay+3-3x2y.

22) ntre n orae exist o reea de drumuri ce permite ca dintr-un ora s se
ajung n oricare alt ora. ntre dou orae exist cel puin un drum direct de lungime
cunoscut. Determinai traseul cu distana minim posibil ce se va parcurge la
deplasarea din oraul Ai n oraul Aj.

23) Un ir de caractere conine reprezentarea unui numr scris n sistemul roman
de numeraie. Determinai echivalentul acestui numr n sistemul zecimal de numeraie.

24) Se consider trei numere naturale A, B, C. Determinai toate numerele
naturale mai mici ca N ce pot fi reprezentate sub forma unei sume cu un numr arbitrar
de termeni, fiecare dintre termeni fiind A sau B.

25) Numerele a, b, c se numesc pitagoriene dac ele pot fi lungimile laturilor
unui triunghi dreptunghic. Determinai toate numerele pitagoriene mai mici dect o
valoare dat n.

26) Fie n localiti. ntre fiecare dou dintre aceste localiti exist sau nu
comunicaii aeriene . Fiind date dou localiti, s se determine dac se poate ajunge
dintr-o localitate n alta pe cale aerian.

Copie autorizata pentru studenii CFBC
65

27) Fie o scar cu n (n - numr natural) trepte. O persoan trebuie s urce scara.
La fiecare pas ea poate urca una sau dou trepte consecutive. Determinai numrul de
moduri n care persoana dat poate urca scara.

28) Se d numrul natural n. Determinai primele n numere naturale, a cror
descompunere n factori primi conine doar factori din mulimea {2, 3, 5}.

29) Se consider un dicionar explicativ, pstrat ntr-u fiier text. Fiind dat un
termen nou, includei termenul i definiia lui n dicionar printr-un numr minim de
operaii.

30) Preedintele unei ri este ales de ctre parlament din care fac parte n
deputai. Pentru a fi ales preedintele trebuie s primeasc cel puin 2/3 din voturile
deputailor. ntre anumii deputai exist conflicte de interese. Doi deputai aflai n
conflict de interese voteaz diferit. Fiind date numrul natural n i perechile de numere
x, y, unde deputaii cu numrul de ordine x i y au conflict de interese, s se verifice
dac este posibil alegerea preedintelui.

31) S se scrie toate cifrele de la 1 la 9 n rnd, astfel nct fiecare dou vecine s
formeze un numr divizibil cu 7 sau cu 13.

32) Se dau dou tablouri liniare cu N (N<=500) componente numere naturale cu
valori pn la 1000. Determinai valorile ce se ntlnesc n ambele tablouri. n tablouri
pot fi valori ce se repet.

33) Scriei un program ce determin toate numerele naturale pseudoperfecte mai
mici dect o valoare dat N. Un numr natural se numete pseudoperfect dac este un
divizor al sumei divizorilor si.

34) Se consider 9 ptrate cu laturile 2, 5, 7, 9, 16, 25, 28, 33, 36 uniti.
Asamblai aceste ptrate astfel nct s se obin un dreptunghi avnd laturile de 61 i
69 uniti.

35) Se d o matrice ptratic. Ordonai cresctor elementele fiecrei linii, apoi
rearanjai liniile matricei, astfel nct suma elementelor de pe diagonala principal s fie
minim.

Copie autorizata pentru studenii CFBC
66

36) Se dau M tablouri liniare cu numrul de componente diferit. Numrul de
componente ale fiecrui tablou se conine n tabloul L[1:m]. S se determine secvenele
maxime de elemente alturate ce figureaz n toate tablourile n aceeai ordine.

37) ntr-o localitate sunt 15 vntori. Dintre ei se formeaz echipe a cte 3
persoane, astfel nct n cele 7 zile ct dureaz vntoarea nici un participant s nu fie
mpreun cu vreunul dintre cei cu care a mai fost n echip. Determinai componena
echipelor pentru cele 7 zile.

38) Se cunosc coordonatele oraelor unei ri. Determinai configuraia unei
reele telefonice prin cablu astfel nct:a) oricare ora s fie conectat la reeaua
telefonic; b) costul reelei telefonice s fie minim.

39) La o ntrunire trebuie s vorbeasc 5 persoane (A, B, C, D, E). Afiai toate
listele de ieire la tribun astfel nct de fiecare dat persoana B s vorbeasc dup
persoana A.

40) La o discotec sunt M biei i N fete. Determinai toate posibilitile n care
bieii pot invita fetele astfel nct doi biei s nu invite aceeai fat i fiecare biat s
danseze (N>=M).

41) Pe o hart de contur sunt reprezentate n (n<=30) ri. n memoria
calculatorului harta este redat prin matricea [A1:n, 1:m], elementele creia au valori 1,
dac rile respective sunt vecine, sau 0 n caz contrar. Determinai numrul minim de
culori necesare pentru a colora harta astfel ca oricare dou ri vecine s aib culori
diferite. (Utiliznd cel mult patru culori, colorai harta astfel nct dou ri cu frontier
comun s fie colorate diferit.)


Copie autorizata pentru studenii CFBC
67

Capitolul 5
PROBLEME CU CARACTER DE
OLIMPIAD

Vopsit. Doi copii vopsesc un gard din scnduri pe care le vom numerota de la 1
la n astfel: primul ia o cutie de vopsea roie cu care vopsete scndurile cu numrul p,
2p, 3p, etc. Al doilea procedeaz la fel, ncepe de la acelai capt al gardului dar ia o
cutie de vopsea albastr i vopsete din q n q scnduri. Astfel, cnd vor termina de
vopsit, gardul va avea multe scnduri nevopsite, unele scnduri vopsite n rou, altele n
albastru, iar altele n violet. Cunoscnd numerele n, p i q afiai: a) cte scnduri rmn
nevopsite b) cte scnduri sunt vopsite n rou c) cte scnduri sunt vopsite n albastru
d) cte scnduri sunt vopsite n violet.

Paranteze. Se consider o expresie aritmetic, unde sunt folosite parantezele
(,{,[,],} i ). Elaborai un program care verific dac n expresie parantezele au fost
folosite corect.
Input: Fiierul de intrare paranteze.in care conine pe fiecare linie cte o expresie
matematic.
Output Fiierul de ieire paranteze.out va conine pe fiecare linie cuvntul DA
sau NU n funcie de corectitudinea irului respectiv din fiierul paranteze.txt.
Exemplu:
Fiierul input.txt Fiierul output.txt:
(a*b)
(12-e)(d+a)[c(
DA
NU

Film. F fete si B biei i-au luat bilete la film. Toate biletele sunt pe acelai rnd,
pe scaune consecutive. Elaborai un program care s determine o posibilitate de aranjare
a fetelor si bieilor pe scaune astfel nct lng orice biat s se afle cel puin o fat, iar
lng orice fat s stea cel puin un biat.
Input: Fiierul de intrare film.in conine pe prima linie dou numere naturale separate
prin spaiu F B, unde F reprezint numrul de fete, iar B numrul de biei.
Output: Fiierul de ieire film.out va conine o singura linie pe care vor fi scrise F litere
'f' si B litere 'b' ('f' indicnd o fat, iar 'b' indicnd un biat), respectnd condiiile
problemei.
Restricii: 1 <=F, B <=100
Pentru datele de test exista ntotdeauna soluie.
Exemplu:
film.in film.out
3 4 bfbfbfb
Copie autorizata pentru studenii CFBC
68

Finala. La finala campion 2009 vor participa N elevi i M profesori.
Organizatorii colaboreaz cu o firm de transport care are autobuze identice, fiecare
autobuz avnd K locuri. Elaborai un program ce va determina numrul minim de
autobuze necesare, tiind c n orice autobuz trebuie s existe cel puin 2 profesori.
Input: Fiierul de intrare finala.in conine pe prima linie trei numere naturale
separate prin cte un spaiu N M K, cu semnificaia din enun.
Output: Fiierul de ieire finala.out va conine un singur numr natural
reprezentnd numrul minim de autobuze necesare. Dac nu este posibil organizarea
transportului n condiiile problemei, vei afia valoarea 0.
Restricii: 1<=N, M, K<=10000
Exemplu:
finala.in finala.out Explicaii
10 4 7 2 Sunt 10 copii i 4 profesori. n fiecare autobuz vor
merge 5 copii i 2 profesori, deci sunt necesare 2
autobuze
10 4 5 0 Transportul nu poate fi organizat n condiiile date

Petrolul. Republica Moldova, trecut prin criza gazelor, i neavnd resurse de
petrol i-a propus s procure petrol de peste hotare.
Exist n ri care export petrol. Fiecare i-stat export petrol cu a
i
dolari i b
i
euro
pentru un baril. Moldova nu poate procura petrol de la un stat i n dolari i n euro.
Ajutai Republica Moldova s procure petrol ct mai mult, dac se cunoate numrul
a(numrul de dolari de care dispune RM) i b(numrul de euro de care dispune RM).
Input: Fiierul de intrare oil.in conine n primul rnd 3 numere: n, a, b (1 n
100, 0 a, b 1000). Urmtoarele N rnduri conin perechile de numere a
i
i b
i

Output: Fiierul de ieire oil.out va conine volumul maxim de petrol care va
putea fi procurat cu minim 2 cifre dup virgul.
Exemplu:
oil.in oil.out
3 2 5
6 4
3 5
8 7
1.92
4 3 2
1 1
2 2
3 3
4 4
4.00

Copie autorizata pentru studenii CFBC
69

Evaluarea expresiilor Se consider expresiile aritmetice formate din numere
ntregi, mai mici dect 1000 i operatorii binari +, , *. Scriei un program care
evalueaz expresiile aritmetice n studiu.
Input: Fiierul input.txt va conine expresia de evaluat.
Output: Fiierul output.txt va conine rezultatul evalurii.
Restricii: Lungimea maxim a expresiei este de 300 de caractere.
Exemplu:
Fiierul input.txt Fiierul output.txt:
16+34+2*47 51

Parcurgerea matricei. Se d matricea A[N,N] de numere ntregi (N10). De
parcurs matricea n urmtoarea ordine: primul se va afia elementul A[N,1], urmeaz
micarea n dreapta, apoi paralel cu diagonala principal, micarea n sus, apoi iari
paralel cu diagonala principal, .a.m.d., ultimul element va fi A[1,N].
Input: De la tastatur se introduce N i elementele matricei
Output: La ecran se vor afia elementele n ordinea indicat
Exemplu: Input: 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
Output:
13 14 9 5 10 15 16 11 6 1 2 7 12 8 3 4

Codificare optimal Se d un text de lungime maxim 100 caractere, ce conine
doar litere mici ale alfabetului englez. Textul poate fi codificat nlocuind apariiile
consecutive ale subirurilor sale de lungime maxim cu subirul urmat de numrul su
de apariii. Scriei un program care s codifice optimal un text dat, adic codul rezultat
s fie de lungime minim.
Input: fiierul cod.in conine pe o linie textul.
Output: fiierul cod.out va conine codul.
Exemplu:
Fiierul cod.in Fiierul cod.out
aaacaaacaaacbbdefdef aaac3b2def2

irul Fibonacci[12] irul de numere Fibonacci este definit n felul urmtor:
primele dou elemente ale irului sunt egale cu 1, fiecare element urmtor este suma
celor dou elemente care l preced. irul de numere Fibonacci este scris fr spaii,
astfel nct nceputul lui arat n felul urmtor:
Copie autorizata pentru studenii CFBC
70

11235813213455...
Cerin: Se cere s scriei un program care s determine cifra de pe poziia N din
irul obinut (poziiile n ir sunt numerotate ncepnd cu 1).
Date de ieire: va fi afiat un numr natural valoarea cifrei de pe poziia N.
Restricii
1 N 10000000
Exemple:
Date de intrare Date de
ieire
Explicaii
6 8 112358
Date de intrare Date de
ieire
Explicaii
14 5 11235813213455

Arcai[12] Secretul victoriilor faimosului
comandant de oti MegaFlop este strategia lui de
alegere a poziiei arcailor pe cmpul de lupt.
Cmpul de lupt are forma unui poligon simplu i e
nconjurat de pduri. MegaFlop plaseaz arcaii doar
pe poziii din care este vzut tot cmpul de lupt. Se
consider c arcaii vd tot cmpul, dac din orice
punct care aparine poziiei lor de tragere se poate
trage cu sgeata n orice alt punct al cmpului.
Traiectoria sgeii este liniar. Nimerind n pdure,
sgeata se pierde. Pentru tragere, fiecare arca are
nevoie de 1 unitate de suprafa. Astfel, numrul maxim de arcai, care pot fi plasai pe
poziii este determinat de aria poligonului din care este vzut toat cmpia. (des. 1)
Cerin. Scriei un program, care determin numrul maxim de arcai, care pot fi
plasai pe poziii pe cmpul de lupt.
Input. Fiierul de intrare va conine pe prima linie un numr ntreg N - numrul
de vrfuri ale poligonului simplu, care descrie perimetrul cmpului de lupt. Urmeaz N
linii care conin coordonatele vrfurilor poligonului n ordinea parcurgerii lor dup acele
de ceasornic, cte un vrf pe linie. Linia i+1 conine dou numere ntregi x
i
, y
i
, separate
prin spaiu coordonatele vrfului i.
Output. Fiierul de ieire va conine un singur numr ntreg: numrul maxim de
arcai, care pot fi plasai pe poziii.
Restricii
3 N 1 000, 0< x
i
, y
i
, 10000

Copie autorizata pentru studenii CFBC
71

Exemplu
arcas.in (desen) arcas.out
8
2 5
3 6
2 7
4 7
6 9
8 6
7 2
5 4
3 4
11
arcas.in arcas.out
5
1 3
2 6
2 3
5 6
3 1
0

Ceti[12] Terralanda este un regat, care se extinde permanent. Frontiera
regatului este un poligon convex, n vrfurile cruia sunt construite ceti pentru
aprarea segmentelor de frontier adiacente. La fiecare extindere a regatului frontiera se
modific: se construiesc ceti noi, iar unele ceti, construite anterior i pierd rolul de
puncte de aprare. n toate cetile se afl garnizoane. Pentru a micora cheltuielile
pentru ntreinerea armatei, regele Terralandei, MegaBit a decis s demobilizeze
garnizoanele din cetile care nu mai au rolul de puncte de aprare (nu se mai afl pe
frontiera regatului).
Cerin. Scriei un program, care va determina din cte ceti vor demobilizate
garnizoanele.
Date de intrare. Prima linie a fiierului de intrare cetati.in conine un numr ntreg: N
(3 N 10000) numrul de ceti n Terralanda.
Urmeaz N linii ce conin cte dou numere ntregi x
i
,y
i

(10
9
x
i
, y
i
10
9
), separate prin spaiu coordonatele cetilor.
Date de ieire. Fiierul de ieire cetati.out va conine un numr ntreg numrul de
ceti din care pot fi demobilizate garnizoanele.



Copie autorizata pentru studenii CFBC
72

Exemplu:
cetati.in cetati.out Explicaie
10
2 1
3 4
6 3
6 6
8 5
10 3
11 7
12 6
9 11
15 8
5


Ptrate[12] Fie dat o reea din puncte cu coordonate ntregi N N. Fie unele
noduri ale reelei sunt colorate cu alb, altele cu negru. Se cere s determinai numrul
de ptrate pe reeaua dat (vrfurile unui ptrat trebuie s coincid cu nodurile reelei i
s fie colorate cu aceeai culoare).
De exemplu, pentru reeaua 4 4, din desenul 1 exist un singur ptrat (des. 2).


Des 1. Reea 4 4. Des 2. Ptratul din reea.
Input. Prima linie a fiierului de intrare conine numrul N dimensiunea reelei
(2 N 50). Urmtoarele N linii conin cte N numere din mulimea {0, 1} i descriu
reeaua. Dac nodul cu coordonatele (i, j) este de culoare alb, atunci elementul j din
linia i+1 este 0, iar dac e de culoare neagr - atunci 1.
Output. Fiierul de ieire va conine un singur numr cel al ptratelor din reea.
Exemplu
patrate.in patrate.out
4
0 1 0 0
0 0 1 1
1 0 0 0
0 1 1 1
1
Copie autorizata pentru studenii CFBC
73

PROTOZUMA[12] ProtoZuma este un joc foarte simplu, n care un ir S de
simboluri (simbolurile sunt numerotate de la stnga la dreapta, ncepnd cu indicele 1)
este lovit n poziia i de o ghiulea. Imediat dup lovitur se produce explozia, dup
urmtoarea regul:
Dac simbolurile din poziiile i-1, i, i+1 nu sunt egale ntre ele, nu se ntmpl nimic
irul S rmne intact.
Exemplu: AAABB este lovit n poziia 4. Rezultat: AAABB
Dac simbolurile din poziiile i-1, i, i+1 sunt egale, din ir se lichideaz toat
secvena de simboluri egale, care le conine, iar fragmentele rmase se unesc.
Exemplu: BBAAAAACCC este lovit n poziia 4 Rezultat: BBCCC
Att timp ct dup explozie n locul unirii fragmentelor se formeaz o secven de
cel puin 3 litere egale, explozia se repet.
Exemplu: DBBAAAAABCCC este lovit n poziia 6
Rezultat: DBB <-> BCCC, explozia se repet, rezultat final DCCC
Cerin: Scriei un program, care s determine irul n care se transform irul iniial
S dup lovitura unei ghiulele.
Restricii: Lungimea S nu va depi 200 caractere. 1 < i < lungimea irului S
Input: Fiierul de intrare x-zuma.in va conine pe prima linie un numr natural
valoarea i a poziiei n care lovete ghiuleaua. Linia a doua a fiierului conine irul S
Output: Fiierul de ieire x-zuma.out va conine pe prima (i unica) linie irul S
dup lovitur i explozii.
Exemplu:








Mere. n grdina lui Ion crete un pom de mr. Pomul fiind fermecat, merele cad
din el dup o regul diferit de legile fizicii: La un moment dat un mr de desprinde de
ramura sa i ncepe s cad vertical n jos. Dac n timpul cderii mrul atinge un alt
mr, acesta din urm ncepe s cad i el vertical n jos. Traiectoria merelor n cdere nu
se schimb la atingerea altor mere. Astfel, orice mr, cu excepia primului, ncepe s
cad doar dup ce a fost atins de un mr n cdere.
Cerin Se cere s scriei un program, care s determine numrul de mere, care vor
cdea din pom.
Date de intrare. Fiierul de intrare mere.in va conine pe prima linie numrul n al
zum.in zum.out
12
AABBCCCCBRQQQAA
AABBCCCCBRAA
6
AABBCCCCBRQQQAA
AARQQQAA
5
AABBCCCCBRQQQAA
AABBCCCCBRQQQAA
Copie autorizata pentru studenii CFBC
74

merelor din pom. Urmtoarele n linii conin descrierea merelor. Linia i+1 conine
descrierea mrului cu indicele i . Fiecare mr este considerat o sfer. Un mr este
descris de coordonatele punctului su superior (n acest punct el este prins de ramur,
codia fiind punctiform) xi , y i i zi i raza r i toate numerele - ntregi). Se garanteaz,
c iniial nici care dou mere nu se intersecteaz. Axa OZ este orientat vertical n sus.
Date de ieire. Fiierul de ieire mere.out va conine un singur numr - cel al
merelor, care vor cade din copac n cazul cnd ncepe s cad mrul cu indicele 1 .
Restricii
1 N 200
-10000 (xi, yi, zi) 10000
1 ri 10000
Exemplu

mere.in mere.out Explicaii
4
0 0 10 4
5 0 3 1
-7 4 7 1
0 1 2 6
3 Mrul cu indicele 1 va cdea n orice caz. n
cdere el atinge mrul cu indicele 2 i mrul cu
indicele 4.



Copie autorizata pentru studenii CFBC
75

Capitolul 6
INFORMAII UTILE N TIMPUL
LUCRULUI N MEDIUL TURBO
PASCAL
CODURILE GENERATE DE TASTATUR
Tasta Normal Shift Ctrl

Tasta Normal Shift Ctrl
A 97 65 1

`~ 96 126
B 98 66 2

-_ 45 95
C 99 67 3

=+ 61 43
D 100 68 4

[{ 91 123
E 101 69 5

]} 93 125
F 102 70 6

\| 92 124
G 103 71 7

;: 59 58
H 104 72 8

' " 39 34
I 105 73 9

,< 44 60
J 106 74 10

.> 46 62
K 107 75 11

/? 47 63
L 108 76 12

Backspace 8 8 127
M 109 77 13

Tab 9 0,15
N 110 78 14

Enter 13 13 10
O 111 79 15

Spaiu 32 32 32
P 112 80 16

Esc 27 27 27
Q 113 81 17

F1 0,59 0,84 0,94
R 114 82 18

F2 0,60 0,85 0,95
S 115 83 19

F3 0,61 0,86 0,96
T 116 84 20

F4 0,62 0,87 0,97
U 117 85 21

F5 0,63 0,88 0,98
V 118 86 22

F6 0,64 0,89 0,99
W 119 87 23

F7 0,65 0,90 0,100
X 120 88 24

F8 0,66 0,91 0,101
Y 121 89 25

F9 0,67 0,92 0,102
Z 122 90 26

F10 0,68 0,93 0,103
0) 48 41

PrintScr 0,114
1! 49 33

Insert 0,82 0,5 0,4
2@ 50 64

Home 0,71 0,71 0,119
3# 51 35

PageUp 0,73 0,73 0,132
4$ 52 36

Delete 0,83 0,7 0,6
5% 53 37

End 0,79 0,79 0,117
6^ 54 94

PageDn 0,81 0,81 0,118
7& 55 38

8* 56 42

9( 57 40

Copie autorizata pentru studenii CFBC
76

Valorile pentru litere se refera la situaia cnd <Caps Lock> este inactiva. Cnd <Caps
Lock> este activata, valorile coloanelor Normal si Shift se inverseaz. Tastele blocului
numeric transfera, la tastarea normala, codurile pentru cifre (#48..#57), numai daca <Num
Lock> este activ. n toate celelalte cazuri, se transfer codurile funciilor asociate, precizate n
tabelul anterior. Tastele F11, F12, Scroll, Pause nu genereaz coduri.
Erori de execuie
Apariia unei erori de execuie determina ntreruperea programului si afiarea unui
mesaj de eroare, de forma: Run-time error nnn at xxxx:yyyy, unde nnn este codul erorii de
execuie, iar xxxx:yyyy este adresa ei (segment si offset). Erorile de execuie se mpart n:
erori DOS (coduri 1-99); erori de intrare/ieire (coduri 100-149), erori critice (coduri 150-199)
si erori fatale (coduri 200-255).

ERORI DOS
1 Funcie inexistenta. Generata de un apel al unei funcii DOS inexistente.
2 Fiier inexistent. Generata de execuia uneia din procedurile Reset, Append, Rename sau
Erase, daca identificatorul asignat variabilei de tip fiier nu corespunde unui fiier existent.
3 Cale inexistenta. Generata de execuia uneia din procedurile:
o Reset, Append, Rewrite, Rename sau Erase, daca identificatorul asignat variabilei de tip fiier
este invalid sau include un sub[director] inexistent;
o ChDir, MkDir sau RmDir, daca sub[directorul] este invalid sau inexistent.
4 Prea multe fiiere deschise. Generata de execuia uneia din procedurile Reset sau Append
daca, la un moment dat, sunt deschise simultan mai mult de 12 fiiere ale utilizatorului. Daca
se dorete raportarea erorii pentru un numar mai mic de fiiere deschise simultan, trebuie ca
fiierul CONFIG.SYS sa nu con-tina clauza FILES=xx, sau sa specifice numrul de fiiere
dorit.
5 Acces interzis la fiier. Generata de execuia uneia din procedurile:
o Reset sau Append, daca FileMode permite scrierea, dar identificatorul asignat variabilei fiier
specifica un [sub]director/fiier read-only;
o Rewrite, daca sub[directorul] este plin sau identificatorul asignat variabilei fiier specifica un
[sub]director/fiier existent read-only;
o Rename, daca identificatorul asignat variabilei fiier specifica un fiier existent;
o Erase, daca identificatorul asignat variabilei fiier specifica un sub[director]/fiier read-only;
o MkDir, daca: exista un fiier cu aceleai nume n sub[directoriu] printe; nu exista spaiu n
sub[directorul] printe; este specificat n cale un dispozitiv;
o RmDir, daca: sub[directorul] nu este vid; nu se specifica un sub[director] n cale; directorul
specificat include rdcina;
o Read/BlockRead pentru un fiier cu tip/fr tip, daca acesta nu a fost deschis pentru citire;
o Write/BlockWrite pentru un fiier cu tip/fr tip, daca acesta nu a fost deschis pentru scriere.
6 Handle de fiier invalid. Generata la transmiterea unui handle (vezi 8.2) invalid de fiier,
la un apel al sistemului DOS.
Copie autorizata pentru studenii CFBC
77

12 Cod invalid de acces la fiier. Generata de execuia uneia din procedu-rile Reset sau
Append pentru fiiere cu tip/fr tip, daca valoarea variabilei FileMode este invalida.
15 Numr dispozitiv invalid. Generata de execuia uneia din procedurile GetDir sau ChDir,
daca numrul dispozitivului periferic este invalid.
16 Sub[directorul] curent nu poate fi suprimat. Generata de execuia procedurii RmDir,
daca n calea specificata este inclus directorul curent.
17 Redenumire fiiere pe dispozitive diferite. Generata de execuia procedurii Rename, daca
specificatorii de fiiere nu sunt pe acelai dispozitiv.

ERORI DE INTRARE/IESIRE
Erorile de intrare/ieire determina ntreruperea execuiei programului, numai daca instruciunea
respectiva a fost compilata cu directiva {$I+} (valoare implicit). n cazul n care se specifica
directiva de compilare {$I-}, execuia programului continu, iar apariia erorii este depistata cu
ajutorul funciei IOResult.
100 Eroare la citirea de pe disc. Generata de execuia procedurii Read pentru fiiere cu tip,
daca se ncearc citirea sfritului de fiier.
101 Eroare la scrierea pe disc. Generata de execuia uneia din procedurile Close, Write,
WriteLn, Flush sau Page, daca s-a umplut discul (nu mai este spaiu pe disc).
102 Fiier neasignat. Generata de execuia uneia din procedurile Reset, Rewrite, Append,
Rename sau Erase, daca variabila fiier nu a fost asignata unui nume fizic, prin procedura
Assign.
103 Fiier nedeschis. Generata de execuia uneia din procedurile/funciile Close, Read, Write,
Seek, Eof, FilePos, FileSize, Flush, BlockRead sau BlockWrite, daca fiierul nu este deschis.
104 Fiier nedeschis pentru intrare. Generata de execuia uneia din procedurile/funciile
Read, ReadLn, Eof, EoLn, SeeKEof sau SeeKEoln, daca fiierul TEXT respectiv nu este
deschis pentru consultare.
105 Fiier nedeschis pentru ieire. Generata de execuia uneia din procedurile Write sau
WriteLn, daca fiierul TEXT respectiv nu este deschis pentru crea-re/ex-tindere.
106 Format numeric invalid. Generata de execuia uneia din procedurile Read sau ReadLn,
daca o valoare numerica citita dintr-un fiier TEXT nu concorda cu formatul numeric declarat.

ERORI CRITICE
150 Disc protejat la scriere
151 Unit necunoscut
152 Dispozitivul nu este pregtit
153 Comanda necunoscuta
154 Eroare CRC n data
155 Cerere pe un dispozitiv greit
156 Eroare de poziionare pe disc
157 Tip dispozitiv necunoscut
158 Sector negsit
159 Imprimanta n ateptarea hrtiei
Copie autorizata pentru studenii CFBC
78

160 Incident la scrierea pe dispozitiv
161 Incident la citirea de pe dispozitiv
162 ntrerupere hardware

ERORI FATALE
200 mprire la zero. Generata de mprirea la 0 a unui numar, cu operatorii / , MOD sau
DIV.
201 Nonapartenena la un interval. Generata de instruciunile compilate cu directiva {$R+},
n urmtoarele condiii:
o expresia de indice pentru referirea unui element de masiv este n afara intervalului;
o atribuirea unei valori n afara intervalului stabilit pentru variabila respectiva;
o atribuirea unei valori n afara intervalului stabilit pentru un parametru de
procedura/funcie.
202 Depire stiva. Generata la apelul unei proceduri/funcii, compilate cu directiva {$S+},
cnd nu este spaiu suficient n stiva pentru memorarea variabilelor locale. Stiva se poate mari
cu directiva de compilare {$M}. Eroarea apare si n cazul unui apel recursiv infinit.
203 Depire heap. Generata de execuia uneia din procedurile New sau GetMem, cnd nu
este suficient spaiu n heap, pentru alocarea unui bloc sau a unei zone de mrime specificata.
204 Operaie cu pointer invalid. Generata de execuia uneia din procedu-rile Dispose sau
FreeMem daca: pointerul are valoarea nil sau indica o locaie n afara zonei heap; lista
blocurilor libere nu poate fi extinsa, deoarece este plina; HeapPtr are o valoare prea apropiata
de limita inferioara a listei libere.
205 Depire virgula mobila. Generata n urma unei operaii al crei rezultat este un numar
prea mare pentru a fi reprezentat ntr-un tip real de data Pascal.
206 Depire inferioara virgula mobila. Generata n urma unei operaii al crei rezultat este
un numar prea mic pentru a fi reprezentat ntr-un tip real de data Pascal. Apare numai daca se
utilizeaz coprocesorul matematic 8087. Se transmite, implicit, valoarea zero.
207 Operaie virgula mobila invalida. Generata daca:
o Argumentul funciilor Trunc sau Round este n afara intervalului [-2147483648,
2147483647];
o Argumentul funciei Sqrt este negativ;
o Argumentul funciei Ln este negativ sau zero;
o A aprut o depire a stivei 8087.
208 Managerul de reacoperire nu este instalat. Generata n urma apelului unei
funcii/proceduri de reacoperire, n cazul n care componenta de gestiune a structurilor de
reacoperire (Overlay Manager) nu a fost instalata (cel mai adesea nu s-a apelat procedura
OvrInit sau apelul ei a euat).
209 Eroare la citirea unui fiier de reacoperire. Generata n cazul n care se produce o
eroare cnd managerul de reacoperire ncearc sa citeasc un unit dintr-un fiier de reacoperire.



Copie autorizata pentru studenii CFBC
79


BIBLIOGRAFIE


1. Bacalaureat 2002 teste la informatic, G. Vasilache, I. Ciobanu, A. Malearovici,
I. Spinei, L. urcanu, Liceum 2002;
2. Cornelia Ivac, Mona Prun, Tehnici de programare (aplicaii de laborator) Ed.
Petrion, Bucureti, 2000
3. Culegere de problem de informatic, Gh. Bostan, Editura Lumina, Chiinu,
1996;
4. FIorin Munteanu, Traian lonescu, Daniela Ttaru, Sergiu Mihai Dascala,
Gheorghe Musc., Programarea calculatoarelor, manual pentru licee de
informatic clasele X-XII, Ed. Didactic i Pedagogic, R.A, - Bucureti, 1994
5. Ilie Coand, Pascal programe-exemple LITERA, Chiin -1998
6. Informatica limbajul PASCAL, manual pentru clasele 9 11, A. Gremalschi, I.
Mocanu, I. Spinei, Chiinu, .E.P. tiina, 2005;
7. Ion Ivan, Marian Dradal, Felix Furtun, Informatica, Manual pentru clasa a X-
a, Bucureti, Corint, 2000
8. Ion Smeureanu, Ion Ivan, Mmarian Drdal., Limbajul C/C++ prin exemple, Ed.
CISON, Bucureti, 1996
9. Tudor Sorin, Informatica(Tehnici de programare), Varianta C++, manual pentru
clasa a X, Ed. L&S, Bucureti
10. Tudor Sorin, Informatica, Varianta C++, manual pentru clasa a IX, Ed. L&S,
Bucureti
11. Tudor Sorin, Informatica, Varianta C++, manual pentru clasa a XI, Ed. L&S,
Bucureti
12. http://campion.edu.ro/

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