Vous êtes sur la page 1sur 18

Informatic indicatii de rezolvare

Specializarea matematic-informatic intensiv informatica


Subiectul III
SUBIECT
E_INFO_INTENSIV_C_SIII_001

ITEM
3

E_INFO_ INTENSIV_PASCAL_SIII_001

E_INFO_INTENSIV_C_SIII_001

E_INFO_ INTENSIV_PASCAL_SIII_001

E_INFO_INTENSIV_C_SIII_002

E_INFO_ INTENSIV_PASCAL_SIII_002
E_INFO_ INTENSIV_C_SIII_002

E_INFO_ INTENSIV_PASCAL_SIII_002

E_INFO_ INTENSIV_C_SIII_003

E_INFO_ INTENSIV_PASCAL_SIII_003

E_INFO_ INTENSIV_C_SIII_003

E_INFO_ INTENSIV_PASCAL_SIII_003

E_INFO_ INTENSIV_C_SIII_004

E_INFO_ INTENSIV_PASCAL_SIII_004

E_INFO_ INTENSIV_C_SIII_004
E_INFO_ INTENSIV_PASCAL_SIII_004

INDICAII
O posibil soluie citete de la tastatur numrul n i apoi
toate numerele din fiier; pentru fiecare dintre ele
testeaz condiia impus, iar dac aceasta este
ndeplinit, afieaz pe ecran numrul respectiv, n
formatul cerut.
a) O posibil soluie pentru prelucrarea cerut presupune
parcurgerea tabloului, compararea fiecrui element cu
valoarea lui a i contorizarea celor care ndeplinesc
condiia impus.
b) O posibil soluie presupune citirea numerelor de la
tastatur, apoi, pentru fiecare numr ai se calculeaz
numrul elementelor mai mici dect ai, respectiv ai+1;
dac diferena celor dou numere gsite este diferit de
1, rezult c tabloul nu respect cerina impus.
O posibil soluie presupune citirea numerelor din fiier,
memorarea celor nenule ntr-un tablou care apoi se
ordoneaz cresctor; in final, tabloul ordonat se afieaz
pe ecran.
a) O posibil soluie pentru prelucrarea cerut presupune
parcurgerea tuturor divizorilor posibili ai lui a, pentru
fiecare divizor gsit determinndu-se puterea la care
acesta apare n descompunerea n factori primi; numrul
a este mprit succesiv la acest divizor. Fiecare putere
astfel determinat este nsumat, rezultatul fiind valoarea
returnat de funcie.
b) pentru numrul citit se construiesc numerele obinute
prin permutarea cifrelor acestuia i, apelnd funcia f, se
testeaz dac acestea sunt numere sunt prime (suma
exponenilor este 1).
O posibil soluie presupune utilizarea unui vector
caracteristic, completat pe msur ce se citesc numerele
din fiier. Vectorul se parcurge ncepnd de la indicele
100 i se vor afia indicii elementelor nenule, de un
numr de ori corespunztor.
a) o posibil soluie pentru prelucrarea impus
presupune parcurgerea cifrelor numrului, contoriznd
numrul apariiilor cifrei cerute.
b) o posibil soluie presupune cutarea tuturor cifrelor
de la 9 la 0 n numrul dat; dac o astfel de cifr apare
de un numr par de ori, ea poate fi inclus n palindrom,
altfel acest lucru nu este posibil.
O posibil soluie presupune utilizarea unui vector
caracteristic, completat pe msur ce se citesc numerele
din fiier. Vectorul se parcurge de la dreapta la stnga,
ncepnd de la indicele 99 i se vor afia indicii
elementelor nenule, de un numr de ori corespunztor.
a) o posibil soluie pentru prelucrarea impus
presupune parcurgerea cifrelor numrului, contoriznd
numrul apariiilor cifrei cerute.
b) o posibil soluie presupune cutarea tuturor cifrelor
de la 1 la 9, i includerea, de un numr de ori
corespunztor, n numrul cerut, a acelor cifre impare
care apar n numrul dat.

E_INFO_ INTENSIV_C_SIII_005

E_INFO_ INTENSIV_PASCAL_SIII_005
E_INFO_ INTENSIV_C_SIII_005

E_INFO_ INTENSIV_PASCAL_SIII_005

E_INFO_INTENSIV_C_SIII_006

3.

E_INFO_INTENSIV_PASCAL_SIII_006
E_INFO_INTENSIV_C_SIII_006

4.

E_INFO_INTENSIV_PASCAL_SIII_006
E_INFO_INTENSIV_C_SIII_007

3.

E_INFO_INTENSIV_PASCAL_SIII_007

E_INFO_INTENSIV_C_SIII_007

4.

E_INFO_INTENSIV_PASCAL_SIII_007

E_INFO_INTENSIV_C_SIII_008

3.

E_INFO_INTENSIV_PASCAL_SIII_008

E_INFO_INTENSIV_C_SIII_008

4.

E_INFO_INTENSIV_PASCAL_SIII_008

E_INFO_INTENSIV_C_SIII_009

3.

E_INFO_INTENSIV_PASCAL_SIII_009

E_INFO_INTENSIV_C_SIII_009
E_INFO_INTENSIV_PASCAL_SIII_009

4.

O solutie posibil pentru prelucrarea cerut presupune


ndeprtarea din numrul dat a cte unei cifre (a
unitilor) i scrierea n fiierul dat a numerelor obinute,
n formatul cerut.
a) o posibil soluie a prelucrrii cerute presupune
testarea divizorilor posibili ai numrului a i returnarea
celui mai mic dintre acetia, care l divide pe a.
b) o posibil soluie presupune citirea numerelor i
testarea propriettii cerute pentru fiecare dintre ele (un
numr este prim dac el este egal cu cel mai mic divizor
prim al su). Numerele prime sunt memorate ntr-un
tablou care apoi este ordonat cresctor, i afiat.
O rezolvare posibil citete de la tastatur valoarea lui n
i elementele tabloului unidimensional. Se parcurg
elementele tabloului i se determin sumele cerute,
afindu-se n formatul precizat.
Pentru citirea numerelor din fiier vor fi folosite dou
variabile simple ce rein termenul citit anterior i termenul
citit la pasul curent. Complexitatea algoritmului este O(n),
unde n reprezint numrul de termeni ai irului.
O rezolvare posibil citete de la tastatur valoarea lui n
i elementele tabloului unidimensional. Determin poziia
primului element par din zona 1 i a ultimului element
impar din zona 3 i apoi interschimb cele dou
elemente dac exist. Elementele tabloului vor fi afiate
n fiierul BAC.TXT n formatul cerut.
a) Se va scrie definiia complet a subprogramului p.
Pentru antetul subprogramului p se va alege
corespunztor tipul de subprogram, tipul parametrilor i
modul de transfer al acestora. Se vor folosi identificatorii
de subprogram i de parametri formali specificai n
enun.
b) Prin apeluri ale lui p se determin cel mai mare numr
mai mare sau egal cu n, se afieaz acesta i apoi se
scade din n valorea gsit. Procedeul se repet pn
cnd n devine egal cu 0.
Programul citete n i apoi cele n numere naturale
verificnd pentru fiecare proprietatea de ptrat perfect.
Primul ptrat perfect va fi afiat ca atare, pentru fiecare
dintre celelate ptrate perfecte afiandu-se valoarea
precedat de semnul +. Se calculeaz pe parcurs i se
afieaz la final suma ptratelor perfecte citite.
Se parcurg simultan cei doi vectori, prelund alternativ
valori astfel nct valorile preluate s fie n ordine
cresctoare. O rezolvare posibil utilizeaz dou
variabile de tip tablou i cteva variabile simple.
Elementele determinate vor fi afiate n fiierul bac.txt n
formatul cerut.
Se va scrie definiia complet a subprogramului. Pentru
antetul subprogramului sub se va alege corespunztor
tipul de subprogram, tipul parametrilor i modul de
transfer al acestora. Se vor folosi identificatorii de
subprogram i de parametri formali specificai n enun.
O rezolvare de punctaj maxim implic un anumit grad de
creativitate din partea concurentului. Se obine punctaj
parial pentru o soluie ce parcurge numerele de 3 cifre si
pentru fiecare numr se verific dac este n fiier,
afindu-se numai cele mai mari 2 numere ce nu apar n

E_INFO_INTENSIV_C_SIII_010

3.

E_INFO_INTENSIV_PASCAL_SIII_010

E_INFO_INTENSIV_C_SIII_010

4.

E_INFO_INTENSIV_PASCAL_SIII_010

E_INFO_INTENSIV_C_SIII_011

Se urmresc apelurile recursive, determinndu-se


valoarea afiat.

3.

Un algoritm eficient de rezolvare const n faptul c nu


