Sunteți pe pagina 1din 19

subiecte III intensiv

subiect indicaţii
item
3 O posibilă soluţie citeşte de la tastatură numărul n şi apoi
E_INFO_C_SIII_001
toate numerele din fişier; pentru fiecare dintre ele testează
E_INFO_PASCAL_SIII_001 condiţia impusă, iar dacă aceasta este îndeplinită,a fişează pe
ecran numărul respectiv, în formatul cerut.
4 a) se defineşte subprogramul conform cerinţelor; o prelucrare
E_INFO_C_SIII_001
posibilă presupune parcurgerea tabloului şi contorizarea
E_INFO_PASCAL_SIII_001 elementelor care îndeplinesc condiţia impusă.
b) o posibilă soluţie presupune memorarea numerelor citite
într-un tablou; verificarea proprietăţii impuse se poate face prin
parcurgerea tabloului, numărând pentru fiecare element
numărul apariţiilor acestuia în tablou (prin apeluri ale funcţiei).
Dacă numărul nu respectă condiţia impusă, proprietatea nu
este îndeplinită.
3 O posibilă soluţie presupune citirea numerelor din fişier,
E_INFO_C_SIII_002
memorarea celor nenule într-un tablou care apoi se ordonează
E_INFO_PASCAL_SIII_002 crescător; in final, tabloul ordonat se afişează pe ecran.
4 a) O posibilă soluţie pentru prelucrarea cerută presupune
E_INFO_C_SIII_002
parcurgerea tuturor divizorilor posibili ai lui a, pentru fiecare
E_INFO_PASCAL_SIII_002 divizor găsit determinându-se puterea la care acesta apare în
descompunerea în factori primi; numărul a este împărţit
succesiv la acest divizor. Fiecare putere astfel determinată
este însumată, rezultatul fiind valoarea returnată de funcţie.
b) pentru numărul citit se construieşte oglinditul său şi,
apelând funcţia f, se testează dacă ambele numere sunt prime
(suma exponenţilor este 1).
3 O posibilă soluţie presupune utilizarea unui vector
E_INFO_C_SIII_003
caracteristic, completat pe măsură ce se citesc numerele din
E_INFO_PASCAL_SIII_003 fişier. Vectorul se parcurge începând de la indicele 100 şi se
vor afişa indicii elementelor nenule, de un număr de ori
corespunzător.
4 a) o posibilă soluţie pentru prelucrarea impusă presupune
E_INFO_C_SIII_003
parcurgerea cifrelor numărului, contorizând numărul apariţiilor
E_INFO_PASCAL_SIII_003 cifrei cerute.
b) o posibilă soluţie presupune căutarea tuturor cifrelor de la 9
la 0, şi includerea, de un număr de ori corespunzător, în
numărul cerut, a acelor cifre impare care apar în numărul dat.
3 O posibilă soluţie presupune utilizarea unui vector
E_INFO_C_SIII_004
caracteristic, completat pe măsură ce se citesc numerele din
E_INFO_PASCAL_SIII_004 fişier. Vectorul se parcurge de la dreapta la stânga, începând
de la indicele 99 şi se vor afişa indicii elementelor nenule, de
un număr de ori corespunzător.
4 a) o posibilă soluţie pentru prelucrarea impusă presupune
E_INFO_C_SIII_004
parcurgerea cifrelor numărului, contorizând numărul apariţiilor
E_INFO_PASCAL_SIII_004 cifrei cerute.
b) o posibilă soluţie presupune căutarea tuturor cifrelor de la 1
la 9, şi includerea, de un număr de ori corespunzător, în
numărul cerut, a acelor cifre impare care apar în numărul dat.
3 O solutie posibilă pentru prelucrarea cerută presupune
E_INFO_C_SIII_005
îndepărtarea din numărul dat a câte unei cifre (a unităţilor) şi
E_INFO_PASCAL_SIII_005 scrierea în fişierul dat a numerelor obţinute, în formatul cerut.
4 a) o posibilă soluţie a prelucrării cerute presupune testarea
E_INFO_C_SIII_005
divizorilor posibili ai numărului a şi returnarea celui mai mic
E_INFO_PASCAL_SIII_005 dintre aceştia, care îl divide pe a.
b) o posibilă soluţie presupune citirea numerelor şi testarea
proprietătii cerute pentru fiecare dintre ele (un număr este prim
dacă el este egal cu cel mai mic divizor prim al său).
3. a) Se va scrie antetul subprogramului s1
E_INFO_C_SIII_006
b) Se va scrie definiţia completă a subprogramului s2. Se va
E_INFO_PASCAL_SIII_006
parcurge secvenţa delimitată de indicii p şi q
determinându-se poziţia primului element divizibil cu 5.
Funcţia va returna poziţia acestuia, dacă există, sau -1 în
caz contrar.
c) O rezolvare posibilă citeşte de la tastatură valoarea lui n şi
elementele tabloului unidimensional, determină folosind
apeluri ale lui s2 primul element divizibil cu 5 şi ultimul
element divizibil cu 5 şi interschimbă valorile elementelor
găsite, tabloul astfel transformat va fi afişat in fişierul
BAC.TXT în formatul cerut. Dacă nu există 2 elemente
divizibile cu 5 se va afişa în fişier valoarea 0.
4. O rezolvare posibilă citeşte de la tastatură valoarea lui n şi
E_INFO_C_SIII_007
elementele tabloului unidimensional. Se parcurg simultan
E_INFO_PASCAL_SIII_007 elementele zonei I si III interschimbându-se elementele
corespunzătoare. Se afişează apoi elementele tabloului în
formatul cerut.
5. a) Se va scrie antetul subprogramului p alegând
E_INFO_C_SIII_007
corespunzător tipul de subprogram, tipul parametrilor şi modul
E_INFO_PASCAL_SIII_007 de transfer al acestora. Se vor folosi identificatorii de
subprogram şi de parametri formali specificaţi în enunţ.
b) Prin apeluri ale lui p se determină cel mai mare număr mai
mare sau egal cu n, se afişează în fişierul Numere.txt acesta
şi apoi se scade din n valorea găsită. Procedeul se repetă
până când n devine egal cu 0.
3. O rezolvare posibilă citeşte de la tastatură valoarea lui n şi
E_INFO_C_SIII_008
afişează în fişierul BAC.TXT pe fiecare linie i, primele i numere
E_INFO_PASCAL_SIII_008 pare, pentru valori ale lui i de la 1 la n.
4. a) Se scrie numai antetul fiecărui subprogram alegând
E_INFO_C_SIII_008
corespunzător tipul de subprogram, tipul parametrilor şi modul
E_INFO_PASCAL_SIII_008 de transfer al acestora. Se vor folosi identificatorii de
subprogram şi de parametri formali specificaţi în enunţ.
b) O rezolvare de punctaj maxim implică un anumit grad de
creativitate din partea concurentului. Se obţine punctaj parţial
pentru o soluţie ce analizează fiecare cifră daca este egală cu
0 şi contorizează numărul acestora.
3. a) Se scrie numai antetul subprogramului s2 alegând
E_INFO_C_SIII_009
corespunzător tipul de subprogram, tipul parametrilor şi modul
E_INFO_PASCAL_SIII_009 de transfer al acestora. Se vor folosi identificatorii de
subprogram şi de parametri formali specificaţi în enunţ.
b) Se va scrie definiţia completă a subprogramului s1.
c) O rezolvare de punctaj maxim implică un anumit grad de
creativitate din partea concurentului. Se obţine punctaj parţial
pentru o soluţie ce plasează elementele pare la sfârşitul
tabloului fără a folosi apeluri ale subprogramelor s1 şi s2.
3. O rezolvare posibilă citeşte de la tastatură valoarea lui n şi
E_INFO_C_SIII_010
elementele tabloului unidimensional. Se parcurg elementele
E_INFO_PASCAL_SIII_010 tabloului şi se determină sumele cerute, afişându-se în
formatul precizat.
4. O rezolvare de punctaj maxim implică un anumit grad de
E_INFO_C_SIII_010
creativitate din partea concurentului. Se obţine punctaj parţial
E_INFO_PASCAL_SIII_010 pentru o soluţie ce determină de fiecare dată pentru fiecare
număr citit din fişier cea mai mare putere a lui doi mai mică
decât acel număr.
E_INFO_C_SIII_011 3. Se citesc valorile de la tastatură, apoi pentru fiecare indice de
la 1 la n se va atribui celei de a i-a valoare din vectorul rezultat
E_INFO_Pascal_SIII_011
valoarea returnată de către subprogramul P, apelat pentru k=i.
E_INFO_C_SIII_011 4. Se citesc pe rând numerele de la tastatură, iar dacă numărul
citit este prim se va incrementa un control a cărui valoare este
E_INFO_Pascal_SIII_011
afişată la final pe ecran.
E_INFO_C_SIII_012 3. Se citesc primele m valori într-un vector. Se citeşte apoi câte o
valoare din a doua secvenţă şi folosind un algoritm
E_INFO_Pascal_SIII_012
asemănător celui de interclasare se determină valorile care
apar doar în una dintre secvenţe.
E_INFO_C_SIII_012 4. Se citeşte numărul de la tastatură şi apoi se numără câte din
cifrele de la 0 la 9 apar în scrierea numărului. Pentru aceasta
E_INFO_Pascal_SIII_012
se va apela subprogramul de la punctul a).
E_INFO_C_SIII_013 3. Se folosesc două cicluri cu număr cunoscut de paşi, primul
parcurgând pe rând grupele, iar al doilea ciclu parcurgând
E_INFO_Pascal_SIII_013
elementele din fiecare grupă. La fiecare pas se va testa dacă
au fost afişate suficiente numere, caz în care algoritmul se va
termina.
Se citeşte pe rând câte un număr din fişierul de intrare, se
E_INFO_C_SIII_013 4.
elimină apoi cifrele impare din acesta, folosind apeluri ale
E_INFO_Pascal_SIII_013 subprogramului de la punctul a). Dacă numărul rezultat în
urma acestor transformări este nenul se scrie în fişierul de
ieşire.
Se citeşte pe rând câte un număr din fişierul de intrare. Se
E_INFO_C_SIII_014 3.
afişează apoi pe ecran, iar dacă pe linia curentă s-au scris
E_INFO_Pascal_SIII_014 deja 5 valori se trece la linie nouă.
Se parcurg toate numerele impare din intervalul [11,99]. Dacă
E_INFO_C_SIII_014 4.
atât numărul curent cât şi inversul acestuia sunt numere
E_INFO_Pascal_SIII_014 prime, numărul va fi afişat pe ecran.
Se citesc numere până la citirea numărului 0. Pentru fiecare
E_INFO_C_SIII_015 3.
număr se extrag cifrele şi se verifică daca cifra curentă este 5.
E_INFO_Pascal_SIII_015 Dacă da, este incrementat un contor a cărui valoare se va
afişa în final pe ecran.
Se citesc pe rând numerele din fişierul de intrare. Dacă acesta
E_INFO_C_SIII_015 4.
este impar se va reţine valoarea sa într-o variabilă. Valoarea
E_INFO_Pascal_SIII_015 acestei variabile va fi afişată pe ecran la final.
E_INFO_C_SIII_016 3. Subprogramul determina numărul cerut parcurgând toate
elementele tabloului unidimensional şi contorizând valorile
E_INFO_PASCAL_SIII_016
care respectă condiţia impusă. După afişarea numărului de
elemente divizibile cu 13 se parcurge din nou tabloul
unidimensional pentru determinarea şi afişarea poziţiei pe
care se găsesc aceste elemente.
E_INFO_C_SIII_016 4. Subprogramul extrage cifrele numărului n şi le contorizează
pe cele egale cu k. În programul principal se citesc pe rând
E_INFO_PASCAL_SIII_016
valorile din fişier, până când se ajunge la sfârşitul fişierului şi
se apelează, pentru fiecare număr citit, subprogramul cifrak,
cu valoarea 3 pe poziţia celui de-al doilea parametru.
E_INFO_C_SIII_017 3. Subprogramul poate determina numărul cerut, parcurgând
toate elementele vectorului şi contorizând acele valori care
E_INFO_PASCAL_SIII_017
respectă condiţia impusă.
E_INFO_C_SIII_017 4. Se formează un vector în care primul element este egal cu 0,
iar restul elementelor sunt completate cu numerele din fişier.
E_INFO_PASCAL_SIII_017
Apoi se afişează rezultatul dat de funcţia interval, micşorat cu
1.
E_INFO_C_SIII_018 3. Subprogramul poate determina numărul cerut, calculând
media aritmetică dintre primul şi ultimul element ale tabloului
E_INFO_PASCAL_SIII_018
unidimensional şi contorizând apoi acele valori ale tabloului
care respectă condiţia impusă.
E_INFO_C_SIII_018 4. Se formează un vector în care primul element este egal cu 0,
iar restul elementelor sunt completate cu numerele din fişier.
E_INFO_PASCAL_SIII_018
Apoi se afişează rezultatul dat de funcţia count.
E_INFO_C_SIII_019 3. O posibilă rezolvare foloseşte principiul sortării unui vector prin
metoda bulelor, interschimbând 2 elemente vecine, dacă un
E_INFO_PASCAL_SIII_019
element negativ se află imediat după unul pozitiv.
E_INFO_C_SIII_019 4. Se memorează pe rând, în vectorul a, cele m numere de pe
câte o linie a fişierului, iar apoi apelând subprogramul
E_INFO_PASCAL_SIII_019
aranjare se aduc elementele negative la începutul vectorului.
Se vor scrie elementele vectorului în fişierul nr2.txt,
parcurgând vectorul de la sfârşit la început.
E_INFO_C_SIII_020 3. O posibilă rezolvare foloseşte principiul sortării unui vector prin
metoda bulelor, interschimbând 2 elemente vecine, dacă un
E_INFO_PASCAL_SIII_020
element nenul se află imediat după unul nul.
E_INFO_C_SIII_020 4. Se memorează pe rând, în vectorul a, cele m numere de pe
câte o linie a fişierului, iar apoi apelând subprogramul nule se
E_INFO_PASCAL_SIII_020
aduc elementele nenule la începutul vectorului. Se vor scrie
elementele vectorului în fişierul nr2.txt, parcurgând vectorul
de la sfârşit la început.
E_INFO_C_SIII_021 3. p1=n; cât timp p1 nu e prim p1=p1-1
p2=n; cât timp p2 nu e prim p2=p2+1
E_INFO_PASCAL_SIII_021
rezultatul = p2-p1
E_INFO_C_SIII_021 4a. s=0, pt.i=1,k s=s+xi;
smax=s; imax=1
E_INFO_PASCAL_SIII_021
pt,. i=k+1,n-k+1
s=s+xi-xi-k
dacă s>smax smax=s; imax=i
scrie imax
E_INFO_C_SIII_021 4b. Algoritmul propus calculează suma maximă printr-o simgură
parcurgere a şirului, reţinând suma maximă şi indicele primului
E_INFO_PASCAL_SIII_021
termen al acestei sume.La calculul unei sume noi se adună
doar un termen şi se scade unul din suma precedentă
E_INFO_C_SIII_022 3a. Se calculează exponentul lui 5 din descompunerea în factori
primi a lui n!. Acesta este [n/5]+[n/52]+[n/53]+...
E_INFO_PASCAL_SIII_022
E_INFO_C_SIII_022 3b. n=5;
cât timp nz(n) < k n=n+5
E_INFO_PASCAL_SIII_022
E_INFO_C_SIII_022 4. p=1
cât timp p*2<=b p=p*2
E_INFO_PASCAL_SIII_022
dacă p>=a scrie p altfel scrie 0
E_INFO_C_SIII_023 3a. aux=x[1]
pt. i=1,n-1 x[i]=x[i+1]
E_INFO_PASCAL_SIII_023
x[n]=aux
E_INFO_C_SIII_023 3b. shift(n,x) pune pe poziţia n pe x[1], iar pe prima poziţie pe x[2];
shift(n-1,x) pune pe poziţia n-2 pe x[2]
E_INFO_PASCAL_SIII_023
apoi shift(n-2,x), ...
E_INFO_C_SIII_023 4. citeşte n; max=32002
pt. i=1,n
E_INFO_PASCAL_SIII_023
citeşte a,b
dacă b-a+1>max max=b-a+1; amax=a; bmax=b
altfel dacă b-a+1=max şi b<bmax bmax=b
scrie amax, bmax
E_INFO_C_SIII_024 3a. Subrogramul are 5 parametri: doi parametri de intrare n şi x şi
3 parametri de ieşire (de tip referinţă) maxi, mini, sum.
E_INFO_PASCAL_SIII_024
Minimul, maximul şi suma se calculează printr-o parcurgere a
şirului x
E_INFO_C_SIII_024 3b. După citirea datelor se apelează p(n,x,mini,maxi,sum) şi se
calculează media cu (sum-mini-maxi)/(n-2)
E_INFO_PASCAL_SIII_024
E_INFO_C_SIII_024 4. După citirea datelor cu memorarea tabloului într-un vector x şi
se iniţializează min cu b+1 Se parcurge vectorul, la găsirea
E_INFO_PASCAL_SIII_024
unui termen din intervalul [a,b] se compară cu min, iar dacă e
mai mic se memorează noua valoare. La sfârşit, dacă
min=b+1 se afişează NU, altfel se afişează min.
E_INFO_C_SIII_025 3. Algoritmul: par=11111; impar=-1;
pt. i=1,n
E_INFO_PASCAL_SIII_025
dacă ai mod 2 = 0 şi ai<par par=ai; ipar=1
dacă ai mod 2 =1 şi ai>impar impar=ai; iimpar=i
dacă par<11111 şi impar>-1
aux=aipar; aipar=aiimpar; aiimpar=aux
E_INFO_C_SIII_025 4a. numarator=x; numitor=1
E_INFO_PASCAL_SIII_025 cât timp numarator ≠ [numărător]
numitor=numitor*10; numărator=numarator*10
d=cmmdc(numarator, numitor)
scrie numarator/d, numitor/d
E_INFO_C_SIII_025 4b. Se porneşte de la fracţia x/1 şi prin max. 7 înmulţiri se obţin
două numere întregi. Simplificarea fracţiei obţinute se face
E_INFO_PASCAL_SIII_025
calculând cmmdc cu algoritmul lui Euclid.
Subprogramul sterge realizează deplasarea celor n-i
E_INFO_C_SIII_026 4.
elemente aflate în vector, după elementul vi. Numărul de
E_INFO_PASCAL_SIII_026 elemente se micşorează cu o unitate.
În programul principal se parcurge tabloul, şi, pentru fiecare
element vi,ştergem elementul v+1, dacă vi=vi+1.Deplasarea în
vector se face doar atunci când vi≠vi+1. Rămân astfel doar
elemente distincte.
Se determină a primul număr real de pe linia a doua din fişier
E_INFO_C_SIII_027 4.
şi b ultimul număr real de pe această linie.
E_INFO_PASCAL_SIII_027 Numărul x este egal cu  a  iar numărul y cu cu b.
Algoritmul este eficient din punct de vedere al memoriei
utilizate (complexitate O(1)) întrucât utilizeză un număr
constant de variabile simple (nestructurate), numărul acestora
nedepinzând de numărul de numere din fişier.
Pentru a verifica dacă numărul x este „aproape prim”,
E_INFO_C_SIII_028 4.
calculăm primul său divizor y mai mare decât 1 şi determinăm
E_INFO_PASCAL_SIII_028 z=x/y. Numărul z trebuie să fie prim şi diferit de y. Se observă
că un număr z este prim dacă prim(z)=z.
Citim şirul de valori şi afişăm pe ecran numerele „aproape
prime”.
Pentru a verifica dacă tabloul A se poate reduce la tabloul B
E_INFO_C_SIII_029 4.
ne poziţionăm pe primele poziţii în cei doi vectori. Dacă i este
E_INFO_PASCAL_SIII_029 poziţia curentă din vectorul A şi j poziţia curentă din vectorul B,
atunci, la fiecare pas calculăm suma secvenţei care care
începe pe locul i cât timp această sumă este strict mai mică
decât B[j]. Dacă suma secvenţei este egală cu B[j] atunci
trecem la elementul următor în vectorul B şi la începutul
următoarei secvenţe în vectorul A.
Răspunsul DA va fi afişat atunci când parcurgerea în
întregime a celor doi vectori se încheie simultan.
Pentru determinarea numărului de valori distincte ,nr,
E_INFO_C_SIII_030 4.
iniţializăm valoarea unei variabilei p cu primul număr real din
E_INFO_PASCAL_SIII_030 fişier. Această variabilă se va modifica (p=x)atunci când
numărul x citit din fişier este diferit de p. Variabila nr se
măreşte cu o unitate de fiecare dată când se modifică
valoarea variabilei p.
E_INFO_C_SIII_031 2. Se urmăresc apelurile recursive, determinându-se valoarea
returnată de subprogram.
E_INFO_PASCAL_SIII_031
E_INFO_C_SIII_031 3. Se ordonează crescător doar elementele tabloului care respectă
condiţia din enunţ.
E_INFO_PASCAL_SIII_031
E_INFO_C_SIII_031 4. Se citesc datele din fişieriar şi se calculează capetele
segmentului de intersecţie. Acesta va fi detrminat de valoarea
E_INFO_PASCAL_SIII_031
maximă a capetelor din stânga a tuturor segmentelor date şi
valorarea minimă a capetelor din dreapta.
E_INFO_C_SIII_032 2. Se urmăresc apelurile recursive, determinându-se valoarea
afişată
E_INFO_PASCAL_SIII_032
de subprogram.
E_INFO_C_SIII_032 3. Se parcurg numerele naturale din intervalul [x,y] ;I se vor afi;a
pe ecran doar cele care îndeplinesc condiţia specificată în
E_INFO_PASCAL_SIII_032
enunţ.

