Professional Documents
Culture Documents
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ţ.