se folosesc variabile de tip tablou, ci la citirea numerelor
din fiier se compar numrul citit cu maximul
elementelor citite anterior, i dac este cazul se
actualizeaz acest maxim i se afieaz.

4.

Se va ine cont de observaia c suma divizorilor unui


numr prim x este egal cu x+1.

3.

Pentru ca soluia este eficient din punct de vedere al


spaiului de memorie utilizat, se vor folosi doar variabile
simple. Pentru a fi eficient din puncte de vedere al
timpului de execuie se va face o singur parcurgere a
fiierelor f1 i f2 folosind un algoritm similar cu cel de
interclasare.

4.

Se citete pe rnd cte un numr de la tastatur, iar


dac acesta are toate cifrele egale, se va mri un contor.
Valoare acestui contor va fi la final afiat pe ecran.

3.

Se va determina folosind o formul matematic grupa din


care face parte numrul cerut, apoi se determin poziia
acestuia n cadrul grupei. Nu se va face o generare
efectiv a irului, ci se determin valoarea cerut doar
prin calcule matematice.
Se citete pe rnd cte un numr din fiierul de intrare,
se elimin apoi cifrele impare din acesta. Dac numrul
rezultat n urma acestor transformri este nenul se scrie
n fiierul de ieire.
Se va contoriza ntr-un vector de cte ori apare fiecare
cifr n irul citit. Se va afia apoi irul cerut, volosind
acest vector.
Se citete pe rnd cte un numr din fiierul de intrare.
Se afieaz apoi pe ecran, iar dac pe linia curent s-au
scris deja 5 valori se trece la linie nou. Se verific apoi
dac suma cifrelor numrului curent este numr par, caz
n care se mrete un contor. Se trece apoi la urmtorul
numr din fiier. n final se va afia valoarea contorului
pe o linie nou de pe ecran.
Se parcurg numerele din intervalul [1,n] i n cazul n
care valoarea curent are mai muli divizori dect
numrul maxim de divizori se modific valoarea
maximului i se memoreaz valoarea curent care are
acest numr de divizori.

E_INFO_INTENSIV_PASCAL_SIII_011

E_INFO_INTENSIV_C_SIII_011
E_INFO_INTENSIV_PASCAL_SIII_011
E_INFO_INTENSIV_C_SIII_012
E_INFO_INTENSIV_PASCAL_SIII_012

E_INFO_INTENSIV_C_SIII_012
E_INFO_INTENSIV_PASCAL_SIII_012
E_INFO_INTENSIV_C_SIII_013
E_INFO_INTENSIV_PASCAL_SIII_013

E_INFO_INTENSIV_C_SIII_013

4.

E_INFO_INTENSIV_PASCAL_SIII_013
E_INFO_INTENSIV_C_SIII_014

3.

E_INFO_INTENSIV_PASCAL_SIII_014
E_INFO_INTENSIV_C_SIII_014

4.

E_INFO_INTENSIV_PASCAL_SIII_014

E_INFO_INTENSIV_C_SIII_015
E_INFO_INTENSIV_PASCAL_SIII_015

O soluie eficient din punct de vedere al timpului de


executie va utiliza un vector cu 9999 elemente n care
indicii reprezint codul unui produs iar valoarea
elementului suma obinut n urma vnzrilor acelui
produs.

E_INFO_INTENSIV_PASCAL_SIII_011
E_INFO_INTENSIV_C_SIII_011

fiier.
Se va scrie definiia complet a subprogramului. Pentru
antetul subprogramului sub se va alege corespunztor
tipul de subprogram, tipul parametrilor i modul de
transfer al acestora. Se vor folosi identificatorii de
subprogram i de parametri formali specificai n enun.

3.

E_INFO_INTENSIV_C_SIII_015

4.

E_INFO_INTENSIV_PASCAL_SIII_015

E_INFO_INTENSIV_C_SIII_016

3.

Subprogramul poate determina numrul cerut,


parcurgnd toate elementele tabloului unidimensional i
contoriznd acele valori care respect condiia impus.

4.

Deoarece fiierul conine maximum 10000 de numere cu


maximum 9 cifre fiecare, nu este corect memorarea
ntr-un tablou unidimensional a cifrelor tuturor numerelor
din fiier i sortarea descresctoare a acestuia. Se obine
punctaj parial pentru o soluie care abordeaz o astfel
de metod. O rezolvare de punctaj maxim implic un
anumit grad de creativitate din partea concurentului.

3.

Subprogramul poate determina numrul cerut,


parcurgnd toate elementele vectorului i contoriznd
acele valori care respect condiia impus.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Se obine punctaj
parial pentru o soluie care memoreaz numerele citite
din fiier ntr-un tablou unidimensional, pastreaz ntr-o
variabil auxiliar primul element al tabloului, sorteaz
cresctor tabloul i determin poziia n tablou a
elementului pstrat anterior n variabila auxiliar.

3.

Subprogramul poate determina numrul cerut, calculnd


media aritmetic a tuturor elementelor tabloului
unidimensional i contoriznd apoi acele valori ale
tabloului care respect condiia impus.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Se obine punctaj
parial pentru o soluie care memoreaz numerele citite
din fiier ntr-un tablou unidimensional, sorteaz
descresctor tabloul i determin poziia n tablou a
valorii memorate n variabila k.

3.

O posibil rezolvare folosete principiul sortrii unui


vector prin metoda bulelor, interschimbnd 2 elemente
vecine, dac un element negativ se afl imediat dup
unul pozitiv.

4.

ntruct numrul de numere din fiecare fiier este foarte


mare, nu este corect memorarea acestor numere n
tablouri unidimensionale, n vederea concatenrii i
sortrii acestor tablouri. O rezolvare care se bazeaz pe
acest pricipiu va primi punctaj parial. O rezolvare de
punctaj maxim implic un anumit grad de creativitate din
partea concurentului.

3.

O posibil rezolvare folosete principiul sortrii unui


vector prin metoda bulelor, interschimbnd 2 elemente
vecine, dac un element nenul se afl imediat dup unul
nul.

4.

ntruct numrul de numere din fiecare fiier este foarte


mare, nu este corect memorarea acestor numere n

E_INFO_INTENSIV_PASCAL_SIII_016
E_INFO_INTENSIV_C_SIII_016
E_INFO_INTENSIV_PASCAL_SIII_016

E_INFO_INTENSIV_C_SIII_017
E_INFO_INTENSIV_PASCAL_SIII_017
E_INFO_INTENSIV_C_SIII_017
E_INFO_INTENSIV_PASCAL_SIII_017

E_INFO_INTENSIV_C_SIII_018
E_INFO_INTENSIV_PASCAL_SIII_018

E_INFO_INTENSIV_C_SIII_018
E_INFO_INTENSIV_PASCAL_SIII_018

E_INFO_INTENSIV_C_SIII_019
E_INFO_INTENSIV_PASCAL_SIII_019

E_INFO_INTENSIV_C_SIII_019
E_INFO_INTENSIV_PASCAL_SIII_019

E_INFO_INTENSIV_C_SIII_020
E_INFO_INTENSIV_PASCAL_SIII_020

E_INFO_INTENSIV_C_SIII_020
E_INFO_INTENSIV_PASCAL_SIII_020

Se vor folosi dou variabile x i y care vor memora


ultimele dou numere prime. Se citesc pe rnd numerele
din fiier, iar la ntlnirea unui numr prim se
actualizeaz valorile variabilelor x i y. n final dac s-au
ntlnit cel puin dou numere prime se vor afia ultimele
dou, n caz contrar se va afia mesajul corespunztor.

tablouri unidimensionale, n vederea determinrii


elementelor comune acestor tablouri. O rezolvare care
se bazeaz pe acest principiu va primi punctaj parial. O
rezolvare de punctaj maxim implic un anumit grad de
creativitate din partea concurentului.
E_INFO_INTENSIV_C_SIII_021

3.

p1=n; ct timp p1 nu e prim p1=p1-1


p2=n; ct timp p2 nu e prim p2=p2+1
rezultatul = p2-p1

4a.

s=0, pt.i=1,k s=s+xi;


smax=s; imax=1
pt,. i=k+1,n-k+1
s=s+xi-xi-k
dac s>smax smax=s; imax=i
scrie imax

4b.

Algoritmul propus calculeaz suma maxim n loc de


media aritmetic maxim, printr-o simgur parcurgere a
irului, reinnd suma maxim i indicele primului termen
al acestei sume.La calculul unei sume noi se adun doar
un termen i se scade unul din suma precedent

3a.

Se calculeaz exponentul lui 5 din descompunerea n


factori primi a lui n!. Acesta este [n/5]+[n/52]+[n/53]+...

3b.