E_INFO_C_SIII_032 4. O rezolvare de punctaj maxim implică un anumit grad de


creativitate din partea concurentului. Se obţine punctaj parţial
E_INFO_PASCAL_SIII_032
pentru o soluţie care memorează numerele citite din fişier într-
un tablou, apoi parcurge tabloul şi determină cele mai mari două
valori care respectă condiţia săpecificată în enunţ.
E_INFO_C_SIII_033 2. Se urmăresc apelurile subprogramului în funcţie de parametrii
specificaţi.
E_INFO_PASCAL_SIII_033
E_INFO_C_SIII_033 3. O rezolvare posibilă constă în parcurgerea elementelor tabloului
şi verificarea condiţiilor enunţate, pentru fiacre componentă a
E_INFO_PASCAL_SIII_033
tabloului.

E_INFO_C_SIII_033 4. O rezolvare de punctaj maxim implică un anumit grad de


creativitate din partea concurentului. Se obţine punctaj parţial
E_INFO_PASCAL_SIII_033
pentru o rezolvare clasică care memorează într-un vector datele
din fişier şi calculează suma celor mai mari m elemente ale
vectorului.
E_INFO_C_SIII_034 2. Se urmăresc apelurile recursive, determinându-se valoarea
returnată de subprogram.
E_INFO_PASCAL_SIII_034

