Sunteți pe pagina 1din 20

Informatică –indicatii de rezolvare

Specializarea matematică-informatică
Subiectul III
subiect indicaţii
item
3 O posibilă soluţie citeşte de la tastatură numărul n şi apoi toate
E_INFO_C_SIII_001
numerele din fişier; pentru fiecare dintre ele testează condiţia
E_INFO_PASCAL_SIII_001 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 citirea numerelor din fişier,
E_INFO_C_SIII_003
memorarea celor cu cel puţin 3 cifre într-un tablou care apoi se
E_INFO_PASCAL_SIII_003 ordonează crescător; in final, tabloul ordonat se afişează pe
ecran. Dacă numărul elementelor memorate în tablou este 0
atunci se afişează mesajul cerut.
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 caracteristic,
E_INFO_C_SIII_004
completat pe măsură ce se citesc numerele din fişier. Vectorul
E_INFO_PASCAL_SIII_004 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 corespunzător
E_INFO_C_SIII_007
tipul de subprogram, tipul parametrilor şi modul de transfer al
E_INFO_PASCAL_SIII_007 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 n la 1.
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 mică putere a lui doi mai mare
decât acel număr.
E_INFO_C_SIII_011 3. a) Se va scrie definiţia completă a subprogramului P alegând
corespunzător tipul de subprogram, tipul parametrilor şi modul
E_INFO_Pascal_SIII_011
de transfer al acestora. Se vor folosi identificatorii de
subprogram şi de parametri formali specificaţi în enunţ.
b) 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 valoarea returnată de către subprogramul P, apelat
pentru k=i.
E_INFO_C_SIII_011 4. Se citesc pe rând numerele din fişier, iar pentru fiecare
numărul prim, citit de pe a doua linie din fişier, se va
E_INFO_Pascal_SIII_011
incrementa un control a cărui valoare este 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 de căutare
E_INFO_Pascal_SIII_012
binară se determină valorile care apar doar în cel de-al doilea
şir.
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 deja
E_INFO_Pascal_SIII_014 5 valori se trece la linie nouă.
O posibilă soluţie presupune citirea numerelor de la tastatură,
E_INFO_C_SIII_014 4.
memorarea celor prime într-un tablou care apoi se ordonează
E_INFO_Pascal_SIII_014 crescător; in final, tabloul ordonat se afişează pe ecran.
Selectarea numerelor prime se face utilizând subprogramul
prim de la punctual a)
E_INFO_C_SIII_015 3. Se va scrie definiţia completă a subprogramului alegând
corespunzător tipul de subprogram, tipul parametrilor şi modul
E_INFO_Pascal_SIII_015
de transfer al acestora. Se vor folosi identificatorii de
subprogram şi de parametri formali specificaţi în enunţ.
Pentru fiecare număr memorat în tablou se extrag cifrele şi se
verifică daca cifra curentă este 5. Dacă da, este incrementat un
contor a cărui valoare va fi returnată la final de subprogram.
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 dacă s-a găsit cel
puţin un număr impar, altfel se afişează mesajul cerut.
E_INFO_C_SIII_016 3. Numărul cerut se determină parcurgând toate elementele
tabloului unidimensional şi contorizând valorile care respectă
E_INFO_PASCAL_SIII_016
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 0 pe poziţia celui de-al doilea parametru.
E_INFO_C_SIII_017 3. a) 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ă.
b) Se citesc valorile de la tastatură, se memorează într-un
tablou unidimensional se apelează subprogramul de la a)
pentru acest tablou. Pentru verificarea proprietăţii cerute este
necesar să verifică dacă rezultatul furnizat de subprogram este
egal cu numărul elementelor din tablou.
E_INFO_C_SIII_017 4. Se citesc pe rând numerele din fişier şi se calculează suma şi
numărul numerelor strict positive din fişier. Dacă numărul
E_INFO_PASCAL_SIII_017
acestora este strict pozitiv atunci se afişează media acetora iar
altfel se afişează mesajul indicat.
E_INFO_C_SIII_018 3. a) 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ă.
b) Se formează un vector cu numerele citite de la tastatură.
Apoi se verifică dacă rezultatul furnizat de subprogramul count
este egal cu numărul elementelor memorate în vector.
E_INFO_C_SIII_018 4. O posibilă soluţie presupune citirea numerelor din fişier,
memorarea succesivă a secvenţelor de câte 4 numere aflate
E_INFO_PASCAL_SIII_018
pe poziţii consecutive şi verificare proprietăţii cerute.
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. O posibilă soluţie presupune citirea numerelor din fişier şi
contorizarea celor naturale. Dacă valoarea contorului ajunge la
E_INFO_PASCAL_SIII_019
10 atunci se poate întrerupe citire n umerelor din fişier şi se
afişează pe ecran mesajul DA. Dacă se citesc toate numerele
din fişier şi valoarea contorului este strict mai mică decât 10
atunci pe ecran se afişează mesajul NU.
E_INFO_C_SIII_020 3. a) O posibilă rezolvare foloseşte principiul sortării unui vector
prin metoda bulelor, interschimbând 2 elemente vecine, dacă
E_INFO_PASCAL_SIII_020
un element nenul se află imediat după unul nul.
b) Se memorează pe rând, în vectorul a, cele n numere citite
de la tastatură, iar apoi apelând subprogramul nule se aduc
elementele nenule la începutul vectorului. Dacă elementul de
pe poziţia 5 este nenul atunci în vector există cel puţin 5
elemente neneule şi se vor scrie pe ecran primele 5
elementele din vector.
E_INFO_C_SIII_020 4. O posibilă soluţie presupune citirea numerelor din fişier,
memorarea succesivă a secvenţelor de câte 4 numere aflate
E_INFO_PASCAL_SIII_020
pe poziţii consecutive şi verificare proprietăţii cerute
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
pt,. i=k+1,n-k+1
E_INFO_PASCAL_SIII_021
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. Pentru fiecare pereche (a,b) din fişier se execută:
E_INFO_PASCAL_SIII_022 p=1
cât timp p*2<=b p=p*2
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=-1
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. Minimul,
E_INFO_PASCAL_SIII_024
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 valorilor a şi b se iniţializează min cu b+1 Se
citesc în continuare cele n numere din fişier şi, la găsirea unui
E_INFO_PASCAL_SIII_024
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.
E_INFO_C_SIII_026 3. pt. i=k,1,+1 scrie n*i
E_INFO_PASCAL_SIII_026
a) Subprogramul sterge realizează deplasarea cu o poyâziţie
E_INFO_C_SIII_026 4.
la stânga a celor n-i elemente aflate în vector, după elementul
E_INFO_PASCAL_SIII_026 vi. Numărul de elemente se micşorează cu o unitate.
b) În programul principal se parcurge tabloul, şi, pentru fiecare
element vi,ştergem elementul vi+1, dacă vi=vi+1.Deplasarea în
vector se face doar atunci când vi≠vi+1. Rămân astfel doar
elemente distincte.
citeşte x,y ( reale)
E_INFO_C_SIII_027 3.
cat timp y>0 executa y=y/10
E_INFO_PASCAL_SIII_027 scrie x+y
Se determină a primul număr real de pe linia a doua din fişier şi
E_INFO_C_SIII_027 4.
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.
Se citesc cele n numere şi se memorează într-un tablou
E_INFO_C_SIII_028 3.
unidimensional. Se calculează suma (s) numerelor din tablou şi
E_INFO_PASCAL_SIII_028 se contorizează elementele x din tablou care verifică
proprietatea x=(s-x)/(n-1). Valoarea contorului se afişează pe
ecran.
Pentru a verifica dacă numărul x este „aproape prim”, calculăm
E_INFO_C_SIII_028 4.
primul său divizor y mai mare decât 1 şi determinăm z=x/y.
E_INFO_PASCAL_SIII_028 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 ne
E_INFO_C_SIII_029 4.
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 Ai,Ai+1,Ai+2
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 3. Se ordonează crescător numai elementele impare ale tabloului .
E_INFO_PASCAL_SIII_031
E_INFO_C_SIII_031 4. Se citesc datele din fişier şi se calculează capetele segmentului
de intersecţie. Acesta va fi determinat de valoarea maximă a
E_INFO_PASCAL_SIII_031
capetelor din stânga a tuturor segmentelor date şi valorarea
minimă a capetelor din dreapta.
E_INFO_C_SIII_032 3. Se parcurge intervalul determinat de cele două capete şi se
afişează numerele prime din acest interval.
E_INFO_PASCAL_SIII_032
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 3. O rezolvare posibilă constă în parcurgerea elementelor tabloului
şi verificarea condiţiei enunţate, pentru fiecare 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 maxim
E_INFO_PASCAL_SIII_033
dacă se adună direct ultimele m elemente din şirul celor n aflate
în fişier.
E_INFO_C_SIII_034 3. a) Se descompune numărul în cifre şi se verifică dacă fiecare
cifră îndeplineşte condiţia din enunţ.
E_INFO_PASCAL_SIII_034
b) 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 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 4. a) 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.
b) O soluţie posibilă 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 3. Se declară un tablou unidimensional cu cel mult 100 elemente.
O rezolvare posibilă citeşte valorile lui n respectiv k şi toate
E_INFO_PASCAL_SIII_037
elementele tabloului, apoi parcurge tabloul permutând
elementele acestuia conform enunţului.
E_INFO_C_SIII_037 4. a) Se scrie antetul subprogramului, urmărind cerinţa.
E_INFO_PASCAL_SIII_037 b) O soluţie posibilă citeşte cele n elemente din fişierul bac.in
şi afişează, pentru fiecare dintre numerele citite, utilizând
subprogramul definit la a) numărul de divizori primi.
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ţ (sunt mai
E_INFO_PASCAL_SIII_038
mici sau egale cu y).
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 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 3. O rezolvare de punctaj maxim implică un anumit grad de
creativitate din partea concurentului. Se obţine punctaj parţial
E_INFO_PASCAL_SIII_040
pentru o soţie care citeşte cele n elemente din fişierul bac.in şi
le reţine într-un tablou unidimensional, apoi se parcurge
vectorul şi 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 verifică dacǎ vectorul respectǎ proprietatea
cerutǎ.
E_INFO_PASCAL_SIII_041
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 3. Se ordonează vectorul descrescător şi se adună primele k
elemente pentru a obţine rezultatul furnizat de subprogram.
E_INFO_PASCAL_SIII_042
E_INFO_C_SIII_042 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate din partea concurentului. Este suficient să reţinem
E_INFO_PASCAL_SIII_042
la fiecare pas câte o secvenţă formată din două numere aflate
pe poziţii consecutive şi să comparăm aceste valori.
E_INFO_C_SIII_043 3. Se declară un vector de cel puţin 100 de elemente. O rezolvare
posibilă citeşte valorea n iar apoi elementele vectorului. Se
E_INFO_PASCAL_SIII_043
calculeazǎ suma elementelor impare aflate pe poziţii pare.
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. O rezolvare posibilă citeşte cele două valori a şi b şi apoi
parcurge intervalul determinat afişând numerele care
E_INFO_PASCAL_SIII_044
îndeplinesc cerinţa din enuţ.
E_INFO_C_SIII_044 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate din partea concurentului. Se poate utiliza un vector
E_INFO_PASCAL_SIII_044
caracteristic C în care Ci reprezintă numărul de apariţii ale
numărului i în fişier. Vectorul se parcurge de la stânga la
dreapta şi fiecare cifră i pentru care Ci >1.
E_INFO_C_SIII_045 3. O rezolvare posibilă citeşte cele două valori a şi b şi apoi
parcurge intervalul determinat afişând numerele care
E_INFO_PASCAL_SIII_045
îndeplinesc cerinţa din enuţ.
E_INFO_C_SIII_045 4. O rezolvare de punctaj maxim implică un anumit grad de
creativitate din partea concurentului. Numerelor trebuie sortate
E_INFO_PASCAL_SIII_045
la o singurǎ parcurgere a fişierului. Se poate utiliza un vector
caracteristic.
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 verifică dacă este putere a lui 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, şi se compară valoarea
furnizată la apelul subprogramului cif cu max. Într-un tablou
unidimensional (ce va fi afişat la sfârşit) se salvează doar acele
elemente cu suma cifrelor maximă.
E_INFO_C_SIII_048 3. a) Parametri se transmit prin valoare. Rezultatul este întreg.
E_INFO_PASCAL_SIII_048 b) Se citeşte n şi se parcurge intervalul [1,n-1]. Se determină
cel mai mare divizor comun dintre fiecare număr din interval şi
n. Se contorizează perechile pentru care rezultatul este egal cu
1.
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 numerele de la tastatură şi se memorează într-un
vector care se ordonează crescător. Se verifică apoi
E_INFO_PASCAL_SIII_049
proprietatea din enuţ.
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. Se compară restul împărţirii lui x la y cu 0.
E_INFO_PASCAL_SIII_050
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 divxy.
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ă indicii elementelor din acest vector care sunt strict 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 salvează ultima cifră a lui a într-o variabilă auxiliară, apoi se
E_INFO_PASCAL_SIII_052 verifică dacă toate cifrele lui a au aceeaşi paritate cu variabila
auxiliară
3b se citeşte într-o variabilă x câte un număr din fişier şi se verifică
dacă îndeplineşte cerinţa din enunţ aplând funcţia definită la a)
având ca parametru de apel variabila x. Nu este necesară
utilizarea unui tablou pentru a reţine numerele citite.
E_INFO_C_SIII_052 4 Se ordoneaza elementele vectorului si apoi se verifica dacă
E_INFO_PASCAL_SIII_052 fiecare pereche de două elemente consecutive este formată din
valori distincte.
E_INFO_C_SIII_053 3b Pentru perechi de elemente consecutive se verifica daca
E_INFO_PASCAL_SIII_053 cmmdc este 1.