n=5;
ct timp nz(n) < k

E_INFO_INTENSIV_PASCAL_SIII_021
E_INFO_INTENSIV_C_SIII_021
E_INFO_INTENSIV_PASCAL_SIII_021

E_INFO_INTENSIV_C_SIII_021
E_INFO_INTENSIV_PASCAL_SIII_021

E_INFO_INTENSIV_C_SIII_022
E_INFO_INTENSIV_PASCAL_SIII_022
E_INFO_INTENSIV_C_SIII_022
E_INFO_INTENSIV_PASCAL_SIII_022
E_INFO_INTENSIV_C_SIII_022

4.

p=1
ct timp p*2<=b p=p*2
dac p>=a scrie p altfel scrie 0

3a.

aux=x[1]
pt. i=1,n-1 x[i]=x[i+1]
x[n]=aux

3b.

shift(n,x) pune pe poziia n pe x[1], iar pe prima poziie pe


x[2];
shift(n-1,x) pune pe poziia n-2 pe x[2]
apoi shift(n-2,x), ...

4.

pt. i=1,n
disjunct=1
pt. j=1,n
dac ij i ai[aj, bj] sau bi[aj, bj] disjunct=0
dac disjunct=0 scrie ai, bi

3a.

Subrogramul are 5 parametri: doi parametri de intrare n


i x i 3 parametri de ieire (de tip referin) maxi, mini,
sum. Minimul, maximul i suma se calculeaz printr-o
parcurgere a irului x

3b.

Dup citirea datelor se apeleaz p(n,x,mini,maxi,sum) i


se calculeaz media cu (sum-mini-maxi)/(n-2)

4.

Dup citirea datelor cu memorarea tabloului ntr-un


vector x se parcurge vectorul pn la gsirea primului
termen >=a. dac nu e <=b se afieaz NU, altfel se
afieaz termenul respectiv.

3.

nr=0; par=0
pentru i=0,n-1 execut

E_INFO_INTENSIV_PASCAL_SIII_022
E_INFO_INTENSIV_C_SIII_023
E_INFO_INTENSIV_PASCAL_SIII_023
E_INFO_INTENSIV_C_SIII_023
E_INFO_INTENSIV_PASCAL_SIII_023

E_INFO_INTENSIV_C_SIII_023
E_INFO_INTENSIV_PASCAL_SIII_023

E_INFO_INTENSIV_C_SIII_024
E_INFO_INTENSIV_PASCAL_SIII_024

E_INFO_INTENSIV_C_SIII_024
E_INFO_INTENSIV_PASCAL_SIII_024
E_INFO_INTENSIV_C_SIII_024
E_INFO_INTENSIV_PASCAL_SIII_024

E_INFO_INTENSIV_C_SIII_025
E_INFO_INTENSIV_PASCAL_SIII_025

n=n+5

dac ai mod 2 = 0 atunci par=1; nr=nr*10+ai


dac par=0 returneaz -1 altfel returneaz nr
E_INFO_INTENSIV_C_SIII_025

4b.

Se pornete de la fracia x/1 i prin max. 7 nmuliri se


obin dou numere ntregi. Simplificarea fraciei obinute
se face calculnd cmmdc cu algoritmul lui Euclid.

4a.

numarator=x; numitor=1
ct timp numarator [numrtor]
numitor=numitor*10; numrator=numarator*10
d=cmmdc(numarator, numitor)
scrie numarator/d, numitor/d
Se afieaz irul n*k, n*(k-1), ... ,n*1

E_INFO_INTENSIV_PASCAL_SIII_025
E_INFO_INTENSIV_C_SIII_025
E_INFO_INTENSIV_PASCAL_SIII_025

E_INFO_INTENSIV_C_SIII_026

3.

E_INFO_INTENSIV_PASCAL_SIII_026
E_INFO_INTENSIV_C_SIII_026

4.

E_INFO_INTENSIV_PASCAL_SIII_026

E_INFO_INTENSIV_C_SIII_027

3.

E_INFO_INTENSIV_PASCAL_SIII_027
E_INFO_INTENSIV_C_SIII_027

4.

E_INFO_INTENSIV_PASCAL_SIII_027

E_INFO_INTENSIV_C_SIII_028

3.

E_INFO_INTENSIV_PASCAL_SIII_028

E_INFO_INTENSIV_C_SIII_028

4.

E_INFO_INTENSIV_PASCAL_SIII_028

E_INFO_INTENSIV_C_SIII_029
E_INFO_INTENSIV_PASCAL_SIII_029

3.

Subprogramul sterge realizeaz deplasarea celor n-j


elemente aflate n vector, dup secvena care se terge,
la nceputul acesteia (ncepnd cu poziia i). Numrul de
elemente se micoreaz cu o valoare egal cu numrul
de elemente ale secvenei eliminate (j-i+1).
n programul principal se identific, pentru fiecare
element vi secvena care urmeaz i este format din
elemente cu aceeai valoare i se sterge. Rmn astfel
doar elemente distincte.
Se mparte numrul y la 10 pn cnd acesta devine
subunitar. Funcia returneaz suma dintre x i valoarea
variabilei y dup transformarea menionat anterior.
Numrul de numere ntregi dintr-un interval (x;y) este
egal cu y-1-x+1+1.
Este suficient s actualizm acest variabila care va
memora valoarea cerut pentru fiecare pereche de
numere aflate pe poziii consecutive n irul numerelor
din fiier, numere ce reprezint capetele unor intervale
ce nu conin nici un alt interval determinat de numerele
din fiier.
Algoritmul este eficient din punct de vedere al memoriei
utilizate (complexitate O(1)) ntruct utilizez un numr
constant de variabile simple (nestructurate), numrul
acestora nedepinznd de numrul de numere din fiier.
Numrm elementele x[i] din irul de numere x, ce au
proprietatea s-x[i]=x[i]*(n-1) unde s este suma celor n
elemente. Este posibil ca aceast sum s depeasc
domeniul aferent tipului de date ales i de aceea
verificm dac elementul x[i] are proprietatea
n
x[ j ] x[i ]

= x[i ] .

n
1 n 1
j =1
Pentru a verifica dac numrul x este aproape prim,
calculm primul su divizor y mai mare dect 1 i
determinm z=x/y. Numrul z trebuie s fie prim i diferit
de y. Se observ c un numr z este prim dac
prim(z)=z.
Citim irul de valori i actualizm la fiecare pas valoarea
variabilei ce reine maximul aproape prim.
Valoarea returnat de subprogram poate fi obinut prin
parcurgerea intervalului [a;b] numrarea elementelor x
din acest interval cu proprietatea c x%c=0 sau utiliznd
o formul direct de calcul b/c-a/c+1.

E_INFO_INTENSIV_C_SIII_029

4.

E_INFO_INTENSIV_PASCAL_SIII_029

E_INFO_INTENSIV_C_SIII_030

3.

E_INFO_INTENSIV_PASCAL_SIII_030
E_INFO_INTENSIV_C_SIII_030

4.

E_INFO_INTENSIV_PASCAL_SIII_030

E_INFO_INTENSIV_C_SIII_031

Se urmresc apelurile recursive, determinndu-se


valoarea returnat de subprogram.

3.

Se ordoneaz cresctor elementele teabloului


unidimensional i se calculeaz apoi suma primelor m
(cele mai mici) elemente.

4.

Se citesc datele din fiieriar i se calculeaz capetele


segmentului de intersecie. Acesta va fi detrminat de
valoarea maxim a capetelor din stnga a tuturor
segmentelor date i valorarea minim a capetelor din
dreapta.

2.

Se urmresc apelurile recursive, determinndu-se


valoarea returnat de subprogram.

3.

Se parcurg numerele naturale mai mari dect x, pn la


ntlnirea primului numr prim ntlnit. Acesta va fi cel
mai mic numr prim, strict mai mare dect x.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Se obine punctaj
parial pentru o soluie care memoreaz numerele citite
din fiier ntr-un tablou, apoi parcurge tabloul i
determin cele mai mari dou valori ale acestuia.

2.

Se urmresc apelurile recursive, determinndu-se


valoarea returnat de subprogram.

3.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Se obine punctaj
parial pentru o soluie care memoreaz toate numerele
citite din fiier ntr-un tablou i folosind apelul
subprogramului max_cif, detrmin afiarea celui mare

E_INFO_INTENSIV_PASCAL_SIII_031
E_INFO_INTENSIV_C_SIII_031
E_INFO_INTENSIV_PASCAL_SIII_031

E_INFO_INTENSIV_C_SIII_032
E_INFO_INTENSIV_PASCAL_SIII_032
E_INFO_INTENSIV_C_SIII_032
E_INFO_INTENSIV_PASCAL_SIII_032
E_INFO_INTENSIV_C_SIII_032
E_INFO_INTENSIV_PASCAL_SIII_032