E_INFO_C_SIII_034 3. Se descompune numărul în cifre şi se verifică dacă fiecare cifră


îndeplineşte condiţia din enunţ.
E_INFO_PASCAL_SIII_034
Se citesc datele din fişier şi se vor afişa pe ecran valorile din
fişier care sunt mai mari decât 100 şi au toate cifrele impare.

E_INFO_C_SIII_034 4. Se citesc de la tastatură datele specificate şi se calculează


lungimea secvenţelor de valori pare. Cea mai mare lungime a
E_INFO_PASCAL_SIII_034
unei secvenţe de valori pare se va afişa pe ecran.
E_INFO_C_SIII_035 2. Se urmăresc schimbările poziţiilor componentelor vectorului.
E_INFO_PASCAL_SIII_035
E_INFO_C_SIII_035 3. O posibilă variantă de rezolvare presupune citirea datelor de la
tastatură şi memorarea într-un vector, în fiecare compunentă a
E_INFO_PASCAL_SIII_035
sa a sumei divizorilor unui număr introdus de la tastatură.
Vectorul astfel construit se ordonează crescător şi se afişează
pe ecran valorile componentelor sale.
E_INFO_C_SIII_035 4. O posibilă rezolvare constă în citirea din fişier a datelor
specificate şi afişarea pe ecran a valorilor care îndeplinesc
E_INFO_PASCAL_SIII_035
condiţiile specificate de problemă.

E_INFO_C_SIII_036 2. Din exemplu se deduce modalitatea de generare, şi se


