Академический Документы
Профессиональный Документы
Культура Документы
Grigore VASILACHE
Silviu GNCU
C U L E G E R E
DE PROBLEME LA INFORMATIC
pentru orele
de laborator
Capitolul
INSTRUCIUNI
Operaii de intrare/ieire
Operaii de ieire
write(x); sau writeln(x);
write(x1,x2,xn);
este
write(x2,); write(xn);
echivalent
cu
write(x1);
x:w
va afia:
Valoarea lui a este
b= 7.24
unde :
double c=123.1234567;
instruciunea
printf(%d\n a=%5d\nc=%7.2g,a,a,c);
va afia :
24
a= 24
c= 123.12
cout<<flux1<<flux2<<<<fluxn;
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
xxxxxxxx77
Operaii de intrare
read(x); sau readln(x);
read(x1,x2,xn); este echivalent cu
read(x1); read(x2,); read(xn);
doua
numere
intregi
sau
Begin write (Introduceti valoarea lui a ) readln(a);
2
scanf(ir_de_control,lista_de_intrare);
C++
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.
4
Funcii matematice
n varianta Pascal
Funcia
Descriere
Arctangenta valorii x
Sinusul lui x
Cosinusul lui x
Puterea numrului e ex
logaritmul natural lnx
Rdcina ptrat a lui x
Valoarea absolut a lui x
Ptratul lui x
Rotunjirea lui x
Trunchierea lui x
Paritatea lui x, True, daca x
este impar.
Numrul valorii ordinale x
Predecesorul lui x
Succesorul lui x
Caracterul cu numrul x
Testarea sfritului de fiier
Testarea sfritului de linie
Partea fracionara obinuta prin
trunchierea argumentului
Partea ntreaga obinuta prin
trunchierea argumentului
Valoarea numrului Pi
(3,1415926536).
Decrementarea valorii
variabilei x cu 1 [respectiv n].
Incrementarea valorii variabilei
x cu 1 [respectiv n].
arctan(x);
sin(x);
cos(x);
exp(x);
ln(x);
sqrt(x);
abs(x);
sqr(x);
round(x)
trunc(x)
Tipul
argumentelor
Tipul
rezultatului
Numeric,
adic
integer sau
real
real
Coincide cu
tipul lui x
real
integer
odd(x)
integer
boolean
ord(x)
pred(x)
succ(x)
chr(x)
eof(f)
eoln(f)
ordinal
integer
ordinal
Coincide cu
tipul lui x
integer
char
fiier
boolean
frac( x)
real
real
Int(x)
real
real
Numeric
real
ordinal
Coincide cu
tipul lui x
ordinal
Coincide cu
tipul lui x
real
integer
WORD
Pi
Dec( x
[;n:LONGINT])
;
Inc(
x:ordinal
[;n:LONGINT])
;
Iniializarea generatorului
intern de numere aleatoare cu o Randomize;
valoare arbitrara.
Numr real pseudoaleator,
Random
subunitar, nenegativ (fr
argument).
Numr ntreg pseudoaleator din Random(x)
domeniul 0..Ord(x)-1.
6
n varianta C/C++
Antet
double asin( double arg );
double acos( double arg );
double atan( double arg );
double atan2( double y, double x );
double floor( double num );
Descriere
Calculeaz arcsinusul/arccosinusul
valorii arg; rezultatul este msurat
n radiani
Calculeaz arctangenta valorii arg,
respectiv a fraciei y/x
ntoarce cel mai mare ntreg mai
mic sau egal cu num (partea
ntreag inferioar)
ntoarce cel mai mic ntreg mai
mare sau egal cu num (partea
ntreag superioar)
Calculeaz
sinusul/cosinusul/tangenta
parametrului arg, considerat n
radiani
Calculeaz
sinusul/cosinusul/tangenta
hiperbolic a parametrului arg
ntoarce valoarea earg
ntoarce valoarea basearg
Calculeaz logaritmul natural (de
baz e) al valorii arg
Calculeaz logaritmul n baza 10 al
parametrului
Calculeaz rdcina ptrat a
parametrului
ntoarce restul mpririi lui x la y
ntoarce valoarea absolut a lui arg
I.
f ( x) = x 3 + x 2 ;
II.
1 1
f ( x) = + 2
x x ;
f ( x) =
III.
IV.
7
x2 +1 ;
f ( x) = x 2 ln x ;
V.
VI.
1
f ( x) = sin x + sin 2 x
2
;
8
f ( x) = x 2 +
x;
IX.
X.
e x e x
f ( x) = x x
e +e ;
tgx
f ( x) =
x .
f ( x) = e x ;
e x e x
f ( x) =
2 ;
2
VII.
VIII.
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.
xy + yx
f ( x, y ) = y
x + y x
f ( x, y ) =
II.
f ( x, y ) =
III.
f ( x, y ) =
IV.
f ( x, y ) =
V.
VIII.
tg ( x) + tg ( y )
| x y | +1
IX.
|x y|
* cos( )
x
x + sin( )
y
|x+ y|
1
|x y|
f ( x, y ) =
X.
* (| x | +1)
sin( x) + sin( y )
ey + ex
f ( x, y ) = x y + x
y
VI.
VII.
cos 2 ( x) + 2 sin 2 ( y )
f ( x, y ) =
x+ y
f ( x, y ) =
( x 2 + y 2 + 1) * sin 2 ( x + y )
x y
x2 y2
f ( x, y ) =
+ 2
| x + y | +1 x + y 2 + 1
ln( x) + ln( y )
e y + e x
Instruciunea de ramificare if
Instruciunea de ramificare if
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.
Pasc
al
Exemple:
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
else
else if a mod 2=0 then
else
writeln(a
writeln(a
writeln(a
writeln(a
este
este
este
este
pozitiv,
pozitiv,
negativ,
negativ,
par)
impar)
par)
impar)
// instruciuni
C/C
if( condiie ){
//instruciuni
++
else{
//alte instruciuni
}
}
}
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.
11
12
cazul
[ else
end;
of
1 :instruciunea 1;
2 :instruciunea 2;
n :instruciunea n
instruciunea n+1; ]
Pasc Menionm, c:
1. else poate lipsi;
al
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.
switch este o instruciune menit s simplifice structurile condiionale cu mai
multe condiii.
switch( expresie ){
case constanta1: //instruciuni1
case constanta2: //instruciuni2
C/C
[default:
++ }
break;
break;
//instruciuni]
Valoarea expresie 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
13
14
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 (expresie){
//instruciuni
}
while (expresie) do
begin instruciuni end;
Dac condiia din expresie este adevrat (are o valoare nenul), instruciunile din
blocul de dup while sunt executate. expresie este reevaluat dup fiecare iteraie.
int main(){
int i;
printf("Ciclu for\n");
for(i=1;i<=10;i++)
printf("i=%d\n", i);
printf("Ciclu while\n");
i=1;
while (i <= 10) {
printf("i=%d\n", i);
i++;
}
printf("Ciclu do while\n");
i=0;
do{
i++;
printf("i=%d\n", i);
}while(i < 10);
}
15
end.
a)
Date de intrare 4 3
Date de ieire
1111
2222
3333
b)
Date de intrare 4 3
Date de ieire
1234
1234
1234
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: a2+b2=c2
19
30) Elaborai un program care va afia toate numerele ntregi pozitive a, b, c, mai
mici ca 20, cu urmtoarea proprietate: (a+b)3=c3
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.
20
Recapitulare
Capitolul
TIPURI STRUCTURATE
Tablouri unidimensionale
23
Tablouri bidimensionale
b.
c.
25
iruri de caractere
Funcii i proceduri de prelucrare a irurilor de caractere
n varianta Pascal
Antet
writeln(s);
readln(s);
LENGTH(S)
CONCAT(s1[,s2,,sn])
POS(Subir,ir)
COPY (irul,
De_La_Care_Poziie,
Cte_Carectere)
INSERT(Ce_Inseram,
In_Care_ir,
De_la_care_Poziie)
DELETE (irul,
De_La_Care_Poziie,
Cte_Carectere)
VAL(ir,
Variabil_Numeric, Cod)
STR(Numr[:m[:n]]; ir)
UpCase(x);
Descriere
extrage la ecran irului s
citete irul de la tastatur n variabila s
Lungimea irului S
Concateneaz irurile S1, S2, Sn. Echivalent cu
S1+S2++Sn.
Obinem poziia apariiei subirului n ir. Dac
rezultatul e 0 rezult c aa subir nu exist n ir.
Obinem un subir, din irul dat, ncepnd de la care
poziie, de lungimea Cte_Carectere.
Se insereaz un subir ntr-un ir, ncepnd cu
poziia indicat.
Din irul dat se exclud de la poziia indicat numrul
indicat de caractere.
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.
Transform numrul n ir de caractere. M i n
precizeaz formatul n ir.
Litera mare corespunztoare literei mici date ca
argument
Exemple:
Funcia sau procedura
POS(ma,Informatica)
POS(in,Informatica)
COPY (Informatica,7,3)
INSERT (m,maa,3)DELETE (Informatica,5,4)
Rezultatul
6
0
ati
mama
Infoica
n varianta C/C++
Antet
puts(sir);
gets(sir);
int strcmp(char *s1, char
*s2);
Descriere
extrage la consol coninutul irului sir
citete caractere de la tastatur n variabila sir
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
26
double atof(sir);
int atoi(sir);
long atol(sir);
itoa(int valoare,sir,int
baza);
ltoa(long valoare,sir,int
baza);
ultoa(unsigned long
valoare,sir,int baza);
similar
cu
strcmp
majuscule
sunt
nesemnificative
similar cu strcmp, dar se compar irurile s1 i s2
pentru cel mult n caractere din fiecare ir
copiaz irul surs s n irul destinaie d i
returneaz adresa irului destinaie
copiaz maxim n caractere de la surs s la
destinaia d i returneaz adresa irului destinaie
returneaz lungimea irului fr a numra
caracterul terminator \0
concateneaz cele dou iruri i returneaz adresa
irului rezultat
convertete un ir ctre tipul double. Dac aceast
conversie eueaz (se ntlnete un caracter
nenumeric), valoarea ntoars este 0
convertete un ir ctre tipul long double. Dac
aceast conversie eueaz, valoarea ntoars este 0
convertete un ir ctre tipul int. Dac aceast
conversie eueaz (se ntlnete un caracter
nenumeric), valoarea ntoars este 0
convertete un ir ctre tipul long. Dac aceasta
conversie eueaz (se ntlnete un caracter
nenumeric), valoarea ntoars este 0.
convertete o valoare de tip int n ir, care este
memorat n variabila sir. baza reine baza de
numeraie ctre care s se fac conversia
convertete o valoare de tip long int n ir, care
este memorat n variabila sir
convertete o valoare de tip unsigned long n ir,
care este memorat in variabila ir
2)
nlocui:
3)
afia:
i.
ii.
iii.
iv.
28
Fiiere
Deosebim dou feluri de fiiere: textuale (cu acces secvenial) i tipizate sau
binare (cu acces direct).
Instruciunile de lucru cu fiierele:
Instruciunea
Declararea n seciunea var
textuale
binare
F:text
F:integer sau
altul oricare tip
n afar de fiier
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
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_deschidere 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 feof(FILE *fp); returneaz o valoare nenul dac s-a ntlnit
sfritul de fiier la ultima operaie de intrare i 0 n caz contrar;
int fclose(FILE *fp); 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 fsetpos(FILE *fp, long int *poz); atribuie indicatorului
valoarea variabilei indicat prin pointerul poz i returneaz valoarea 0 n caz de
succes;
int fseek(FILE *fp, long offset, 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 getc(FILE *fp); returneaz urmtorul caracter citit din fiierul fp
sau EOF dac se ntlnete sfritul fiierului;
int putc(int c, FILE *fp); nscrie caracterul c n fiierul fp, n caz
de eroare returneaz EOF;
char *fgets(char *s, int n, FILE *fp); 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 fputs(char *s, FILE *fp); scrie irul s n fiier, fr caracterul
'\0', n caz de eroare ntoarce valoarea EOF;
31
C++
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
34
35
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
4
4
1
1234
1
12
123
21
123
12
321
1234
1
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.
36
Metode de sortare
Metoda bulelor
k:=n; p:=false;
k=n; p=0;
while (!p){
while p=false do
p=1; l=k; i:=0;
Begin p:=true; l:=k; i:=1;
While(i<=l-1){
While i<=l-1 do
if(a[i]>a[i+1]){
Begin If a[i]>a[i+1] then
begin
x:=a[i];
a[i]:=a[i+1];
x=a[i]; a[i]=a[i+1]; a[i+1]=x;
a[i+1]:=x;
k:=i; p=0;
k:=i; p:=false;
}
end;
i++;
i:=i+1;
};
end;
};
end;
Metoda de selecie
i:=1;
i=0;
while (i<n-1){
while i<=n-1 do
Begin x:=a[i]; l:=i; j:=i+1;
x=a[i]; l=i; j=i+1;
while(j<n){
While j<=n do
if (x>a[j]){x=a[j];l=j;}
Begin if x>a[j] then begin
x:=a[j];
l:=j;
end;
j++;
j:=j+1;
};
end;
k=a[i];
k:=a[i]; a[i]:=a[l];
a[l]:=k; a[i]=a[l];
37
i:=i+1;
end;
a[l]=k;
i++;
};
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;
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++;
}
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.
39
d AB = ( x1 x 2 ) 2 + ( y1 y 2 ) 2
P=
Aria unui triunghi: Aria = P( P a) * ( P b) * ( P c) , unde
a+b+c
2
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.
41
Recapitulare
Capitolul
SUBPROGRAME
45
47
Tablouri i funcii
c)
d)
e)
f)
g)
h)
i)
49
Subprograme recursive
1 1 1
1
+ + + ... +
;
3 8 13
5n 2
g)
1 1 1 1
1
+ + ... + (1) n n .
2 4 8 16
2
50
Recapitulare
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
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 fost odata ca-n povesti
A fost ca niciodata
Din rude mari imparatesti
O prea frumoasa fata
O 1
ca 1
ca-n 1
fata 1
fost 2
frumoasa 1
imparatesti 1
mari 1
niciodata 1
odata 1
povesti 1
prea 1
rude 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
bc
bAaccaa
ac
pe ecran se va afia:
A 65
1
B 66
1
a 97
5
b 98
2
c 99
5
Caracterele care apar in text cu frecventa maxim 5 sunt:
Caracterul cu codul ASCII 97
Caracterul cu codul ASCII 99
54
55
Capitolul
STRUCTURI DINAMICE
Funcia/Procedura
Descriere
Alocarea memoriei n heap pentru o variabil referin legat
i ncrcarea adresei n argumentul p.
Eliberarea memoriei alocate n heap pentru o variabila
referin legat.
Lungimea celui mai mare bloc continuu existent n heap
Lungimea totala a spaiului de memorie disponibil n heap.
New(var p:POINTER);
Dispose(var p:POINTER);
MaxAvail:LONGINT;
MemAvail:LONGINT;
Alocarea memoriei n heap pentru o variabila dinamica de GetMem(VAR p:POINTER;
mrime l si ncrcarea adresei ei n argumentul p.
l:WORD);
Eliberarea memoriei alocate n heap pentru o variabila FreeMem(VAR p:POINTER;
dinamica de mrime l si de adresa memorata n p.
l:WORD);
Memorarea adresei vrfului heap-ului (HeapPtr) n
Mark(VAR p:POINTER);
argumentul p.
Eliberarea memoriei alocate variabilelor dinamice prin apelul
Release(VAR p:POINTER);
precedent al procedurii Mark (depune p n HeapPtr).
57
Capitolul
TEHNICI DE PROGRAMARE
Metoda trierii
(x
xm ) + (y j y m ) .
2
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.
58
Metoda Greedy
59
Metoda Relurii
Desparte i stpnete
4
1)
d jm =
(x
61
xm ) + ( y j y m )
2
Recapitulare
64
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.
65
66
Capitolul
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)
DA
(12-e)(d+a)[c(
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
34
bfbfbfb
67
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
Explicaii
ieire
6
8
112358
Date de intrare Date de
Explicaii
ieire
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
70
Exemplu
arcas.in (desen)
8
25
36
27
47
69
86
72
54
34
arcas.in
5
13
26
23
56
31
arcas.out
11
arcas.out
0
71
Exemplu:
cetati.in
10
21
34
63
66
85
10 3
11 7
12 6
9 11
15 8
cetati.out
5
Explicaie
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.
patrate.out
1
72
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
4
0 0 10 4
5031
-7 4 7 1
0126
mere.out
3
Explicaii
Mrul cu indicele 1 va cdea n orice caz. n
cdere el atinge mrul cu indicele 2 i mrul cu
indicele 4.
74
Capitolul
Normal Shift
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
48
49
50
51
52
53
54
55
56
57
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
41
33
64
35
36
37
94
38
42
40
Ctrl
Tasta
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
`~
-_
=+
[{
]}
\|
;:
' "
,<
.>
/?
Backspace
Tab
Enter
Spaiu
Esc
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
PrintScr
Insert
Home
PageUp
Delete
End
PageDn
75
0,59
0,60
0,61
0,62
0,63
0,64
0,65
0,66
0,67
0,68
0,82
0,71
0,73
0,83
0,79
0,81
96 126
45
95
61
43
91 123
93 125
92 124
59
58
39
34
44
60
46
62
47
63
8
8
9 0,15
13
13
32
32
27
27
0,84
0,85
0,86
0,87
0,88
0,89
0,90
0,91
0,92
0,93
0,5
0,71
0,73
0,7
0,79
0,81
127
10
32
27
0,94
0,95
0,96
0,97
0,98
0,99
0,100
0,101
0,102
0,103
0,114
0,4
0,119
0,132
0,6
0,117
0,118
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
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.
76
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
77
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.
78
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 Xa, 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/
79