E_INFO_INTENSIV_C_SIII_033
E_INFO_INTENSIV_PASCAL_SIII_033
E_INFO_INTENSIV_C_SIII_033
E_INFO_INTENSIV_PASCAL_SIII_033

Suprogramul va calcula suma primelor i-1 elemente i


ultimelor (n-j) elemente din tabloul unidimensional
transmis ca parametru.
Pentru determinarea numrului minim de intervale nr
iniializm o variabil p cu partea ntreag a primului
numr real din fiier. Aceast variabil se va modifica
(p=[x])atunci cnd numrul x citit din fiier se gsete n
afara intervalului [p;p+1].Variabila nr se mrete cu o
unitate de fiecare dat cnd se modific valoarea
variabilei p.

2.

E_INFO_INTENSIV_PASCAL_SIII_031
E_INFO_INTENSIV_C_SIII_031

Verificm mai nti dac este ndeplinit condiia necesar


mn i, n caz afirmativ, continum cu citirea celor n
numere care formeaz primul tablou.
Citim pe rnd cte un element x de pe linia a treia din fiier.
Dac valoarea acestuia este mai mic dect valaorea
elementului curent din A atunci rspunsul va fi NU i
parcurgerea se ncheie, altfel scdem elementul curent din
A din x i trecem pe elementul urmtor n vectorul A.
Citirea unui nou element x de pe linia a treia din fiier se
face atunci cnd elementul curent x este nul. Rspunsul
DA va fi afiat atunci cnd parcurgerea celor dou iruri se
ncheie simultan. Algoritmul este liniar pentru c face cel
mult o trecere simultan prin cei doi vectori, trecere absolut
necesar atunci cnd proprietatea cerut este ndeplinit.

numr de trei cifre memorat n fiier.


E_INFO_INTENSIV_C_SIII_034

2.

Se urmresc apelurile recursive, determinndu-se


valoarea returnat de subprogram.

3.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Se obine punctaj
parial pentru un subprogram care determin valoarea
maxim a unei progresii prin parcurgerea element cu
element a tabloului.

E_INFO_INTENSIV_PASCAL_SIII_034
E_INFO_INTENSIV_C_SIII_034
E_INFO_INTENSIV_PASCAL_SIII_034

Se citesc datelor din fiier i se determin acea valoare


maxim care este i termen al unei progresii aritmetice.
E_INFO_INTENSIV_C_SIII_035

3.

Se citesc din fiier datele existente, iar dintre valorile


memorate pe a doua linie a fiierului, se vor afia pe
ecran doar cele care ndeplinesc condiiile enunate de
problem.

4.

O posibil rezolvare const n memorarea ntr-un tablou


unidimensional a valorilor detrminate prin calculul sumei
divizorilor fiecrui numr citit de la tastatur. Se
ordoneaz apoi cresctor tabloul astfel construit i se
afieaz pe ecran valorile n formatul cerut.

2.

Din exemplu se deduce modalitatea de generare, i se


adapteaz pentru valoarea cerut.

3.

Subprogramul determin ultima cifr par din numr. Se


i-au cifrele numrului pe rnd, ncepnd cu cifra unitilor
i se verific dac acestea respect condiia enunului.

3.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Se obine punctaj
parial pentru o soluie care memoreaz ntr-un vector,
pentru fiecare numr citit din fiier cifra par, apoi
sorteaz descresctor, elementele acestuia.

2.

Se urmresc apelurile recursive, determinndu-se


valoarea afiat.

3.

Se declar un tablou unidimensional cu cel mult 100


elemente. O rezolvare posibil citete valorile lui n
respectiv k i toate elementele tabloului, apoi parcurge
tabloul permutnd elementele acestuia conform
enunului.

4.

Se scrie antetul subprogramului, urmrind cerina.

E_INFO_INTENSIV_PASCAL_SIII_035

E_INFO_INTENSIV_C_SIII_035
E_INFO_INTENSIV_PASCAL_SIII_035

E_INFO_ INTENSIV_C_SIII_036
E_INFO_ INTENSIV_PASCAL_SIII_036
E_INFO_ INTENSIV_C_SIII_036
E_INFO_ INTENSIV_PASCAL_SIII_036
E_INFO_ INTENSIV_C_SIII_036
E_INFO_ INTENSIV_PASCAL_SIII_036

E_INFO_ INTENSIV_C_SIII_037
E_INFO_ INTENSIV_PASCAL_SIII_037
E_INFO_ INTENSIV_C_SIII_037
E_INFO_ INTENSIV_PASCAL_SIII_037

E_INFO_ INTENSIV_C_SIII_037
E_INFO_ INTENSIV_PASCAL_SIII_037

E_INFO_ INTENSIV_C_SIII_038

O soluie posibil citete cele n elemente din fiierul


bac.in i le reine ntr-un tablou unidimensional. Se
parcurge vectorul i prin apeluri ale funciei se determin
poziia primului element care respect condiia din enun.
n mod similar se parcurge irul de la sfrsit i se
determin i al doilea element cerut.
2.

Se urmresc apelurile recursive, determinndu-se


valoarea afiat.

3.

Subprogramul adaug la numrul pe care l formm cifre


ale numrului dat care respect proprietatea din enun.

4.

Se scrie definiia complet a subprogramului, urmrind

E_INFO_ INTENSIV_PASCAL_SIII_038
E_INFO_ INTENSIV_C_SIII_038
E_INFO_ INTENSIV_PASCAL_SIII_038
E_INFO_ INTENSIV_C_SIII_038

cerina.

E_INFO_ INTENSIV_PASCAL_SIII_038

O soluie posibil citete cele n elemente din fiierul


bac.in i le reine ntr-un tablou unidimensional. Se
sorteaz vectorul utiliznd apeluri ale subprogramului.
E_INFO_ INTENSIV_C_SIII_039

2.

Se urmresc apelurile recursive, determinndu-se


valoarea afiat.

3.

O soluie posibil citete cele n elemente din fiierul


bac.in i le reine ntr-un tablou unidimensional. Se
parcurge vectorul i se compar dou cte dou
elementele pare pentru a verifica dac sunt n ordine
cresctoare.

4.

Se scrie antetul subprogramului, urmrind cerina.

E_INFO_ INTENSIV_PASCAL_SIII_039
E_INFO_ INTENSIV_C_SIII_039
E_INFO_ INTENSIV_PASCAL_SIII_039

E_INFO_ INTENSIV_C_SIII_039

Se citete numrul, se elimin cte o cifr i pentru


fiecare numr astfel determinat se apeleaz funcia. Se
afieaz acele valori pentru care este respectat condiia
din enun.

E_INFO_ INTENSIV_PASCAL_SIII_039

E_INFO_ INTENSIV_C_SIII_040

2.

Se urmresc apelurile recursive, determinndu-se


valoarea afiat.

3.

O soluie posibil citete cele n elemente din fiierul


bac.in i le reine ntr-un tablou unidimensional. Se
parcurge vectorul i se compar dou cte dou
elementele pare pentru a verifica dac sunt n ordine
cresctoare i se compar dou cte dou elementele
impare pentru a verifica dac sunt n ordine
descresctoare.

4.

Se scrie definiia complet a subprogramului cerut.

E_INFO_ INTENSIV_PASCAL_SIII_040
E_INFO_ INTENSIV_C_SIII_040
E_INFO_ INTENSIV_PASCAL_SIII_040

E_INFO_ INTENSIV_C_SIII_040
E_INFO_ INTENSIV_PASCAL_SIII_040

E_INFO_INTENSIV_C_SIII_041

Se citete numrul n. Se apeleaz subprogramul sdiv


verificnd apoi dac rezultatul apelului este un numr
prim (direct n program sau cu ajutorul unui alt
subprogram complet definit).
4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Elementul maxim
ct i numarul de apariii ale acestuia trebuie sa se
determine la o singur parcurgere a fiierului fr a mai
utiliza vreun tablou.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Elementele unice
trebuie determinate la o singur parcurgere a fiierului.
Se poate utiliza un vector caracteristic.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Cifrele ce formeaz
numrul trebuie determinate la o singur parcurgere a
fiierului. Se poate utiliza un vector caracteristic.

3.

Pentru a<b, se afieaz ptratele tuturor numerelor prime

E_INFO_INTENSIV_PASCAL_SIII_041

E_INFO_INTENSIV_C_SIII_042
E_INFO_INTENSIV_PASCAL_SIII_042

E_INFO_INTENSIV_C_SIII_043
E_INFO_INTENSIV_PASCAL_SIII_043

E_INFO_INTENSIV_C_SIII_044