adaptează pentru valoarea cerută.
E_INFO_PASCAL_SIII_036
E_INFO_C_SIII_036 3. Subprogramul determină ultima cifră pară din număr. Se i-au
cifrele numărului pe rând, începând cu cifra unităţilor şi se
E_INFO_PASCAL_SIII_036
verifică dacă acestea respectă condiţia enunţului.
E_INFO_C_SIII_036 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate din partea concurentului. Se obţine punctaj parţial
E_INFO_PASCAL_SIII_036
pentru o soluţie care memorează într-un vector, pentru fiecare
număr citit din fişier cifra pară, apoi sortează descrescător,
elementele acestuia.
E_INFO_C_SIII_037 2. Se urmăresc apelurile recursive, determinându-se valoarea
afişată.
E_INFO_PASCAL_SIII_037
E_INFO_C_SIII_037 3. Se declară un tablou unidimensional cu cel mult 100
elemente. O rezolvare posibilă citeşte valorile lui n respectiv k
E_INFO_PASCAL_SIII_037
şi toate elementele tabloului, apoi parcurge tabloul permutând
elementele acestuia conform enunţului.
E_INFO_C_SIII_037 4. Se scrie antetul subprogramului, urmărind cerinţa.
E_INFO_PASCAL_SIII_037 O soluţie posibilă citeşte cele n elemente din fişierul bac.in şi
le reţine într-un tablou unidimensional. Se parcurge vectorul şi
prin apeluri ale funcţiei se determină poziţia primului element
care respectă condiţia din enunţ. În mod similar se parcurge
şirul de la sfârsit şi se determină şi al doilea element cerut.
E_INFO_C_SIII_038 2. Se urmăresc apelurile recursive, determinându-se valoarea
afişată.
E_INFO_PASCAL_SIII_038
E_INFO_C_SIII_038 3. Subprogramul adaugă la numărul pe care îl formăm cifre ale
numărului dat care respectă proprietatea din enunţ.
E_INFO_PASCAL_SIII_038
E_INFO_C_SIII_038 4. Se scrie definiţia completă a subprogramului, urmărind
cerinţa.
E_INFO_PASCAL_SIII_038
O soluţie posibilă citeşte cele n elemente din fişierul bac.in şi
le reţine într-un tablou unidimensional. Se sortează vectorul
utilizând apeluri ale subprogramului.
E_INFO_C_SIII_039 2. Se urmăresc apelurile recursive, determinându-se valoarea
afişată.
E_INFO_PASCAL_SIII_039
E_INFO_C_SIII_039 3. O soluţie posibilă citeşte cele n elemente din fişierul bac.in şi
le reţine într-un tablou unidimensional. Se parcurge vectorul şi
E_INFO_PASCAL_SIII_039
se compară două câte douâ elementele pare pentru a verifica
dacă sunt în ordine crescătoare.
E_INFO_C_SIII_039 4. Se scrie antetul subprogramului, urmărind cerinţa.
E_INFO_PASCAL_SIII_039 Se citeşte numărul, se elimină câte o cifră şi pentru fiecare
număr astfel determinat se apelează funcţia. Se afişează
acele valori pentru care este respectată condiţia din enunţ.
E_INFO_C_SIII_040 2. Se urmăresc apelurile recursive, determinându-se valoarea
afişată.
E_INFO_PASCAL_SIII_040
E_INFO_C_SIII_040 3. O soluţie posibilă citeşte cele n elemente din fişierul bac.in şi
le reţine într-un tablou unidimensional. Se parcurge vectorul şi
E_INFO_PASCAL_SIII_040
se compară două câte douâ elementele pare pentru a verifica
dacă sunt în ordine crescătoare şi se compară două câte douâ
elementele impare pentru a verifica dacă sunt în ordine
descrescătoare.
E_INFO_C_SIII_040 4. Se scrie antetul subprogramelor, urmărind cerinţa.
E_INFO_PASCAL_SIII_040 Se citeşte numărul n. Pentru fiecare număr natural mai mic
sau egal cu n se apelează subprogramele corespunzător
enunţului. Se afişează numerele care respectă proprietatea
cerută.
E_INFO_C_SIII_041 3. Subprogramul poate verifica dacǎ vectorul respectǎ
proprietatea cerutǎ prin verificarea unicitǎţii elementelor şi prin
E_INFO_PASCAL_SIII_041
numararea vecinilor ce au diferenţa în modul egalǎ cu 1.
E_INFO_C_SIII_041 3. Subprogramul poate determina numărul cerut parcurgând toţi
divizorii posibili ai celor trei numere şi contorizându-i pe cei
E_INFO_PASCAL_SIII_041
care respectă condiţia impusă.
E_INFO_C_SIII_041 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate din partea concurentului. Elementul maxim cât cel
E_INFO_PASCAL_SIII_041
minim trebuie sa se determine la o singurǎ parcurgere a
fişierului fǎrǎ a mai utiliza tipul tablou.
E_INFO_C_SIII_042 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate din partea concurentului. Elementele unice trebuie
E_INFO_PASCAL_SIII_042
determinate la o singurǎ parcurgere a fişierului.
E_INFO_C_SIII_043 3. Se declară un vector de cel puţin 99 de elemente. O rezolvare
posibilă citeşte valorea n iar apoi elementele vectorului. Se
E_INFO_PASCAL_SIII_043
calculeazǎ suma elementelor impare.
E_INFO_C_SIII_043 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate din partea concurentului. Elementul maxim cât şi
E_INFO_PASCAL_SIII_043
numarul de apariţii ale acestuia trebuie sa se determine la o
singurǎ parcurgere a fişierului fǎrǎ a mai utiliza tipul tablou.
E_INFO_C_SIII_044 3. Se declară un vector de cel puţin 99 de elemente. O rezolvare
posibilă citeşte valorea n iar apoi elementele vectorului. Se
E_INFO_PASCAL_SIII_044
calculeazǎ numǎrul elementelor pǎtrate perfecte.
E_INFO_C_SIII_044 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate din partea concurentului. Numerele ce apar de cel
E_INFO_PASCAL_SIII_044
puţin douǎ ori trebuie determinate la o singurǎ parcurgere a
fişierului. Se poate utiliza un vector caracteristic.
E_INFO_C_SIII_045 3. Se declară un vector de cel puţin 99 de elemente. O rezolvare
posibilă citeşte valorea n iar apoi elementele vectorului. Se
E_INFO_PASCAL_SIII_045
numǎrǎ apoi de câte ori apare fiecare element şi se afişeazǎ
elementele ce apar o singurǎ datǎ.
E_INFO_C_SIII_045 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate din partea concurentului. Numerelor trebuie
E_INFO_PASCAL_SIII_045
sortate la o singurǎ parcurgere a fişierului. Se poate utiliza un
vector caracteristic.
E_INFO_C_SIII_046 2. Se urmăresc apelurile recursive, determinându-se valoarea
afişată.
E_INFO_PASCAL_SIII_046
E_INFO_C_SIII_046 3. Se citeşte de la tastatură k, din fişier n. Pentru fiecare număr,
nr, citit din fişier, se calculează numărul de divizori (se poate
E_INFO_PASCAL_SIII_046
folosi un subprogram) şi acesta se compară cu k. Dacă este
cel puţin egal cu k, se trece numărul curent nr în vector,
pentru care indicele, iniţial 0, se incrementează.
E_INFO_C_SIII_046 4. a) Primul parametru, nr, este transmis prin valare, ceilalţi doi,
nc şi sc, prin referinţă.
E_INFO_PASCAL_SIII_046
b) Se apelează subprogramul cifre, se caută o cifră c din
număr care să verifice condiţia cerută (c = sc / nc)
E_INFO_C_SIII_047 3. Se citeşte de la tastatură k, din fişier n. Pentru fiecare număr,
nr, citit din fişier, se caută o cifră care să fie egală cu k.
E_INFO_PASCAL_SIII_047
E_INFO_C_SIII_047 4. a) Primul parametru, nr, este transmis prin valare, al doilea, s,
prin referinţă.
E_INFO_PASCAL_SIII_047
b) Se citeşte n. Se iniţializează o variabilă max cu 0. Se
citeşte fiecare număr nr dintre cele n, se compară valoarea
furnizată la apelul subprogramului cif cu max.
E_INFO_C_SIII_048 3. a) Parametri se transmit prin valoare. Rezultatul este întreg.
E_INFO_PASCAL_SIII_048 b) Se citesc a, b, n. Dacă a şi b nu formează interval se
interschimbă. Se parcurge intervalul [a,b]. Se determină cel
mai mare divizor comun dintre fiecare număr din interval şi n.
Se compară cu 1. Se formează vectorul.
E_INFO_C_SIII_048 4. Pentru fiecare număr nr, citit dintre cele n, se determină
frecvenţa de apariţie. Se poate folosi un vector. (v[nr]=f_ap
E_INFO_PASCAL_SIII_048
înseamnă că nr apare de f_ap ori). Se afişează elementele
din acest vector care sunt egale cu 1.
E_INFO_C_SIII_049 3. Se citesc de la tastatură a, b şi n. Dacă a şi b nu formează
interval se interschimbă. Se parcurge intervalul [a,b]. Se caută
E_INFO_PASCAL_SIII_049
multiplii lui n (restul împărţirii să fie 0). Se formează vectorul.
E_INFO_C_SIII_049 4. a) Primul parametru se transmite prin valoare, al doilea prin
refrinţă.
E_INFO_PASCAL_SIII_049
b) Se inţializează o variabilă max cu 0. Pentru fiecare număr,
nr, citit din fişier, se compară cifra maximă furnizată la apelul
cmax cu max.
E_INFO_C_SIII_050 3. a) Ambii parametri se transmit prin valoare, iar rezultatul este
întreg.
E_INFO_PASCAL_SIII_050
Se compară restul împărţirii lui x la y cu 0.
b) Se citesc de la tastatură a, b şi n. Dacă a şi b nu formează
interval se interschimbă. Se parcurge intervalul [a,b]. Se caută
divizorii lui n prin apel div. Se formează vectorul.
E_INFO_C_SIII_050 4. Se citeşte n din fişier. Pentru fiecare număr nr, citit dintre cele
n, se determină frecvenţa de apariţie. Se poate folosi un
E_INFO_PASCAL_SIII_050
vector. (v[nr]=f_ap înseamnă că nr apare de f_ap ori). Se
afişează elementele din acest vector care sunt mai mari decât
1.
E_INFO_C_SIII_051 3 a) se cauta primul factor prim al numarului a
E_INFO_PASCAL_SIII_051