E_INFO_C_SIII_053 4 Se afişează şirul citit apoi de n-1 ori se execută următoarele:


E_INFO_PASCAL_SIII_053 - se permută şirul cu o poziţie spre dreapta
- se afişează şirul obţinut
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_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_056 3. Se citesc numerele din fişier, până la sfârşitul acestuia şi se
scriu în fişierul pare.txt numerele pare pe măsură ce sunt
E_INFO_PASCAL_SIII_056
citite. Nu este necesară folosirea unui tablou, numerele putând
fi prelucrate pe măsură ce sunt citite. Se numără câte numere
se scriu în fişierul pare.txt; în cazul în care s-au scris 0
numere, se afişează mesajul nu exista.
E_INFO_C_SIII_056 4b Se parcurge intervalul de valori de la a la b (crescător sau
descrescător după cum este relaţia între a şi b) şi pentru
E_INFO_PASCAL_SIII_056
fiecare număr din acest interval se apelează funcţia de la
subpunctul a)
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 scriu în fişierul
E_INFO_PASCAL_SIII_057
iesire.txt toate sumele cerute (nu este necesar ca acestea să
fie la rândul lor reţinute într-un vector).
E_INFO_C_SIII_057 4b Se apelează funcţia definită la 4a) cu parametri x şi z iar dacă
valoarea returnată de aceasta este mai mică decât y atunci
E_INFO_PASCAL_SIII_057
intervalul [x,y] conţine cel puţin un multiplu a lui z.
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_060 3 Se citesc cele 100 de numere de pe prima linie din fişier într-
un tablou unidimensional, apoi se citeşte valoarea de pe a
E_INFO_PASCAL_SIII_060
doua linie şi se foloseşte un algoritm fundamental de căutare
(binară sau chiar şi secvenţială având în vedere că nu se cere
eficienţa metodei de rezolvare).
E_INFO_C_SIII_060 4a Se scrie o funcţie care returnează partea întreagă a radicalului
parametrului.
E_INFO_PASCAL_SIII_060
E_INFO_C_SIII_060 4b Se apelează funcţia având ca parametru valoarea n şi se
verifică dacă pătratul valorii returnate este egal cu n.
E_INFO_PASCAL_SIII_060
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 testează egalitatea părţii întreagi 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_061 Se utilizează două instrucţiuni for imbricate în care
4
E_INFO_PASCAL_SIII_061 limitele sunt literele a şi z.
E_INFO_C_SIII_062 Se aplică formula care defineşte şirul fibonacii şi se reţin
3
E_INFO_PASCAL_SIII_062 doar termenii impari în tabloul v.
E_INFO_C_SIII_062 Se citesc într-un tablou unidimensional valorile din fişier şi
4
E_INFO_PASCAL_SIII_062 se sortează crescător. Se parcurge apoi tabloul de la
prima la ultima poziţie şi se afişează elementele impare,
apoi se parcurge tabloul de la ultima la prima poziţie
afişându-se elementele pare. Ca metodă eficientă se
poate folosi un vector de contorizare (vezi sortarea prin
numărare).
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_063 Se pot citi valorile din fişier într-un tablou unidimensional,
4
E_INFO_PASCAL_SIII_063 apoi se parcurge tabloul de la al doilea la penultimul
element şi se testează pentru fiecare dintre elemente
condiţia de nod.
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_065 Se pot citi valorile din fişier într-un tablou unidimensional,
4
E_INFO_PASCAL_SIII_065 apoi se parcurge tabloul de la al doilea la penultimul
element şi se testează pentru fiecare dintre elemente
condiţia de pol. Pentru un algoritm eficient, se evită
utilizarea tabloului, fiind necesare doar trei variabile.
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 3a. 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 3b Se afişează mesajul Da dacă Cifra(n) returnează o valoare
mai mică sau cel mult egală cu 4.
E_INFO_PASCAL_SIII_074
E_INFO_C_SIII_074 3c. Se citeşte succesiv câte o valoare din fişier într-o variabilă x şi
se verifică dacă Cifra(x)=c.
E_INFO_PASCAL_SIII_074
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. Se pot citi valorile din fişier într-un tablou unidimensional, apoi
se parcurge tabloul de la al doilea la penultimul element şi se
E_INFO_PASCAL_SIII_075
testează pentru fiecare dintre elemente condiţia de punct de
minim. Pentru un algoritm eficient, se evită utilizarea tabloului,
fiind necesare doar trei variabile.
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
E_INFO_PASCAL_SIII_078
şi se vor afişa pe ecran doar numerele prime dintre cele
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 citeşte n, apoi utilizând o instrucţiune for, se verifică pentru
fiecare număr din intervalul [2,n-1] dacă este un pătrat perfect
E_INFO_PASCAL_SIII_080
şi dacă restul împărţirii lui n la respectivul număr este nenul; în
caz afirmativ se afişează. Numerele afişate se vor contoriza şi
după fiecare 5 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 reţin într-un tablou numere care au cifrele
ordonate descrescător. Se sortează tabloul printr-o metodă cât
simplă, apoi se afişează fiecare element din tablou care este
diferit de precedentul element.
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 extrage câte o cifră din a şi se construieşte un nou număr
în care primele b cifre se introduc cele extrase din a, apoi
E_INFO_PASCAL_SIII_087
pentru fiecare cifră extrasă se introduce în numărul nou format
cifra 1.
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 j va avea o
valoare ce reprezintă numărul de apariţii ale valorii k, dacă
acesta apare în fişier, respectiv valoarea 0, dacă acest număr
nu apare î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
afișată.
E_INFO_PASCAL_SIII_090
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
utilizarea vectorului caracteristic. Acesta este un tablou
E_INFO_PASCAL_SIII_090
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. Se urmăresc apelurile recursive, determinându-se valoarea
afișată.
E_INFO_PASCAL_SIII_091
E_INFO_C_SIII_091 3. a) Subprogramul este o funcţie cu un parametru întreg şi
rezultat întreg.
E_INFO_PASCAL_SIII_091
b) Programul va citi succesiv câte un număr într-o variabilă x
şi va testa valoarea apelului par(x/10)
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. pentru c1=’A’, ’Z’
pentru c2=’A’,’Z’
E_INFO_PASCAL_SIII_092
dacă c1≠c2 scrie c1c2
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=dcm(d,x)) pe măsură ce
citim numerele din fişier în variabila 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ă
laturi.
E_INFO_PASCAL_SIII_096
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
vor afişa ultimele trei.
E_INFO_PASCAL_SIII_097
E_INFO_C_SIII_097 3. Subprogramul poate determina suma cerută parcurgând toate
numerele dintre x şi y şi însumându-le pe cele care respectă
E_INFO_PASCAL_SIII_097
condiţia impusă.
Este considerat optim un algoritm care afişează, pentru fiecare
E_INFO_C_SIII_097 4.
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
afişa ultimele trei.
E_INFO_PASCAL_SIII_098
E_INFO_C_SIII_098 3. Subprogramul poate determina numărul cerut multipicând
valoarea unei variabile cu valoarea lui x, cât timp produsul
E_INFO_PASCAL_SIII_098
obţinut nu este mai mare decât y.

Este considerat optim un algoritm care foloseşte un vector de


E_INFO_C_SIII_098 4.
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 vor afişa cel de al treilea şi al patrulea.
E_INFO_PASCAL_SIII_099
E_INFO_C_SIII_099 3. Subprogramul poate determina numărul cerut ca rest la
impărtirea la 10nr-1 , unde nr este numărul de cifre al lui k.
E_INFO_PASCAL_SIII_099
Algoritm de complexitate pătratică O(n2), în care se foloseşte
E_INFO_C_SIII_099 4.
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