din intervalul [ a, b ].

E_INFO_INTENSIV_PASCAL_SIII_044
E_INFO_INTENSIV_C_SIII_044
E_INFO_INTENSIV_PASCAL_SIII_044

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Cifrele ce apar n
scrierea numerelor trebuie determinate la o singur
parcurgere a fiierului. Se poate utiliza un vector
caracteristic.

E_INFO_INTENSIV_C_SIII_045

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Numerelor trebuie
sortate la o singur parcurgere a fiierului. Se poate
utiliza un vector caracteristic.

2.

Se calculeaz suma primilor termeni ai unei progresii


aritmetice.

3.

Se citete de la tastatur k, din fiier n. Pentru fiecare


numr citit din fiier se calculeaz numrul de divizori (se
poate folosi un subprogram) i, dac acesta este cel
puin egal cu k, numrul citit se memoreaz n vector, pe
o nou poziie.

4.

a) Primul parametru, nr, este transmis prin valare, ceilali


doi, nc i sc, prin referin.

E_INFO_INTENSIV_PASCAL_SIII_045

E_INFO_INTENSIV_C_SIII_046
E_INFO_INTENSIV_PASCAL_SIII_046
E_INFO_INTENSIV_C_SIII_046
E_INFO_INTENSIV_PASCAL_SIII_046

E_INFO_INTENSIV_C_SIII_046
E_INFO_INTENSIV_PASCAL_SIII_046

b) Se poate demonstra c o cifr c din numr ce


respect condiia cerut, verific i relaia c = sc / nc.
E_INFO_INTENSIV_C_SIII_047

3.

Pentru fiecare numr citit din fiier, se mparte acel


numr cu k de cte ori este posibil, urmrind ca, n final,
ctul s fie egal cu 1.

4.

a) Primul parametru, nr, este transmis prin valare, al


doilea, s, prin referin.

E_INFO_INTENSIV_PASCAL_SIII_047
E_INFO_INTENSIV_C_SIII_047
E_INFO_INTENSIV_PASCAL_SIII_047

b) O soluie posibil const n citirea i memoraea celor


n numere. La o parcurgere se determin suma maxim
comparnd valorile furnizate la apelurile subprogramului
cif, cu un maxim de referin. La a doua parcurgere, se
afieaz numerele care au suma cifrelor egal cu
maximul determinat.
E_INFO_INTENSIV_C_SIII_048

3.

E_INFO_INTENSIV_PASCAL_SIII_048

a) Parametri se transmit prin valoare. Rezultatul este


ntreg. Subprogramul poate fi recursiv.
b) Se determin cel mai mare divizor comun dintre
fiecare numr x aparinnd intervalului [1,n] i n. Se
numr valorile pentru care cel mai mare divizor comun
este 1.

E_INFO_INTENSIV_C_SIII_048

4.

Pentru fiecare numr nr, citit dintre cele n, se determin


frecvena de apariie. Se afieaz elementele care au
frecvena de aparie egal cu 1.

3.

Se memoreaz cele n numere citite, se ordoneaz


cresctor irul S memorat i apoi se verific pentru
fiecare pereche de elemente vecine relaia Si-Si-1=i-1.

4.

a) Primul parametru se transmite prin valoare, al doilea


prin refrin.
b) Se pot determina, pe msur ce se citesc numerele,
cifra maxim a fiecruia (furnizat la apelul cmax),
obinnd prin comparri, n dou variabile, maximul
acestor rezultate i valoarea cea mai mic pentru care
cmax furnizeaz o cifr egal cu maximul determinat.

3.

b) Pentru a<b, se parcurge intervalul [a,min(n,b)]. Se


verific divizibilitatea lui n cu toate numerele din interval
cu ajutorul apelurilor funciei divxy.

4.

Se poate utilize un vector de frecvene. Se afieaz


elementele care au frecvena mai mare dect 1.

E_INFO_INTENSIV_PASCAL_SIII_048
E_INFO_INTENSIV_C_SIII_049
E_INFO_INTENSIV_PASCAL_SIII_049
E_INFO_INTENSIV_C_SIII_049
E_INFO_INTENSIV_PASCAL_SIII_049

E_INFO_INTENSIV_C_SIII_050
E_INFO_INTENSIV_PASCAL_SIII_050
E_INFO_INTENSIV_C_SIII_050
E_INFO_INTENSIV_PASCAL_SIII_050

E_INFO_INTENSIV_C_SIII_051
E_INFO_INTENSIV_PASCAL_SIII_051

a) Pentru calcularea ptratului distantei se foloseste


formula: ( xa xb) 2 + ( ya yb) 2 .
b) Se pot calcula cele 6 distane posibile i, dac cele mai
mici 4 dintre ele sunt egale ntre ele i cele dou mai mari
sunt egale ntre ele, atunci punctele pot forma un ptrat.
Se pot memora toate valorile pare ntr-un alt tablou b, iar
cele impare ntr-un alt tablou c, afindu-se toate perechile
posibile bi,bj i toate perechile posibile ci,cj
a) Subprogramul testeaz, prin comparri de elemente,
dac oricare dou componente ale lui a au valori diferite.
b) Se memoreaz toate numerele din fiier ntr-un vector i
apoi se fac apeluri ale subporgramului mult pentru valori
succesive corespunztoare parametrului n pn ce funcia
returneaz valoarea false/0.
Se poate calcula x din irul x, x+1, x+2, x+k-1 astfel nct
suma termenilor irului s fie egal cu n.

E_INFO_INTENSIV_C_SIII_051
E_INFO_INTENSIV_PASCAL_SIII_051

E_INFO_INTENSIV_C_SIII_052
E_INFO_INTENSIV_PASCAL_SIII_052

E_INFO_INTENSIV_C_SIII_052
E_INFO_INTENSIV_PASCAL_SIII_052

E_INFO_INTENSIV_C_SIII_053
E_INFO_INTENSIV_PASCAL_SIII_053

3b

Se numr perechile care au cmmdc=1

E_INFO_INTENSIV_C_SIII_053
E_INFO_INTENSIV_PASCAL_SIII_053

E_INFO_INTENSIV_C_SIII_054
E_INFO_INTENSIV_PASCAL_SIII_054

E_INFO_INTENSIV_C_SIII_054
E_INFO_INTENSIV_PASCAL_SIII_054

Se poate memora irul de numere din fiier de dou ori,


ntr-un vector de lungime dubl. Fiecare permutare va fi o
subsecven de lungime n a acestui vector.
Dac numrul nu este palindrom, se pot determina: cel
mai mare palindrom mai mic dect n i cel mai mic
palindrom mai mare dect n, alegndu-se cel mai apropiat
de n.
Se pot sorta construi toate sumele de cte dou elemente
diferite din ir.

E_INFO_INTENSIV_C_SIII_055
E_INFO_INTENSIV_PASCAL_SIII_055

3a

Se construieste un tablou cu toate cifrele numarului si apoi


se ordoneaza crescator elementele tabloului.

O soluie posibil citete numerele date i construiete n


memorie cele dou tablouri, apoi pe al treilea, pe baza
relaiei date.

3.

Se citesc numerele din fiier, pn la sfritul acestuia i


se rein cele pare ntr-un vector care este apoi sortat.
Componentele vectorului sunt apoi afiate pe ecran.
Avnd n vedere c numerele din fiier au cel mult 4 cifre
fiecare, problema se poate rezolva i cu un vector de
frecvene (f[i]=numrul de apariii ale lui i n fiier).

4.

Rezultatul cerut se calculeaz apelnd funcia numar


pentru b i a-1.

3.

Se citesc numerele din fiier, pn la sfritul acestuia,


se rein ntr-un vector i se genereaz toate sumele a
cte dou elemente din vector. Avnd n vedere c
numerele din fiier au cel mult 4 cifre fiecare, sumele vor
fi mai mici dect 20000 i deci se poate folosi un vector
ale crui componente au valori 0 sau 1: f[i]=1 dac i
numai dac i se poate obine ca sum de numere din
fiier. O alt variant de rezolvare este reinerea sumelor
ntr-un vector, sortarea acestuia i eliminarea dublurilor
(prin modificarea vectorului sau direct la afiare).

E_INFO_INTENSIV_C_SIII_055
E_INFO_ INTENSIV_PASCAL_SIII_055
E_INFO_INTENSIV_C_SIII_056
E_INFO_INTENSIV_PASCAL_SIII_056

E_INFO_INTENSIV_C_SIII_056
E_INFO_INTENSIV_PASCAL_SIII_056
E_INFO_INTENSIV_C_SIII_057
E_INFO_INTENSIV_PASCAL_SIII_057

E_INFO_INTENSIV_C_SIII_057

4.

Rezultatul cerut se calculeaz apelnd funcia multiplu