E_INFO_C_SIII_051 4 O posibilă rezolvare presupune construirea expresiei cerute pe


E_INFO_PASCAL_SIII_051 măsura citirii coeficienţilor. Puterea lui x se actualizează la
fiecare pas.
E_INFO_C_SIII_052 3a se contorizeaza intr-un vector f cu 10 elemente aparitiile fiecarei
E_INFO_PASCAL_SIII_052 cifre in numar. Cifrele sunt distincte daca in vectorul f
elementele sunt mai mici decat 2.

E_INFO_C_SIII_052 4 Se ordoneaza elementele vectorului si apoi se verifica daca


E_INFO_PASCAL_SIII_052 formeaza o progresie aritmetica.

E_INFO_C_SIII_053 3 b) Pentru perechi de elemente consecutive se verifica daca


E_INFO_PASCAL_SIII_053 cmmdc este 1.

E_INFO_C_SIII_054 3 a) Se pun cifrele numarului intr-un vector, se ordoneaza


E_INFO_PASCAL_SIII_054 crescator si se formeaza noul numar

E_INFO_C_SIII_054 4 Se numara cate triplete satisfac conditia: v[i]=v[i-1]+v[i+1]


E_INFO_PASCAL_SIII_054

E_INFO_C_SIII_056 3. Se citesc numerele din fişier, până la sfârşitul acestuia şi se


afişează pe ecran numerele pare pe măsură ce sunt citite. Nu
E_INFO_PASCAL_SIII_056
este necesară folosirea unui tablou, numerele putând fi
prelucrate pe măsură ce sunt citite.
E_INFO_C_SIII_055 3 O soluţie posibilă presupune citirea tuturor numerelor din fişier
şi testarea condiţiei impuse; numărul minim returnat de funcţia
E_INFO_PASCAL_SIII_055
cerută este chiar numărul însuşi, dacă este respectată
condiţia.
E_INFO_C_SIII_055 4 O soluţie posibilă citeşte numerele date şi construieşte în
memorie cele două tablouri, apoi pe al treilea, pe baza relaţiei
E_INFO_PASCAL_SIII_055
date.
E_INFO_C_SIII_057 3. Se citesc numerele din fişier până la sfârşitul acestuia, se reţin
într-un vector şi apoi se construiesc şi se afişează toate
E_INFO_PASCAL_SIII_057
sumele cerute (nu este necesar ca acestea să fie la rândul lor
reţinute într-un vector).
E_INFO_C_SIII_058 3. Se citesc numerele din fişier, până la sfârşitul acestuia. Se
păstrează (fiecare fiind reţinut în altă variabilă) cele mai mici 2
E_INFO_PASCAL_SIII_058
numere găsite până la ultima citire. Se compară ultimul număr
citit cu cele 2 variabile şi, dacă este cazul se modifică valorile
acestora. O altă variantă de rezolvare, mai puţin eficientă, se
bazează pe un vector în care sunt reţinute toate numerele
citite, apoi vectorul este ordonat crescător şi se afişează
primele 2 componente.
E_INFO_C_SIII_059 3. Se citesc numerele din fişier, până la sfârşitul acestuia. Se
păstrează (fiecare fiind reţinut în altă variabilă) cele mai mici 2
E_INFO_PASCAL_SIII_059
numere găsite până la ultima citire. Se compară ultimul număr
citit cu cele 2 variabile şi, dacă este cazul se modifică valorile
acestora. O altă variantă de rezolvare, mai puţin eficientă, se
bazează pe un vector în care sunt reţinute toate numerele
citite, apoi vectorul este ordonat descrescător şi se afişează
ultima cifră a produsului primelor 2 componente.
E_INFO_C_SIII_061 a) o posibilitate de implementare a subprogramului cifra
3
E_INFO_PASCAL_SIII_061 utilizează funcţii standard pe numere întregi şi operatorul
aritmetic de aflare a restului împârţirii a 2 numere întregi.
b) programul citeşte din fişierul text câte o pereche de
numere reale şi calculează diferenţa dintre partea
întreagă a celor două numere prin apeluri ale funcţiei
cifra. Se va avea în vedere şi situaţia în care unul dintre
numerele citite este 10.

E_INFO_C_SIII_062 a) O soluţie posibilă utilizează un vector a0,a1,...a99


3
E_INFO_PASCAL_SIII_062 iniţializat cu zero. Un element a[i] va memora valoarea 1
la citirea din fişier a numărului i. Rezultatele vor fi afişate
prin parcurgerea succesivă a vectorului de la primul la
ultimul element, pentru numerele impare şi apoi în ordine
inversă pentru numerele pare.

E_INFO_C_SIII_063 a) o posibilitate de implementare a subprogramului verif


3
E_INFO_PASCAL_SIII_063 se bazează pe extragerea cifrelor numărului într-un vector
şi compararea tuturor secvenţelor de 3 cifre alăturate.
b) programul citeşte din fişierul text câte un număr
natural cu exact 6 cifre, extrage primele 3 cifre ale
numărului prin împărţire la 1000 şi apelează funcţia verif.

E_INFO_C_SIII_064 O posibilitate de implementare a subprogramului diviz


3
E_INFO_PASCAL_SIII_064 utilizează două structuri for imbricate pentru obţinerea
perechilor de numere şi apoi verificarea condiţiilor de
divizibilitate.

E_INFO_C_SIII_064 Programul realizează prelucrarea cerută citind pe rând din


4
E_INFO_PASCAL_SIII_064 fişier câte un număr pe care îl compară cu cel citit
anterior. Dacă două numere citite consecutiv sunt în
ordinea cerută în enunţ atunci se măreşte lungimea
secvenţei altfel se compară cu un max.

E_INFO_C_SIII_065 a) O posibilitate de implementare a subprogramului sfx


3
E_INFO_PASCAL_SIII_065 utilizează extragerea ultimelor 3 cifre ale numărului şi
compararea acestora.

b) programul citeşte din fişierul text câte un număr


natural cu exact 6 cifre ;i prin apeluri repetate ale funcţiei
sfx determină numerele cu proprietatea din enunţ.

E_INFO_C_SIII_066 3. Subprogramul poate determina numărul cerut parcurgând