pentru b i a-1.

3.

Se citesc numerele din fiier, pn la sfritul acestuia.


Se pstreaz (fiecare fiind reinut n alt variabil) cele
mai mici 3 numere gsite pn la ultima citire. Se
compar ultimul numr citit cu cele 3 variabile i, dac
este cazul se modific valorile acestora. O alt variant
de rezolvare, mai puin eficient, se bazeaz pe un
vector n care sunt reinute toate numerele citite, apoi
vectorul este ordonat cresctor i se afieaz primele 3
componente.

4.

Rezultatul cerut se calculeaz apelnd funcia divizor i


lund n considerare faptul c un numr prim are ca
divizori doar pe 1 i pe el nsui.

3.

Se citesc numerele din fiier, pn la sfritul acestuia.


Se rein pe parcursul citirii cele mai mari 3 numere gsite
pn la momentul respectiv. Se compar fiecare numr
citit cu cele 3 variabile i, dac este cazul, se modific
valorile acestora. O alt variant de rezolvare, mai puin
eficient, reine ntr-un vector toate numerele citite, apoi
ordoneaz vectorul i se afieaz ultima cifr a
produsului primelor/ultimelor 3 componente.

4.

Rezultatul cerut se calculeaz apelnd funcia divizor i


lund n considerare faptul c un numr prim are ca
divizori doar pe 1 i pe el nsui.

3.

Se citesc numerele din fiier, pn ce se ntlnete


valoarea x sau pn la sfritul acestuia.

4.

Funcia radical furnizeaz prin intermediul lui x partea


ntreaga a radicalului lui a. n programul principal trebuie
verificat dac prin ridicarea la ptrat a rezultatului funciei
se obine n.
a) se determin ultima cifr a prii ntregi.
b) programul calculeaz diferena dintre partea
ntreag a celor dou numere prin apeluri ale
funciei cifra. Se va avea n vedere i situaia n
care unul dintre numerele citite este 10.
Se poate utiliza o matrice de frecvene (fij=numrul
de apariii ale perechii formate din vocala a i-a
urmat de vocala a j-a) sau un vector de frecvene
(vi= numrul de apariii ale perechii formate din
vocala cu numrul de ordine i div 5, urmat de
vocala cu numrul i mod 5, cu numerotare de la 0)
Subprogramul genereaz primii [3n/2] termeni ai
irului, memornd doar pe cei impari (ignor termenii
de rang divizibil cu 3)
O soluie posibil utilizeaz un vector de apariii
a0,a1,...a99 iniializat cu zero. Un element a[i] va
memora valoarea 1 la citirea din fiier a numrului i.
Rezultatele vor fi afiate prin parcurgerea succesiv
a vectorului de la primul la ultimul element, pentru
numerele impare i apoi n ordine invers pentru
numerele pare.
a) o posibilitate de implementare a subprogramului
verif se bazeaz pe extragerea cifrelor numrului

E_INFO_INTENSIV_PASCAL_SIII_057
E_INFO_INTENSIV_C_SIII_058
E_INFO_INTENSIV_PASCAL_SIII_058

E_INFO_INTENSIV_C_SIII_058
E_INFO_INTENSIV_PASCAL_SIII_058
E_INFO_INTENSIV_C_SIII_059
E_INFO_INTENSIV_PASCAL_SIII_059

E_INFO_INTENSIV_C_SIII_059
E_INFO_INTENSIV_PASCAL_SIII_059
E_INFO_INTENSIV_C_SIII_060
E_INFO_INTENSIV_PASCAL_SIII_060
E_INFO_INTENSIV_C_SIII_060
E_INFO_INTENSIV_PASCAL_SIII_060
E_INFO_INTENSIV_C_SIII_061
E_INFO_INTENSIV_PASCAL_SIII_0
61

E_INFO_INTENSIV_C_SIII_061
E_INFO_INTENSIV_PASCAL_SIII_0
61

E_INFO_INTENSIV_C_SIII_062
E_INFO_INTENSIV_PASCAL_SIII_0
62
E_INFO_INTENSIV_C_SIII_062
E_INFO_INTENSIV_PASCAL_SIII_0
62

E_INFO_INTENSIV_C_SIII_063
E_INFO_INTENSIV_PASCAL_SIII_0

63

E_INFO_INTENSIV_C_SIII_063
E_INFO_INTENSIV_PASCAL_SIII_0
63
E_INFO_INTENSIV_C_SIII_064
E_INFO_INTENSIV_PASCAL_SIII_0
64

E_INFO_INTENSIV_C_SIII_064
E_INFO_INTENSIV_PASCAL_SIII_0
64

E_INFO_INTENSIV_C_SIII_065
E_INFO_INTENSIV_PASCAL_SIII_0
65
E_INFO_INTENSIV_C_SIII_065
E_INFO_INTENSIV_PASCAL_SIII_0
65
E_INFO_INTENSIV_C_SIII_066

Subprogramul poate determina numrul cerut


parcurgnd toate elementele tabloului i determinnd
maximul dintre divizorii comuni ai elementelor tabloului.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate. Se obine punctaj parial pentru o soluie
care memoreaz numerele citite din fiiere n tablouri,
apoi parcurgem tablourile i determinm i afim
numrul de numere cu proprietatea cerut.

3.

Subprogramul poate determina numrul cerut


parcurgnd toate elementele tabloului i determinnd
numrul de numere prime din tablou.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate. Se obine punctaj parial pentru o soluie
care memoreaz numerele citite ntr-un tablou i
prelucreaz datele prin parcurgeri repetate ale tabloului.

Se poate apela subprogramul pentru fiecare rang, de la 1


la 8.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate. Se obine punctaj parial pentru o soluie
care memoreaz numerele citite ntr-un tablou i
prelucreaz datele prin parcurgeri repetate ale tabloului.

3.

b) Se parcurg valorile n, n+1 etc, pn ce se obine un


numr penttru care calcul returneaz valoarea 0.

4.

Se afieaz valorile pare pe parcursul citirii, cele impare

E_INFO_INTENSIV_PASCAL_SIII_067
E_INFO_INTENSIV_C_SIII_067
E_INFO_INTENSIV_PASCAL_SIII_067

E_INFO_INTENSIV_C_SIII_068
E_INFO_INTENSIV_PASCAL_SIII_068
E_INFO_INTENSIV_C_SIII_068
E_INFO_INTENSIV_PASCAL_SIII_068

E_INFO_INTENSIV_C_SIII_069
E_INFO_INTENSIV_PASCAL_SIII_069
E_INFO_INTENSIV_C_SIII_069

a) O posibilitate de implementare a subprogramului


sfx utilizeaz extragerea ultimelor 3 cifre ale
numrului i compararea acestora.
b) se poate apela sfx pentru n, [n/10] i [n/1000].
Se rein, pe parcursul citirii, ultimii 3 termeni din ir,
verificnd proprietatea din enun.

3.

E_INFO_INTENSIV_PASCAL_SIII_066

E_INFO_INTENSIV_C_SIII_067

Programul realizeaz prelucrarea cerut citind pe


rnd din fiier cte un numr pe care l compar cu
cel citit anterior. Dac dou numere citite consecutiv
sunt n ordinea cerut n enun atunci se mrete
lungimea secvenei altfel se compar cu un max.

Se urmresc apelurile recursive, determinndu-se


valoarea cerut.

E_INFO_INTENSIV_PASCAL_SIII_066
E_INFO_INTENSIV_C_SIII_066

O posibilitate de implementare a subprogramului


diviz utilizeaz dou structuri for imbricate pentru
obinerea perechilor de numere i apoi verificarea
condiiilor de divizibilitate.

2.

E_INFO_INTENSIV_PASCAL_SIII_066
E_INFO_INTENSIV_C_SIII_066

ntr-un vector i compararea tuturor secvenelor de 3


cifre alturate.
b) programul extrage primele 3 cifre ale numrului
prin mprire la 1000 i apeleaz funcia verif.
Se rein, pe parcursul citirii, ultimii 3 termeni din ir,
verificnd proprietatea din enun.

fiind memorate i afiate ulterior.

E_INFO_INTENSIV_PASCAL_SIII_069
E_INFO_INTENSIV_C_SIII_070

3.

Parametrul n va fi transmis prin adres, iar x prin


referin.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate. Se obine punctaj parial pentru o soluie
care memoreaz numerele citite ntr-un tablou, apoi
parcurge tabloul determinnd cele dou valori cerute.

3.

a) Se verific proprietatea impus determinnd inversul


sau memornd cifrele ntr-un vector i verificnd simetria.

E_INFO_INTENSIV_PASCAL_SIII_070
E_INFO_INTENSIV_C_SIII_070
E_INFO_INTENSIV_PASCAL_SIII_070

E_INFO_INTENSIV_C_SIII_071
E_INFO_INTENSIV_PASCAL_SIII_071

b) Pe parcursul citirii, pentru numerele care au


proprietatea de palindrom, se determin valoarea
maxim i numr de apariii.
E_INFO_INTENSIV_C_SIII_072

3.

E_INFO_INTENSIV_PASCAL_SIII_072

a) Se va calcula discriminantul ecuaiei i n funcie de


valoarea acestuia se vor determina valorile soluiilor.
b) Se poate determina grupul x din care face parte
termenul de rang k, prin rezolvarea ecuaiei x(x+1)/2=k.
Dac se realizeaz cerina fr a utiliza subprogramul de
la punctul a, genernd termenii irului pn la poziia k,
se va obine un punctaj parial.

E_INFO_INTENSIV_C_SIII_073

3.

E_INFO_INTENSIV_PASCAL_SIII_073

a) O metoda eficient de determinare a poziiei impune


un grad de creativitate din partea concurentului. Pentru o
soluie n care se determin poziia prin parcurgerea
tabloului se va obine un punctaj parial.
c) Se obine un punctaj parial pentru soluia care
memoreaz numerele ntr-un tablou, apoi le sorteaz
cresctor i le afieaz n formatul cerut.

E_INFO_INTENSIV_C_SIII_074

3.

E_INFO_INTENSIV_PASCAL_SIII_074

a) Parametrul n se transmite prin vloare, iar x prin


referin. Subprogramul poate determina numrul cerut
comparnd fiecare cifr a numrului cu o variabil maxim
ce se va iniializa corespunztor.
b) Se testeaz ca cifra maxim s nu depeasc 4.

E_INFO_INTENSIV_C_SIII_074

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Se obine punctaj
parial pentru o soluie care memoreaz cifrele nenule
citite din fiier ntr-un tablou, apoi ordoneaz cresctor
tabloul i afieaz numrul innd cont i de numrul de
cifre nule citite.

3.

a) O metoda eficient de determinare a poziiei impune


un grad de creativitate din partea concurentului. Pentru o
soluie n care se determin ultima cifr a numrului ab
folosind nmulirea repetat sau funcii predefinite se va
obine un punctaj parial.

E_INFO_INTENSIV_PASCAL_SIII_074

E_INFO_INTENSIV_C_SIII_075
E_INFO_INTENSIV_PASCAL_SIII_075

c) Se adun ultima cifr a tuturor termenilor sumei


E_INFO_INTENSIV_C_SIII_076

3.

Subprogramul poate determina numrul cerut verificnd


i numrnd cte din cifrele numrului n se afl n
intervalul cerut.

4.

Pentru a obine punctaj maxim se va utiliza o metod ce


presupune ct mai puine operaii de comparare. Se va
ine cont de faptul c elementele de pe a doua linie a
fiierului sunt ordonate cresctor. Numerele de pe linia a

E_INFO_INTENSIV_PASCAL_SIII_076
E_INFO_INTENSIV_C_SIII_076
E_INFO_INTENSIV_PASCAL_SIII_076

treia a fisierului se caut n cele de pe linia a doua


utiliznd metoda cutrii binare
E_INFO_INTENSIV_C_SIII_077

3.

Se deschide fiierul i se citesc numerele din fiier,


numrnd valorile ce ndeplinesc proprietatea cerut.

4.

Pentru a obine punctaj maxim se va utiliza un vector cu


100 de elemente n care se va contoriza numrul de
apariii ale fiecrei valori. Se vor afia acele valori care
apar de cele mai multe ori.

3.

Se citete numrul n. Se genereaz numere naturale


consecutive ncepnd cu valoarea 2 i se vor afia pe
ecran doar numerele prime dintre cele generate.
Generarea i afiarea se ncheie dup afiarea celui deal n-lea numr prim.

4.

Pentru a obine punctaj maxim se va utiliza un vector cu


100 de elemente n care se va contoriza numrul de
apariii ale fiecrei valori. Se vor afia pe ecran toate
valorile citite i numrul de apariii.

3.

Se citesc numerele reale a i b i se construiesc a1 i b1


obinute prin interschimbarea prii ntregi cu partea
fracionar n fiecare din cele dou numere. Se va
determina valoarea maxim dintre cele 4 numere reale.

4.

Pentru a obine punctaj maxim se va utiliza un vector c


cu 100 de elemente n care se va contoriza numrul de
apariii ale fiecrei valori. Iniial toate elementeleo acestui
vector se vor iniializa cu valoarea 0.Se vor afia pe
ecran toate valorile naturale din intervalul [1,100] care nu
au fost citite (valorile i pentru care c[i] are valoarea 0 )

3.

O rezolvare posibil presupune definirea unei funcii care


verific dac un numr natural, transmis prin parametru,
este format din cifre egale sau nu. Se citesc numerele
din fiier, se memoreaz acelea care au toate cifrele
egale ntr-un vector, apoi se ordoneaz i se afieaz.

4.

a) Parametrul n se transmite prin adres, iar d prin


referin. Se returneaz 0 pentru n prim.
b) Pentru n neprim, divizorul cerut este n/d (d fiind
calculat n subprogramul divi)

3.

Subprogramul poate determina numrul cerut


parcurgnd toate numere din tablou care verific
condiia impus.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Se obine punctaj
parial pentru o soluie care memoreaz numerele citite
din fiier ntr-un tablou sortat cresctor, apoi parcurge
tabloul, pentru determinarea numerelor cu proprietatea
cerut.

3.

Subprogramul poate determina numrul cerut


parcurgnd toate numere din tablou care verific
condiia impus.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Se obine punctaj
parial pentru o soluie care memoreaz numerele citite
din fiier ntr-un tablou sortat cresctor, apoi parcurge

E_INFO_INTENSIV_PASCAL_SIII_077
E_INFO_INTENSIV_C_SIII_077
E_INFO_INTENSIV_PASCAL_SIII_077

E_INFO_INTENSIV_C_SIII_078
E_INFO_INTENSIV_PASCAL_SIII_078

E_INFO_INTENSIV_C_SIII_078
E_INFO_INTENSIV_PASCAL_SIII_078

E_INFO_INTENSIV_C_SIII_079
E_INFO_INTENSIV_PASCAL_SIII_079

E_INFO_INTENSIV_C_SIII_079
E_INFO_INTENSIV_PASCAL_SIII_079

E_INFO_INTENSIV_C_SIII_080
E_INFO_INTENSIV_PASCAL_SIII_080

E_INFO_INTENSIV_C_SIII_080
E_INFO_INTENSIV_PASCAL_SIII_080

E_INFO_INTENSIV_C_SIII_081
E_INFO_INTENSIV_PASCAL_SIII_081
E_INFO_INTENSIV_C_SIII_081
E_INFO_INTENSIV_PASCAL_SIII_081

E_INFO_INTENSIV_C_SIII_082
E_INFO_INTENSIV_PASCAL_SIII_082
E_INFO_INTENSIV_C_SIII_082
E_INFO_INTENSIV_PASCAL_SIII_082

tabloul, pentru determinarea numerelor cu proprietatea


cerut.
E_INFO_INTENSIV_C_SIII_083

3.

Subprogramul poate determina numrul cerut


parcurgnd toate numere din tablou care verific
condiia impus.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Se obine punctaj
parial pentru o soluie care memoreaz numerele citite
din fiier ntr-un tablou, precum i numrul lor de pe
fiecare linie din fiier; apoi parcurge tabloul, pentru
determinarea numrului cu proprietatea cerut.

3.

Programul poate determina numrul cerut parcurgnd


toate numere din tablou b care verific condiia
impus(prima dat se parcurge tablou a, pentru
determinarea sumei numerelor pare).

4.

O rezolvare posibil este s se parcurg fiecare linie din


fiier, s se calculeze cmmmc i apoi se va afia n
fiierul de ieire.

3.

Programul poate determina numrul cerut parcurgnd


toate numere din tablou b care verific condiia impus
(prima dat se parcurge tablou a, pentru determinarea
sumei numerelor pare).

4.

O rezolvare posibil este s se parcurg fiecare linie din


fiier, s se calculeze cmmdc i apoi se vor afia
numerele simplificate cu cmmdc n fiierul de ieire.

3.

Se paote construi numrul cerut cifr cu cifr, folosind


puterile lui 10 corespunztoare.

4.

Se citesc numerele din fiier, unul cte unul. Se compar


fiecare valoare par cu dou valori de referin max1 i
max2 (de exemplu), iniializate cu 0. Se acord punctaj
parial dac se parcurge fiierul de dou ori sau dac se
utilizeaz un tablou unidimensional pentru stocarea
numerelor citite din fiier.