toate elementele tabloului şi determinând maximul dintre
E_INFO_PASCAL_SIII_066
divizorii comuni ai elementelor tabloului.
E_INFO_C_SIII_066 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate. Se obţine punctaj parţial pentru o soluţie care
E_INFO_PASCAL_SIII_066
memorează numerele citite din fişiere în tablouri, apoi
parcurgem tablourile şi determinăm şi afişăm numărul de
numere cu proprietatea cerută.
E_INFO_C_SIII_067 3. Subprogramul poate determina numărul cerut parcurgând
toate elementele tabloului şi determinând numărul de numere
E_INFO_PASCAL_SIII_067
prime din tablou.
E_INFO_C_SIII_067 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate. Se obţine punctaj parţial pentru o soluţie care
E_INFO_PASCAL_SIII_067
memorează numerele citite din fişier într-un tablou, apoi
parcurgem tabloul, determinăm şi afişăm numerele cu
proprietatea cerută.
E_INFO_C_SIII_068 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate. Se obţine punctaj parţial pentru o soluţie care
E_INFO_PASCAL_SIII_068
memorează numerele citite din fişier într-un tablou, apoi
parcurgem tabloul, determinăm şi afişăm cele două valori
cerute.
E_INFO_C_SIII_069 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate. Se obţine punctaj parţial pentru o soluţie care
E_INFO_PASCAL_SIII_069
memorează numerele citite din fişier într-un tablou, apoi
parcurgem tabloul, determinăm ordinea elementelor în tablou
conform cerinţei, după care se afişează tabloul obţinut.
E_INFO_C_SIII_070 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate. Se obţine punctaj parţial pentru o soluţie care
E_INFO_PASCAL_SIII_070
memorează numerele citite din fişier într-un tablou, apoi
parcurgem tabloul, determinăm şi afişăm cele două valori
cerute.
E_INFO_C_SIII_071 2. Se urmăresc apelurile recursive, determinându-se valoarea
afişată
E_INFO_PASCAL_SIII_071
E_INFO_C_SIII_071 3. Se vor declara corespunzător numele şi tipul subprogramului.
Se va determina inversul numărului şi în funcţie de condiţia
E_INFO_PASCAL_SIII_071
impusă subprogramul returnează 1 sau 0.
E_INFO_C_SIII_072 2. Se urmăresc apelurile recursive, determinându-se valoarea
afişată
E_INFO_PASCAL_SIII_072
E_INFO_C_SIII_072 3. Se vor declara corespunzător numele şi tipul subprogramului.
Se vor memora în doi vectori caracteristici cifrele celor două
E_INFO_PASCAL_SIII_072
numere apoi se vor determina numărul de cifre comune şi se
va returna valoarea astfel obţinută.
E_INFO_C_SIII_072 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate din partea concurentului. Dacă se realizează
E_INFO_PASCAL_SIII_072
cerinţa fără a utiliza subprogramul de la punctul 3 se obţine
punctaj parţial. Dacă se vor genera termenii şirului până la
poziţia k se va obţine un punctaj parţial.
E_INFO_C_SIII_073 2. Se urmăresc apelurile recursive, determinându-se valoarea
afişată
E_INFO_PASCAL_SIII_073
E_INFO_C_SIII_073 3. Se vor declara corespunzător numele şi tipul subprogramului.
Pentru a insera valoarea pe poziţia k, se va parcurge tabloul
E_INFO_PASCAL_SIII_073
până pe poziţia k+1, de la dreapta spre stânga atribuind
elementului ai valoarea elementului ai-1 apoi elementului ak i se
va atribui valoarea dată.
E_INFO_C_SIII_073 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate din partea concurentului. Dacă se realizează
E_INFO_PASCAL_SIII_073
cerinţa fără a utiliza subprogramul de la punctul 3 se obţine
punctaj parţial.
Se obţine punctaj parţial pentru o soluţie care memorează
numerele citite din fişier într-un tablou, apoi se inserează
media aritmetică între două elemente consecutive şi se
afişează în formatul cerut.
E_INFO_C_SIII_074 2. Se urmăresc apelurile recursive, determinându-se valoarea
afişată
E_INFO_PASCAL_SIII_074
E_INFO_C_SIII_074 3. Se vor declara corespunzător numele şi tipul subprogramului.
Subprogramul poate determina numărul cerut comparând
E_INFO_PASCAL_SIII_074
fiecare cifră a numărului cu o variabilă maxim ce se va
iniţializa corespunzător.
E_INFO_C_SIII_074 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate din partea concurentului. Se obţine punctaj parţial
E_INFO_PASCAL_SIII_074
pentru o soluţie care memorează numerele citite din fişier într-
un tablou, apoi determină cifra aximă pentru fiecare dintre
elementele tabloului, determină câte au cifra maxi9mă egală
cu val citită de la tastatură şi afişează mesjul şi numărul în
formatul cerut.
E_INFO_C_SIII_075 2. Algoritmul inversează elemente ale tabloului.
E_INFO_PASCAL_SIII_075
E_INFO_C_SIII_075 3. Se vor declara corespunzător numele şi tipul subprogramului.
Se va determina inversul numărului folosind un algoritm
E_INFO_PASCAL_SIII_075
elementar şi se va furniza valoarea astfel obţinută prin
parametru.
E_INFO_C_SIII_075 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate din partea concurentului. Se obţine punctaj parţial
E_INFO_PASCAL_SIII_075
pentru o soluţie care memorează numerele citite din fişier într-
un tablou, verifică proprietatea de palindrom şi afişează
elementele care îndeplinesc această proprietate.
E_INFO_C_SIII_076 2. Se urmăresc apelurile recursive, şi se constată că se va
calcula produsul cifrelor impare din număr.
E_INFO_PASCAL_SIII_076
E_INFO_C_SIII_076 3. Subprogramul poate determina numărul cerut verificând şi
numărând câte din cifrele numărului n se află în intervalul
E_INFO_PASCAL_SIII_076
cerut.
E_INFO_C_SIII_076 4. Pentru a obţine punctaj maxim se va utiliza o metodă ce
presupune cît mai puţine operaţii de comparare. Se va ţine
E_INFO_PASCAL_SIII_076
cont de faptul că elementele de pe a doua linie a fişierului sunt
ordonate crescător.
E_INFO_C_SIII_077 2. Se urmăresc apelurile recursive, şi se constată că se va
calcula suma cifrelor impare din număr.
E_INFO_PASCAL_SIII_077
E_INFO_C_SIII_077 3. Se deschide fişierul şi se citesc numerele din fişier, numărând
şi însumând valorile ce îndeplinesc proprietatea cerută.
E_INFO_PASCAL_SIII_077
E_INFO_C_SIII_077 4. Numerele prime citite din fişier se memorează într-un tablou
unidimensional. Numerele din tablou se vor afişa în ordinea
E_INFO_PASCAL_SIII_077
inversă memorării.
E_INFO_C_SIII_078 2. Se urmăresc apelurile recursive, şi se constată că se va
calcula numărul cifrelor impare din număr.
E_INFO_PASCAL_SIII_078
E_INFO_C_SIII_078 3. Se citeşte numărul n. Se generează numere naturale
consecutive mai mici sau egale cu n, începând cu valoarea 2
şi se vor afişa pe ecran doar numerele prime dintre cele
E_INFO_PASCAL_SIII_078
generate.
E_INFO_C_SIII_078 4. Se defineşte subprogramul care determină cea mai mare
valoare negativă dintr-un tablou unidimensional. Pentru a
E_INFO_PASCAL_SIII_078
determina minimul valorilor pozitive dintr-un vector utilizând
aceeaşi funcţie, se va transmite tabloul în care s-au inversat în
prealabil semnele tuturor elementelor. Valorii determinate de
funcţie i se va schimba semnul şi astfel va reprezenta minimul
din valorile pozitive.
E_INFO_C_SIII_079 2. Se urmăresc apelurile recursive, şi se constată că se va
determina maximul cifrelor din număr.
E_INFO_PASCAL_SIII_079
E_INFO_C_SIII_079 3. O posibilă rezolvare separă cifrele numărului şi determină cele
mai mari două cifre ale sale
E_INFO_PASCAL_SIII_079
E_INFO_C_SIII_079 4. Pentru a obţine punctaj maxim se va utiliza un vector c cu 100
de elemente în care se va contoriza numărul de apariţii ale
E_INFO_PASCAL_SIII_079
fiecărei valori. Iniţial toate elementeleo acestui vector se vor
iniţializa cu valoarea 0.Se vor afişa pe ecran toate valorile
naturale din intervalul [1,100] care nu au fost citite (valorile i
pentru care c[i] are valoarea 0 )
E_INFO_C_SIII_080 2. Se urmăresc apelurile recursive, şi se constată că se va
calcula suma cifrelor impare din număr.
E_INFO_PASCAL_SIII_080
E_INFO_C_SIII_080 3. Se parcurge vectorul, se verifică dacă elementul curent este
un pătrat perfect şi în caz afirmativ se va afişa. Numerele
E_INFO_PASCAL_SIII_080
afişate se vor contoriza şi după fiecare 10 numere afişate se
va afişa sfârşit de linie.
E_INFO_C_SIII_080 4. a)Se defineşte subprogramul ordonat.
E_INFO_PASCAL_SIII_080 b)Pentru toate numerele citite din fişier se apelează
subprogramul şi se afişează acele numere care au cifrele
ordonate crescător sau descrescător
E_INFO_C_SIII_081 2. Se urmăresc apelurile recursive, determinându-se valoarea
afişată.
E_INFO_PASCAL_SIII_081
E_INFO_C_SIII_081 3. Subprogramul poate determina numărul cerut parcurgând
toate numere care au indicii în intervalul cerut , verificând
E_INFO_PASCAL_SIII_081
condiţia impusă.O rezolvare posibilă pentru program este să
se parcurgă tabloul şi să se verifice condiţia cerută folosind
apeluri ale subprogramului ordonat.
E_INFO_C_SIII_081 4. O rezolvare posibilă este să se parcurgă fiecare linie din fişier
şi să se calculeze maximul care se va afişa în fişierul de ieşire.
E_INFO_PASCAL_SIII_081
E_INFO_C_SIII_082 2. Se urmăresc apelurile recursive, determinându-se valoarea
afişată.
E_INFO_PASCAL_SIII_082
E_INFO_C_SIII_082 3. Subprogramul poate determina numărul cerut parcurgând
toate numere din tablou care verifică condiţia impusă.
E_INFO_PASCAL_SIII_082
E_INFO_C_SIII_082 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate din partea concurentului. Se obţine punctaj parţial
E_INFO_PASCAL_SIII_082
pentru o soluţie care memorează numerele citite din fişier într-
un tablou sortat crescător, apoi parcurge tabloul, pentru
determinarea numerelor cu proprietatea cerută.
E_INFO_C_SIII_083 2. Se urmăresc apelurile recursive, determinându-se valoarea
afişată.
E_INFO_PASCAL_SIII_083
E_INFO_C_SIII_083 3. Subprogramul poate determina numărul cerut parcurgând
toate numere din tablou care verifică condiţia impusă.
E_INFO_PASCAL_SIII_083
E_INFO_C_SIII_083 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate din partea concurentului. Se obţine punctaj parţial
E_INFO_PASCAL_SIII_083
pentru o soluţie care memorează numerele citite din fişier într-
un tablou sortat descrescător, apoi parcurge tabloul, pentru
determinarea numerelor cu proprietatea cerută.
E_INFO_C_SIII_084 2. Se urmăresc apelurile recursive, determinându-se valoarea
afişată.
E_INFO_PASCAL_SIII_084
E_INFO_C_SIII_084 3. O soluţie posibilă constă în parcurgerea simultană a celor
două tablouri şi construirea tabloului c care are elementele cu
E_INFO_PASCAL_SIII_084
proprietatea cerută.
E_INFO_C_SIII_084 4. O rezolvare posibilă este să se parcurgă fiecare linie din fişier
şi să se calculeze cmmmc care se va afişa în fişierul de ieşire.
E_INFO_PASCAL_SIII_084
E_INFO_C_SIII_085 2. Se urmăresc apelurile recursive, determinându-se valoarea
afişată.
E_INFO_PASCAL_SIII_085
E_INFO_C_SIII_085 3. O soluţie posibilă constă în parcurgerea simultană a celor
două tablouri şi construirea tabloului c care are elementele cu
E_INFO_PASCAL_SIII_085
proprietatea cerută.
E_INFO_C_SIII_085 4. O rezolvare posibilă este să se parcurgă fiecare linie din fişier,
să se calculeze cmmdc şi apoi se vor afişa numerele
E_INFO_PASCAL_SIII_085
simplificate cu cmmdc în fişierul de ieşire.
E_INFO_C_SIII_086 2. Se urmăresc apelurile recursive, determinându-se valoarea
afişată.
E_INFO_PASCAL_SIII_086
E_INFO_C_SIII_086 3. O modalitate de rezolvare este parcurgerea cifrelor numărului
primit prin intermediul primului parametru, utilizând valorile
E_INFO_PASCAL_SIII_086
succesive obţinute prin restul împărţirii numărului la 10,
respectiv a părţii întregi a valorii obţinute prin împărţirea la 10
a acestui număr. Pentru ca soluţia să fie corectă, trebuie
abordate cu atenţie şi cazurile speciale: numărul poate fi 0 (în
acest caz trebuie să se returneze 0), respectiv cazul în care
numărul conţine cifre 0 terminale (dacă se inversează ordinea
cifrelor numărului, aceste cifre 0 terminale se pot pierde). O
altă abordare ar fi transformarea cifrelor numărului iniţial în
elemente ale unui tablou unidimensional. Se prelucrează
aceste elemente, apoi se construieşte numărul cerut, folosind
elementele tabloului.
E_INFO_C_SIII_086 4. O rezolvare de punctaj maxim presupune găsirea celor două
valori efectuând o singură parcurgere a fişierului, şi fără
E_INFO_PASCAL_SIII_086
utilizarea unui tablou. Se obţine punctaj parţial pentru o
soluţie în care se memorează numerele citite din fişier într-un
tablou, apoi se parcurge tabloul, eventual de două ori, pentru
determinarea celor două numere cu proprietatea cerută şi
afişarea acestora pe ecran în ordine crescătoare.
E_INFO_C_SIII_087 2. Se urmăresc apelurile recursive, determinându-se valoarea
afişată.
E_INFO_PASCAL_SIII_087
E_INFO_C_SIII_087 3. Se calculează y=10b şi se returnează numărul rezultat din
partea întreagă a valorii a/y înmulţită cu y.
E_INFO_PASCAL_SIII_087
E_INFO_C_SIII_087 4. O rezolvare de punctaj maxim presupune găsirea celor două
valori efectuând o singură parcurgere a fişierului, şi fără
E_INFO_PASCAL_SIII_087
utilizarea vreunui tablou. Se obţine punctaj parţial pentru o
soluţie în care se memorează numerele citite din fişier într-un
tablou, apoi se parcurge tabloul, eventual de două ori, pentru
determinarea celor două numere cu proprietatea cerută şi
afişarea acestora pe ecran.
E_INFO_C_SIII_088 2. Se urmăresc apelurile recursive, determinându-se valoarea
cerută.
E_INFO_PASCAL_SIII_088
E_INFO_C_SIII_088 3. Parametrul x al subprogramului numar va fi referit prin
adresă. Se parcurg cifrele numărului n şi se verifică dacă sunt
E_INFO_PASCAL_SIII_088
sau nu satisfăcute simultan cele două condiţii referitor la cifra
curentă c: c1≤c şi c2≥c. Dacă da, atunci c se adaugă la x (x
iniţial trebuie să aibă valoarea 0).
E_INFO_C_SIII_088 4. O posibilă rezolvare de punctaj maxim presupune găsirea
valorii maxime (max), efectuând o singură parcurgere a
E_INFO_PASCAL_SIII_088
fişierului. Se poate utiliza un subprogram (optimizat) care
verifică dacă un număr este prim sau nu. Se începe verificarea
numerelor naturale de la max până la primul număr care este
prim, utilizând o structură repetitivă cu test iniţial. Se obţine
punctaj parţial pentru o soluţie în care se memorează
numerele citite din fişier într-un tablou, apoi se parcurge
tabloul pentru determinarea valorii maxime, şi se caută
numărul a care satisface condiţiile din enunţ.
E_INFO_C_SIII_089 2. Se urmăresc apelurile recursive, determinându-se valoarea
cerută.
E_INFO_PASCAL_SIII_089
E_INFO_C_SIII_089 3. Parametrul n al subprogramului numar va fi referit prin
adresă. Se determină cifrele numărului n (utilizând împărţirea
E_INFO_PASCAL_SIII_089
întreagă şi restul împărţirii la 10). Din aceste cifre se
construieşte în memorie, valoarea parametrului n (referit prin
adresă). Se va acorda atenţie cazului în care parametrul n
primeşte ca valoare un număr cu zerouri terminale (de
exemplu n=202300, în care se cere înlocuirea cifrei 2 cu cifra
1).
E_INFO_C_SIII_089 4. O posibilă rezolvare de punctaj maxim se obţine prin
utilizarea vectorului caracteristic. Acesta este un tablou
E_INFO_PASCAL_SIII_089
unidimensional cu cel mult 100 de componente, numerotate
de la 0 la 99, în care componenta cu indicele k va avea o
valoare ce reprezintă numărul de divizori ai numărului k, dacă
acesta apare în fişier, respectiv valoarea 0, dacă acest număr
nu apare în fişier. De exemplu, v[10]=4 pentru că numărul 10
are 4 divizori. Întrucât valorile din fișier se pot repeta, se va
calcula numărul de divizori doar în cazul în care vectorul
caracteristic conţine iniţial valoarea 0 pe poziţia k (şi k există
în fişier). Prin parcurgerea acestui vector se obţin, în ordine
crescătoare, valorile cerute. Se obţine punctaj parţial pentru
o soluţie în care se memorează numerele citite din fişier într-
un tablou, se sortează şi apoi se parcurge tabloul pentru
determinarea valorilor cerute.
E_INFO_C_SIII_090 2. Se urmăresc apelurile recursive, determinându-se valoarea
E_INFO_PASCAL_SIII_090 afișată.