4.

Se citesc numerele din fiier, numerele care au


proprietatea cerut comparndu-se cu un minim de
referin, reiniializnd sau incrementnd corespunztor
numrul de apariii. Se acord punctaj parial dac se
parcurge fiierul de mai multe ori sau dac se utilizeaz
un tablou unidimensional pentru stocarea numerelor citite.

4.

Se poate utiliza un vector de frecvene sau metoda


descris la varianta 87.

4.

Se poate utiliza un vector de frecvene. Se obine punctaj


parial pentru o soluie n care se memoreaz toate
numerele mai mari dect k ntr-un tablou, se sorteaz
tabloul i apoi se parcurge tabloul pentru determinarea
valorilor distincte.

b) Se determin prin apeluri ale funciei verif, valoarea


minim a lui a pentru care funcia returneaz valoarea 1.

4.

Se vor reine doar ultimele dou numere citite din fiier,


n cazul numerelor pozitive, comparndu-se suma lor cu

E_INFO_INTENSIV_PASCAL_SIII_083
E_INFO_INTENSIV_C_SIII_083
E_INFO_INTENSIV_PASCAL_SIII_083

E_INFO_INTENSIV_C_SIII_084
E_INFO_INTENSIV_PASCAL_SIII_084

E_INFO_INTENSIV_C_SIII_084
E_INFO_INTENSIV_PASCAL_SIII_084
E_INFO_INTENSIV_C_SIII_085
E_INFO_INTENSIV_PASCAL_SIII_085

E_INFO_INTENSIV_C_SIII_085
E_INFO_INTENSIV_PASCAL_SIII_085
E_INFO_INTENSIV_C_SIII_086
E_INFO_INTENSIV_PASCAL_SIII_086
E_INFO_INTENSIV_C_SIII_086
E_INFO_INTENSIV_PASCAL_SIII_086

E_INFO_INTENSIV_C_SIII_087
E_INFO_INTENSIV_PASCAL_SIII_087

E_INFO_INTENSIV_C_SIII_088
E_INFO_INTENSIV_PASCAL_SIII_088
E_INFO_INTENSIV_C_SIII_089
E_INFO_INTENSIV_PASCAL_SIII_089

E_INFO_INTENSIV_C_SIII_090
E_INFO_INTENSIV_PASCAL_SIII_090
E_INFO_INTENSIV_C_SIII_090
E_INFO_INTENSIV_PASCAL_SIII_090

un maxim de referin. Se obine punctaj parial pentru o


soluie n care se memoreaz toate numerele ntr-un
tablou i se parcurge tabloul pentru determinarea
valorilor cerute.
E_INFO_INTENSIV_C_SIII_091

3.

b) Programul va analiza x mod 10 i va apela funcia par


pentru [x/10]

Se citete primul numr din fiier, se iniializeaz max cu


valoarea citit, iar lin_prim, lin_ultim cu 1. Se citesc
succesiv celelalte numere din fiier contorizandu-se
numrul liniei; dac valoarea citit e mai mare ca max,
se modific max, lin_prim i lin_ultim, iar dac este egal
cu max se modific lin_ultim.

3b.

Se poate folosi un singur apel al subprogramului


ordonare, afind ultimele m, apoi primele m elemente
ale tabloului rezultat. O alt variant utilizeaz dou
apeluri (pentru ordonarea descresctoare schimbnd
semnul tuturor elementelor).

4.

pentru c1=A, Z
pentru c2=A, Z
dac c1 nu e vocal sau c2 nu e vocal, scrie c1 c2

3.

pentru i impar Ai=(i+1)/2, pentru i par Ai=n-(n-i)/2

E_INFO_INTENSIV_PASCAL_SIII_091
E_INFO_INTENSIV_C_SIII_091
E_INFO_INTENSIV_PASCAL_SIII_091

E_INFO_INTENSIV_C_SIII_092
E_INFO_INTENSIV_PASCAL_SIII_092

E_INFO_INTENSIV_C_SIII_092
E_INFO_INTENSIV_PASCAL_SIII_092
E_INFO_INTENSIV_C_SIII_093
E_INFO_INTENSIV_PASCAL_SIII_093
E_INFO_INTENSIV_C_SIII_093

4.

E_INFO_INTENSIV_PASCAL_SIII_093

E_INFO_INTENSIV_C_SIII_094

Se poate stabili relaia existent nte primii doi termeni i


apoi se verific dac aceast relaie se pstraz ntre
oricare doi termeni consecutivi aflai pe poziiile 2,3, ..., n.

O soluie corect, dar ineficient, parcurge toate


numerele mai mari dect n determinnd pe primul care
are exact aceleai cifre ca i n.

Funcia implementeaz algoritmul fundamental de


numrare (contorizare), n cazul de fa numrarea
valorilor pozitive i a celor negative dintr-un tablou.

O soluie corect, dar ineficient ca timp de executare,


genereaz toate tripletele de sum S i reine pe cel n
care produsul celor trei numere din triplet este maxim.

a. Se testeaz dac lungimea fiecreia dintre cele trei


laturi e strict mai mic dect suma lungimilor celorlalte
dou laturi.
b. Se pot ordona laturile fiecrui triunghi pentru a testa
congruena.

O soluie corect, dar ineficient ca timp de executare,


reine numerele de pe a doua linie ntr-un vector, apoi pe
msur ce citete cte un interval determin cte dintre
numerele din vector aparin intervalului printr-o
parcurgerea integral a vectorului.

3.

Se apeleaz calcul(x-1) i calcul(y).

E_INFO_ INTENSIV_PASCAL_SIII_094
E_INFO_INTENSIV_C_SIII_094
E_INFO_ INTENSIV_PASCAL_SIII_094
E_INFO_INTENSIV_C_SIII_095
E_INFO_ INTENSIV_PASCAL_SIII_095
E_INFO_INTENSIV_C_SIII_095
E_INFO_ INTENSIV_PASCAL_SIII_095
E_INFO_INTENSIV_C_SIII_096
E_INFO_ INTENSIV_PASCAL_SIII_096

E_INFO_INTENSIV_C_SIII_096
E_INFO_ INTENSIV_PASCAL_SIII_096

E_ INFO_INTENSIV _C_SIII_097
E_ INFO_INTENSIV _PASCAL_SIII_097

dcm calculeaz cel mai mare divizor comun al numerelor


a i b. Deoarece orice divizor comun este un divizor ac
celui mai mare divizor comun, se calculeaz dcm i apoi
se descompune rezultatul n factori primi. Dac exist cel
puin doi factori primi, se afieaz produsul acestora.

E_INFO_INTENSIV _C_SIII_097

4.

E_INFO_INTENSIV _PASCAL_SIII_097

E_INFO_INTENSIV_C_SIII_098

3.

E_INFO_INTENSIV _PASCAL_SIII_098
E_INFO_INTENSIV _C_SIII_098

4.

E_INFO_INTENSIV _PASCAL_SIII_098

E_ INFO_INTENSIV _C_SIII_099

3.

E_ INFO_INTENSIV _PASCAL_SIII_099
E_INFO_INTENSIV _C_SIII_099

4.

E_INFO_INTENSIV _PASCAL_SIII_099

E_INFO_INTENSIV_C_SIII_100

E_INFO_INTENSIV_PASCAL_SIII_100
E_INFO_INTENSIV_C_SIII_100
E_INFO_INTENSIV_PASCAL_SIII_100

4.

Cu punctaj parial, se poate construi soluia


neoptim ce analizeaz toate perechile posibile
(x,y), cu xy k ce satisfac relaia impus.
Subprogramul poate determina numrul cerut calculnd,
succesiv valorile x1,x2, x3... ct timp produsul obinut nu
este mai mare dect y.

Un algoritm optim ca timp de executare folosete


algoritmul de interclasare, care evident are
complexitate liniar. Din fiier sunt preluate doar
valorile pare, memorate n doi vectori si interclasati.
Subprogramul poate determina numrul cerut ca rest la
imprtirea la 10nr-1, unde nr este numrul de cifre al lui k.

Se traverseaz valorile din fiier i cu fiecare


element se incearc fie incrementarea lungimi
secvenei curente, dac valoarea are paritate
diferit fa de cea citit anterior, fie iniializarea
unei noi secvene.
Subprogramul poate determina numrul cerut
parcurgnd toi divizorii posibili ai celor trei numere i
contorizndu-i pe cei care respect condiia impus.

O rezolvare de punctaj maxim implic un anumit


grad de creativitate din partea concurentului. Un
punctaj parial se poate obine cu o soluie care
genereaz numerele ntr-un vector, pn ce se
obine numrul din fiier.

Vous aimerez peut-être aussi