E_INFO_C_SIII_090 3. Se declară tipul definit de utilizator vect ca fiind un tablou


unidimensional cu cel mult 200 de componente numere
E_INFO_PASCAL_SIII_090
întregi. Parametrii subprogramului vor fi n de tip întreg şi a de
tip vect. Se determină valoarea minimă şi cea maximă a
tabloului a, şi se verifică diferenţa. Dacă aceasta este mai
mare decât 1000, se returnează valoarea 1, altfel 0.
E_INFO_C_SIII_090 4. O posibilă rezolvare de punctaj maxim se obține prin
E_INFO_PASCAL_SIII_090 utilizarea vectorului caracteristic. Acesta este un tablou
unidimensional cu cel mult 10000 de componente, numerotate
de la 0 la 9999, în care componenta cu indicele k va avea o
valoare ce reprezintă numărul de divizori ai numărului k, dacă
acesta apare în fişier, respectiv valoarea 0, dacă acest număr
nu apare în fişier. De exemplu, v[12]=6 pentru că numărul 12
are 6 divizori. Întrucât valorile din fişier se pot repeta, se va
calcula numărul de divizori doar în cazul în care vectorul
caracteristic conţine iniţial valoarea 0 pe poziţia k (şi k există
în fişier). Determinând prima apariţie a valorii maxime a
acestui vector se obţine valoarea cerută. Valoarea maximă se
determină cu o singură parcurgere a vectorului caracteristic.
Se va afişa indicele elementului maxim. Se obţine punctaj
parţial pentru o soluţie în care se memorează numerele citite
din fişier într-un tablou, se sortează şi apoi se parcurge tabloul
pentru determinarea valorii cerute.
E_INFO_C_SIII_091 2. Pentru k≠0 se afişează k înainte şi după apelul f(k/2)
E_INFO_PASCAL_SIII_091
E_INFO_C_SIII_091 3. Subprogramul este o funcţie cu un parametru întreg şi rezultat
întreg.
E_INFO_PASCAL_SIII_091
Programul va apela funcţia par pentru x/10000
E_INFO_C_SIII_091 4a. Metoda utilizată este: se citeşte primul număr din fişier, se
iniţializează max cu valoarea citită, iar lin_prim, lin_ultim cu 1.
E_INFO_PASCAL_SIII_091
Se citesc succesiv celelalte numere din fişier contorizandu-se
numărul liniei; dacă valoarea citită e mai mare ca max, se
modifică max, lin_prim şi lin_ultim, dacă este egal cu max se
modifică lin_ultim iar dacă e mai mic nu se modifică nimic.
E_INFO_C_SIII_091 4b. Se transpune în limbaj, algoritmul:
citeşte x
E_INFO_PASCAL_SIII_091
max=x; lin_prim=1; lin_ultim=1; i=1
cât timp n-am ajuns la sfârşitul fişierului
citeşte x; i=i+1
dacă x>max
max=x; lin_prim=lin_ultim=i
altfel dacă x=max lin_ultim=i
scrie lin_prim, lin_ultim
E_INFO_C_SIII_092 3a. Subprogramul nu furnizează nici un rezultat, deci e de tip
procedure / void şi are doi parametri
E_INFO_PASCAL_SIII_092
E_INFO_C_SIII_092 3b. Se poate folosi un singur aple al subprogramului ordonare,
afişând ultimele m, apoi primele m elemente ale tabloului
E_INFO_PASCAL_SIII_092
rezultat sau două apeluri, două apeluri; dacă se doreşte
ordonarea descrescătoare schimbând semnul tuturor
elementelor din tablou
E_INFO_C_SIII_092 4. pt. c1=’A’, ’Z’
pt c2=’A’, ’Z’
E_INFO_PASCAL_SIII_092
dacă c1≠c2 scrie c1 c2
E_INFO_C_SIII_093 3. pentru i impar Ai=(i+1)/2, pentru i par Ai=n-(n-i)/2
E_INFO_PASCAL_SIII_093
Se poate utiliza algoritmul lui Euclid pentru determinarea celui
E_INFO_C_SIII_093 4.
mai mare divizor comun al acelor două numere.
E_INFO_PASCAL_SIII_093 In programul principal iniţializăm o variabilă d cu primul număr
şi actualizăm această variabilă (d=cmmdc(d,x))pe măsură ce
citim numere x din fişier.
E_INFO_C_SIII_093 4a. Se foloseşte algoritmul clasic al lui Euclid
E_INFO_PASCAL_SIII_093
E_INFO_C_SIII_093 4b. citeşte n; d=0
pt. i=1, n
E_INFO_PASCAL_SIII_093
citeşte x; d=cmmdc(d,x)
a) Se parcurge tabloul transmis ca parametru între cele două
E_INFO_C_SIII_094 3
poziţii şi se contorizează valorile pozitive, negative şi nule.
E_INFO_PASCAL_SIII_094
b) Se apelează funcţia cu valorile 0 şi n-1 pentru p1 şi
respectiv p2.
E_INFO_C_SIII_094 4 Algoritm “clasic” pentru detereminarea unui minim (în cazul
acestei probleme, minimul modulului diferenţei dintre x şi
E_INFO_PASCAL_SIII_094
valorile aflate în fişier. Numărul de paşi este egal cu numărul
de valori din fişier; programul foloseşte doar câteva variabile
simple (nu este necesară reţinerea tuturor valorilor din fişier
într-un tablou).
E_INFO_C_SIII_095 3 Funcţia implementează algoritmul fundamental de numărare
(contorizare), în cazul de faţă numărarea valorilor pozitive şi a
E_INFO_PASCAL_SIII_095
celor negative dintr-un tablou.
E_INFO_C_SIII_095 4 O soluţie corectă, dar ineficientă ca timp de executare,
generează folosind trei instrucţiuni pentru toate tripletele de
E_INFO_PASCAL_SIII_095
sumă S şi reţine pe cel în care produsul celor trei numere din
triplet este maxim.
a. Se testează dacă lungimea fiecare dintre cele trei laturi
E_INFO_C_SIII_096 3
e strict mai mică decât suma lungimilor celorlalte două
E_INFO_PASCAL_SIII_096 laturi.
b. Se formează toate perechile posibile cu laturile celor două
triunghiuri (sunt 3!=6 cazuri)
O soluţie corectă, dar ineficientă ca timp de executare şi
E_INFO_C_SIII_096 4
spaţiu de memorie utilizat reţine numerele de pe prima linie
E_INFO_PASCAL_SIII_096 într-un vector, apoi pe măsură ce citeşte câte un interval
determină dacă toate numerele din tabou aparţin intervalului
printr-o parcurgerea integrală a vectorului. Complexitatea
algoritmului este O(n*m), iar spaţiu de memorie folosit: un
tablou de 1000 elemente şi câteva variabile simple.
E_INFO_C_SIII_097 2. Se pot genera toate şirurile corecte care încep cu litera a şi se
E_INFO_PASCAL_SIII_097 vor afişa ultimele trei.
E_INFO_C_SIII_097 3. Subprogramul poate determina suma cerută parcurgând toate
E_INFO_PASCAL_SIII_097 numerele dintre x şi y şi însumându-le pe cele care respectă
condiţia impusă.
E_INFO_C_SIII_097 4. Este considerat optim un algoritm care afişează, pentru fiecare
cifră de la 0 la 9, valorile din fişier care au pe x ca cifră a
E_INFO_PASCAL_SIII_097 unităţilor. Este posibilă permisă memorarea valorilor din fişier
sau deschiderea fişierului de 10 ori, câte o dată pentru fiecare
cifră.
E_INFO_C_SIII_098 2. Se pot genera toate submulţimile în ordinea impusă şi se vor
E_INFO_PASCAL_SIII_098 afişa ultimele trei.

E_INFO_C_SIII_098 3. Subprogramul poate determina numărul cerut multipicând


E_INFO_PASCAL_SIII_098 valoarea unei variabile cu valoarea lui x, cât timp produsul
obţinut nu este mai mare decât y.

E_INFO_C_SIII_098 4. Este considerat optim un algoritm care foloseşte un vector de


frecvenţă care controrizează numărul de apariţii al fiecărei cifre.
E_INFO_PASCAL_SIII_098 Este posibilă şi memorarea valorilor din fişier sau deschiderea
fişierului de 10 ori, câte o dată pentru fiecare cifră. În toate
situaţiile se determină numărul de apariţii al fiecărei cifre, în
funcţie de care se efectuează afişarea.
E_INFO_C_SIII_099 2. Se pot genera toate şirurile care respectă condiţia impusă şi se
E_INFO_PASCAL_SIII_099 vor afişa cel de al treilea şi al patrulea.
E_INFO_C_SIII_099 3. Subprogramul poate determina numărul cerut ca rest la
E_INFO_PASCAL_SIII_099 impărtirea la 10nr-1 , unde nr este numărul de cifre al lui k.
E_INFO_C_SIII_099 4. Algoritm de complexitate pătratică O(n2), în care se foloseşte
un singur vector de n elemente întregi, care memorează valorile
E_INFO_PASCAL_SIII_099 din fişier. Valorile pozitive sunt ordonate, iar la afişare, ân locul
celor negative se afişează 0.
E_INFO_C_SIII_100 2. Se urmăresc apelurile recursive, determinându-se valoarea
afişată.
E_INFO_PASCAL_SIII_100
E_INFO_C_SIII_100 3. Subprogramul poate determina numărul cerut parcurgând toţi
divizorii posibili ai celor trei numere şi contorizându-i pe cei care
E_INFO_PASCAL_SIII_100
respectă condiţia impusă.
E_INFO_C_SIII_100 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate din partea concurentului. Se obţine punctaj parţial
E_INFO_PASCAL_SIII_100
pentru o soluţie care memorează numerele citite din fişier într-
un tablou, apoi parcurge tabloul, eventual de la dreapta la
stânga, pentru determinarea numărului cu proprietatea cerută,
precum şi a poziţiei acestuia în tablou.

Evaluare