Sunteți pe pagina 1din 20

Informatic indicatii de rezolvare

Specializarea matematic-informatic
Subiectul III
subiect
E_INFO_C_SIII_001

item
3

E_INFO_PASCAL_SIII_001
E_INFO_C_SIII_001

E_INFO_PASCAL_SIII_001

E_INFO_C_SIII_002

E_INFO_PASCAL_SIII_002
E_INFO_C_SIII_002

E_INFO_PASCAL_SIII_002

E_INFO_C_SIII_003

E_INFO_PASCAL_SIII_003

E_INFO_C_SIII_003

E_INFO_PASCAL_SIII_003

E_INFO_C_SIII_004

E_INFO_PASCAL_SIII_004

E_INFO_C_SIII_004

E_INFO_PASCAL_SIII_004

E_INFO_C_SIII_005

E_INFO_PASCAL_SIII_005
E_INFO_C_SIII_005
E_INFO_PASCAL_SIII_005

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,a fieaz pe ecran
numrul respectiv, n formatul cerut.
a) se definete subprogramul conform cerinelor; o prelucrare
posibil presupune parcurgerea tabloului i contorizarea
elementelor care ndeplinesc condiia impus.
b) o posibil soluie presupune memorarea numerelor citite
ntr-un tablou; verificarea proprietii impuse se poate face prin
parcurgerea tabloului, numrnd pentru fiecare element
numrul apariiilor acestuia n tablou (prin apeluri ale funciei).
Dac numrul nu respect condiia impus, proprietatea nu
este ndeplinit.
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 construiete oglinditul su i, apelnd
funcia f, se testeaz dac ambele numere sunt prime (suma
exponenilor este 1).
O posibil soluie presupune citirea numerelor din fiier,
memorarea celor cu cel puin 3 cifre ntr-un tablou care apoi se
ordoneaz cresctor; in final, tabloul ordonat se afieaz pe
ecran. Dac numrul elementelor memorate n tablou este 0
atunci se afieaz mesajul cerut.
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, i includerea, de un numr de ori corespunztor, n
numrul cerut, a acelor cifre impare care apar n numrul dat.
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.
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.

E_INFO_C_SIII_006
E_INFO_PASCAL_SIII_006

E_INFO_C_SIII_007

3.

4.

E_INFO_PASCAL_SIII_007

E_INFO_C_SIII_007

5.

E_INFO_PASCAL_SIII_007

E_INFO_C_SIII_008

3.

E_INFO_PASCAL_SIII_008
E_INFO_C_SIII_008

4.

E_INFO_PASCAL_SIII_008

E_INFO_C_SIII_009

3.

E_INFO_PASCAL_SIII_009

E_INFO_C_SIII_010

3.

E_INFO_PASCAL_SIII_010
E_INFO_C_SIII_010
E_INFO_PASCAL_SIII_010

4.

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).
a) Se va scrie antetul subprogramului s1
b) Se va scrie definiia complet a subprogramului s2. Se va
parcurge secvena delimitat de indicii p i q determinnduse poziia primului element divizibil cu 5. Funcia va returna
poziia acestuia, dac exist, sau -1 n caz contrar.
c) O rezolvare posibil citete 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
gsite, tabloul astfel transformat va fi afiat in fiierul
BAC.TXT n formatul cerut. Dac nu exist 2 elemente
divizibile cu 5 se va afia n fiier valoarea 0.
O rezolvare posibil citete de la tastatur valoarea lui n i
elementele tabloului unidimensional. Se parcurg simultan
elementele zonei I si III interschimbndu-se elementele
corespunztoare. Se afieaz apoi elementele tabloului n
formatul cerut.
a) Se va scrie antetul subprogramului p alegnd 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 n fiierul Numere.txt acesta i
apoi se scade din n valorea gsit. Procedeul se repet pn
cnd n devine egal cu 0.
O rezolvare posibil citete de la tastatur valoarea lui n i
afieaz n fiierul BAC.TXT pe fiecare linie i, primele i numere
pare, pentru valori ale lui i de la n la 1.
a) Se scrie numai antetul fiecrui subprogram alegnd
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) O rezolvare de punctaj maxim implic un anumit grad de
creativitate din partea concurentului. Se obine punctaj parial
pentru o soluie ce analizeaz fiecare cifr daca este egal cu
0 i contorizeaz numrul acestora.
a) Se scrie numai antetul subprogramului s2 alegnd
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) Se va scrie definiia complet a subprogramului s1.
c) O rezolvare de punctaj maxim implic un anumit grad de
creativitate din partea concurentului. Se obine punctaj parial
pentru o soluie ce plaseaz elementele pare la sfritul
tabloului fr a folosi apeluri ale subprogramelor s1 i s2.
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.
O rezolvare de punctaj maxim implic un anumit grad de
creativitate din partea concurentului. Se obine punctaj parial
pentru o soluie ce determin de fiecare dat pentru fiecare
numr citit din fiier cea mai mic putere a lui doi mai mare
dect acel numr.

E_INFO_C_SIII_011

3.

E_INFO_Pascal_SIII_011

a) Se va scrie definiia complet a subprogramului P alegnd


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) 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 ctre subprogramul P, apelat
pentru k=i.

E_INFO_C_SIII_011

4.

Se citesc pe rnd numerele din fiier, iar pentru fiecare


numrul prim, citit de pe a doua linie din fiier, se va
incrementa un control a crui valoare este afiat la final pe
ecran.

3.

Se citesc primele m valori ntr-un vector. Se citete apoi cte o


valoare din a doua secven i folosind un algoritm de cutare
binar se determin valorile care apar doar n cel de-al doilea
ir.

4.

Se citete numrul de la tastatur i apoi se numr cte din


cifrele de la 0 la 9 apar n scrierea numrului. Pentru aceasta
se va apela subprogramul de la punctul a).

3.

Se folosesc dou cicluri cu numr cunoscut de pai, primul


parcurgnd pe rnd grupele, iar al doilea ciclu parcurgnd
elementele din fiecare grup. La fiecare pas se va testa dac
au fost afiate suficiente numere, caz n care algoritmul se va
termina.
Se citete pe rnd cte un numr din fiierul de intrare, se
elimin apoi cifrele impare din acesta, folosind apeluri ale
subprogramului de la punctul a). Dac numrul rezultat n urma
acestor transformri este nenul se scrie n fiierul de ieire.
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.
O posibil soluie presupune citirea numerelor de la tastatur,
memorarea celor prime ntr-un tablou care apoi se ordoneaz
cresctor; in final, tabloul ordonat se afieaz pe ecran.
Selectarea numerelor prime se face utiliznd subprogramul
prim de la punctual a)

E_INFO_Pascal_SIII_011

E_INFO_C_SIII_012
E_INFO_Pascal_SIII_012

E_INFO_C_SIII_012
E_INFO_Pascal_SIII_012
E_INFO_C_SIII_013
E_INFO_Pascal_SIII_013

E_INFO_C_SIII_013

4.

E_INFO_Pascal_SIII_013
E_INFO_C_SIII_014

3.

E_INFO_Pascal_SIII_014
E_INFO_C_SIII_014

4.

E_INFO_Pascal_SIII_014

E_INFO_C_SIII_015

3.

E_INFO_Pascal_SIII_015

E_INFO_C_SIII_015

4.

E_INFO_Pascal_SIII_015
E_INFO_C_SIII_016

3.

Numrul cerut se determin parcurgnd toate elementele


tabloului unidimensional i contoriznd valorile care respect
condiia impus. Dup afiarea numrului de elemente
divizibile cu 13 se parcurge din nou tabloul unidimensional
pentru determinarea i afiarea poziiei pe care se gsesc
aceste elemente.

4.

Subprogramul extrage cifrele numrului n i le contorizeaz pe

E_INFO_PASCAL_SIII_016

E_INFO_C_SIII_016

Se va scrie definiia complet a subprogramului alegnd


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.
Pentru fiecare numr memorat n tablou se extrag cifrele i se
verific daca cifra curent este 5. Dac da, este incrementat un
contor a crui valoare va fi returnat la final de subprogram.
Se citesc pe rnd numerele din fiierul de intrare. Dac acesta
este impar se va reine valoarea sa ntr-o variabil. Valoarea
acestei variabile va fi afiat pe ecran la final dac s-a gsit cel
puin un numr impar, altfel se afieaz mesajul cerut.

cele egale cu k. n programul principal se citesc pe rnd


valorile din fiier, pn cnd se ajunge la sfritul fiierului i
se apeleaz, pentru fiecare numr citit, subprogramul cifrak,
cu valoarea 0 pe poziia celui de-al doilea parametru.

E_INFO_PASCAL_SIII_016

E_INFO_C_SIII_017

3.

E_INFO_PASCAL_SIII_017

a) Subprogramul poate determina numrul cerut, parcurgnd


toate elementele vectorului i contoriznd acele valori care
respect condiia 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 proprietii cerute este
necesar s verific dac rezultatul furnizat de subprogram este
egal cu numrul elementelor din tablou.

E_INFO_C_SIII_017

4.

Se citesc pe rnd numerele din fiier i se calculeaz suma i


numrul numerelor strict positive din fiier. Dac numrul
acestora este strict pozitiv atunci se afieaz media acetora iar
altfel se afieaz mesajul indicat.

3.

a) Subprogramul poate determina numrul cerut, calculnd


media aritmetic dintre primul i ultimul element ale tabloului
unidimensional i contoriznd apoi acele valori ale tabloului
care respect condiia impus.

E_INFO_PASCAL_SIII_017

E_INFO_C_SIII_018
E_INFO_PASCAL_SIII_018

b) Se formeaz un vector cu numerele citite de la tastatur.


Apoi se verific dac rezultatul furnizat de subprogramul count
este egal cu numrul elementelor memorate n vector.
E_INFO_C_SIII_018

4.

O posibil soluie presupune citirea numerelor din fiier,


memorarea succesiv a secvenelor de cte 4 numere aflate
pe poziii consecutive i verificare proprietii cerute.

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.

O posibil soluie presupune citirea numerelor din fiier i


contorizarea celor naturale. Dac valoarea contorului ajunge la
10 atunci se poate ntrerupe citire n umerelor din fiier i se
afieaz pe ecran mesajul DA. Dac se citesc toate numerele
din fiier i valoarea contorului este strict mai mic dect 10
atunci pe ecran se afieaz mesajul NU.

3.

a) 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.

E_INFO_PASCAL_SIII_018
E_INFO_C_SIII_019
E_INFO_PASCAL_SIII_019
E_INFO_C_SIII_019
E_INFO_PASCAL_SIII_019

E_INFO_C_SIII_020
E_INFO_PASCAL_SIII_020

b) Se memoreaz pe rnd, n vectorul a, cele n numere citite


de la tastatur, iar apoi apelnd subprogramul nule se aduc
elementele nenule la nceputul vectorului. Dac elementul de
pe poziia 5 este nenul atunci n vector exist cel puin 5
elemente neneule i se vor scrie pe ecran primele 5
elementele din vector.
E_INFO_C_SIII_020

4.

O posibil soluie presupune citirea numerelor din fiier,


memorarea succesiv a secvenelor de cte 4 numere aflate
pe poziii consecutive i verificare proprietii cerute

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

E_INFO_PASCAL_SIII_020
E_INFO_C_SIII_021
E_INFO_PASCAL_SIII_021
E_INFO_C_SIII_021

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

E_INFO_PASCAL_SIII_021

E_INFO_C_SIII_021

4b.

Algoritmul propus calculeaz suma 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_PASCAL_SIII_021

E_INFO_C_SIII_022
E_INFO_PASCAL_SIII_022
E_INFO_C_SIII_022
E_INFO_PASCAL_SIII_022
E_INFO_C_SIII_022

4.

E_INFO_PASCAL_SIII_022

E_INFO_C_SIII_023

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.

citete n; max=-1
pt. i=1,n
citete 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

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 valorilor a i b se iniializeaz min cu b+1 Se


citesc n continuare cele n numere din fiier i, la gsirea unui
termen din intervalul [a,b] se compar cu min, iar dac e mai
mic se memoreaz noua valoare. La sfrit, dac min=b+1 se
afieaz NU, altfel se afieaz min.

3.

Algoritmul: par=11111; impar=-1;


pt. i=1,n
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

4a.

numarator=x; numitor=1
ct timp numarator [numrtor]
numitor=numitor*10; numrator=numarator*10
d=cmmdc(numarator, numitor)
scrie numarator/d, numitor/d

4b.

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

E_INFO_PASCAL_SIII_023
E_INFO_C_SIII_023
E_INFO_PASCAL_SIII_023

E_INFO_C_SIII_024
E_INFO_PASCAL_SIII_024
E_INFO_C_SIII_024
E_INFO_PASCAL_SIII_024
E_INFO_C_SIII_024
E_INFO_PASCAL_SIII_024

E_INFO_C_SIII_025
E_INFO_PASCAL_SIII_025

E_INFO_C_SIII_025
E_INFO_PASCAL_SIII_025

E_INFO_C_SIII_025

Pentru fiecare pereche (a,b) din fiier se execut:


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

E_INFO_PASCAL_SIII_023
E_INFO_C_SIII_023

n=n+5

dou numere ntregi. Simplificarea fraciei obinute se face


calculnd cmmdc cu algoritmul lui Euclid.

E_INFO_PASCAL_SIII_025
E_INFO_C_SIII_026

3.

pt. i=k,1,+1 scrie n*i

E_INFO_PASCAL_SIII_026
E_INFO_C_SIII_026

4.

E_INFO_PASCAL_SIII_026

E_INFO_C_SIII_027

3.

E_INFO_PASCAL_SIII_027
E_INFO_C_SIII_027

4.

E_INFO_PASCAL_SIII_027

E_INFO_C_SIII_028

3.

E_INFO_PASCAL_SIII_028

E_INFO_C_SIII_028

4.

E_INFO_PASCAL_SIII_028

E_INFO_C_SIII_029

4.

E_INFO_PASCAL_SIII_029

E_INFO_C_SIII_030

4.

E_INFO_PASCAL_SIII_030

E_INFO_C_SIII_031

a) Subprogramul sterge realizeaz deplasarea cu o poyziie


la stnga a celor n-i elemente aflate n vector, dup elementul
vi. Numrul de elemente se micoreaz 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 cnd vivi+1. Rmn astfel doar
elemente distincte.
citete x,y ( reale)
cat timp y>0 executa y=y/10
scrie x+y
Se determin a primul numr real de pe linia a doua din fiier i
b ultimul numr real de pe aceast linie.
Numrul x este egal cu a iar numrul y cu cu b.
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.
Se citesc cele n numere i se memoreaz ntr-un tablou
unidimensional. Se calculeaz suma (s) numerelor din tablou i
se contorizeaz elementele
x din tablou care verific
proprietatea x=(s-x)/(n-1). Valoarea contorului se afieaz pe
ecran.
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 afim pe ecran numerele aproape
prime.
Pentru a verifica dac tabloul A se poate reduce la tabloul B ne
poziionm pe primele poziii n cei doi vectori. Dac i este
poziia curent din vectorul A i j poziia curent din vectorul B,
atunci, la fiecare pas calculm suma secvenei Ai,Ai+1,Ai+2
Dac suma secvenei este egal cu B[j] atunci trecem la
elementul urmtor n vectorul B i la nceputul urmtoarei
secvene n vectorul A.
Rspunsul DA va fi afiat atunci cnd parcurgerea n ntregime
a celor doi vectori se ncheie simultan.
Pentru determinarea numrului de valori distincte ,nr,
iniializm valoarea unei variabilei p cu primul numr real din
fiier. Aceast variabil se va modifica (p=x)atunci cnd
numrul x citit din fiier este diferit de p. Variabila nr se
mrete cu o unitate de fiecare dat cnd se modific valoarea
variabilei p.

3.

Se ordoneaz cresctor numai elementele impare ale tabloului .

4.

Se citesc datele din fiier i se calculeaz capetele segmentului


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

E_INFO_PASCAL_SIII_031
E_INFO_C_SIII_031
E_INFO_PASCAL_SIII_031

E_INFO_C_SIII_032

3.

Se parcurge intervalul determinat de cele dou capete i se


afieaz numerele prime din acest interval.

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 care respect condiia specificat n enun.

3.

O rezolvare posibil const n parcurgerea elementelor tabloului


i verificarea condiiei enunate, pentru fiecare component a
tabloului.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Se obine punctaj maxim
dac se adun direct ultimele m elemente din irul celor n aflate
n fiier.

3.

a) Se descompune numrul n cifre i se verific dac fiecare


cifr ndeplinete condiia din enun.

E_INFO_PASCAL_SIII_032
E_INFO_C_SIII_032
E_INFO_PASCAL_SIII_032

E_INFO_C_SIII_033
E_INFO_PASCAL_SIII_033
E_INFO_C_SIII_033
E_INFO_PASCAL_SIII_033

E_INFO_C_SIII_034
E_INFO_PASCAL_SIII_034

b) Se citesc datele din fiier i se vor afia pe ecran valorile din


fiier care sunt mai mari dect 100 i au toate cifrele impare
E_INFO_C_SIII_034

4.

Se citesc de la tastatur datele specificate i se calculeaz


lungimea secvenelor de valori pare. Cea mai mare lungime a
unei secvene de valori pare se va afia pe ecran.

3.

O posibil variant de rezolvare presupune citirea datelor de la


tastatur i memorarea ntr-un vector, n fiecare compunent a
sa a sumei divizorilor unui numr introdus de la tastatur.
Vectorul astfel construit se ordoneaz cresctor i se afieaz
pe ecran valorile componentelor sale

4.

O posibil rezolvare const n citirea din fiier a datelor


specificate i afiarea pe ecran a valorilor care ndeplinesc
condiiile specificate de problem.

E_INFO_PASCAL_SIII_034
E_INFO_C_SIII_035
E_INFO_PASCAL_SIII_035

E_INFO_C_SIII_035
E_INFO_PASCAL_SIII_035
E_INFO_C_SIII_036

4.

E_INFO_PASCAL_SIII_036

a) 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.
b) O soluie posibil memoreaz ntr-un vector, pentru fiecare
numr citit din fiier cifra par, apoi sorteaz descresctor,
elementele acestuia.

E_INFO_C_SIII_037

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.

a) Se scrie antetul subprogramului, urmrind cerina.

E_INFO_PASCAL_SIII_037

E_INFO_C_SIII_037
E_INFO_PASCAL_SIII_037

E_INFO_C_SIII_038

b) O soluie posibil citete cele n elemente din fiierul bac.in


i afieaz, pentru fiecare dintre numerele citite, utiliznd
subprogramul definit la a) numrul de divizori primi.
3.

Subprogramul adaug la numrul pe care l formm cifre ale


numrului dat care respect proprietatea din enun (sunt mai
mici sau egale cu y).

4.

Se scrie definiia complet a subprogramului, urmrind cerina.

E_INFO_PASCAL_SIII_038
E_INFO_C_SIII_038
E_INFO_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_C_SIII_039

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_PASCAL_SIII_039

E_INFO_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_PASCAL_SIII_039

E_INFO_C_SIII_040

3.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Se obine punctaj parial
pentru o soie care citete cele n elemente din fiierul bac.in i
le reine ntr-un tablou unidimensional, apoi 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 antetul subprogramelor, urmrind cerina.

E_INFO_PASCAL_SIII_040

E_INFO_C_SIII_040
E_INFO_PASCAL_SIII_040

E_INFO_C_SIII_041

Se citete numrul n. Pentru fiecare numr natural mai mic sau


egal cu n se apeleaz subprogramele corespunztor enunului.
Se afieaz numerele care respect proprietatea cerut.
3.

Subprogramul verific dac vectorul respect proprietatea


cerut.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Elementul maxim ct cel
minim trebuie sa se determine la o singur parcurgere a
fiierului fr a mai utiliza tipul tablou

3.

Se ordoneaz vectorul descresctor i se adun primele k


elemente pentru a obine rezultatul furnizat de subprogram.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Este suficient s reinem
la fiecare pas cte o secven format din dou numere aflate
pe poziii consecutive i s comparm aceste valori.

3.

Se declar un vector de cel puin 100 de elemente. O rezolvare


posibil citete valorea n iar apoi elementele vectorului. Se
calculeaz suma elementelor impare aflate pe poziii pare.

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 tipul tablou.

3.

O rezolvare posibil citete cele dou valori a i b i apoi


parcurge intervalul determinat
afind numerele care
ndeplinesc cerina din enu.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Se poate utiliza un vector
caracteristic C n care Ci reprezint numrul de apariii ale
numrului i n fiier. Vectorul se parcurge de la stnga la
dreapta i fiecare cifr i pentru care Ci >1.

3.

O rezolvare posibil citete cele dou valori a i b i apoi

E_INFO_PASCAL_SIII_041
E_INFO_C_SIII_041
E_INFO_PASCAL_SIII_041

E_INFO_C_SIII_042
E_INFO_PASCAL_SIII_042
E_INFO_C_SIII_042
E_INFO_PASCAL_SIII_042

E_INFO_C_SIII_043
E_INFO_PASCAL_SIII_043
E_INFO_C_SIII_043
E_INFO_PASCAL_SIII_043

E_INFO_C_SIII_044
E_INFO_PASCAL_SIII_044
E_INFO_C_SIII_044
E_INFO_PASCAL_SIII_044

E_INFO_C_SIII_045

parcurge intervalul determinat


ndeplinesc cerina din enu.

E_INFO_PASCAL_SIII_045
E_INFO_C_SIII_045

care

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.

3.

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


nr, citit din fiier, se calculeaz numrul de divizori (se poate
folosi un subprogram) i acesta se compar cu k. Dac este
cel puin egal cu k, se trece numrul curent nr n vector, pentru
care indicele, iniial 0, se incrementeaz.

4.

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


nc i sc, prin referin.

E_INFO_PASCAL_SIII_046

E_INFO_C_SIII_046

numerele

4.

E_INFO_PASCAL_SIII_045

E_INFO_C_SIII_046

afind

E_INFO_PASCAL_SIII_046

b) Se apeleaz subprogramul cifre, se caut o cifr c din


numr care s verifice condiia cerut (c = sc / nc)
E_INFO_C_SIII_047

3.

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


nr, citit din fiier, se verific dac este putere a lui k.

4.

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


prin referin.

E_INFO_PASCAL_SIII_047
E_INFO_C_SIII_047
E_INFO_PASCAL_SIII_047

b) Se citete n. Se iniializeaz o variabil max cu 0. Se


citete fiecare numr nr dintre cele n, i se compar valoarea
furnizat la apelul subprogramului cif cu max. ntr-un tablou
unidimensional (ce va fi afiat la sfrit) se salveaz doar acele
elemente cu suma cifrelor maxim.
E_INFO_C_SIII_048

3.

b) Se citete n i se parcurge intervalul [1,n-1]. Se determin


cel mai mare divizor comun dintre fiecare numr din interval i
n. Se contorizeaz perechile pentru care rezultatul este egal cu
1.

E_INFO_PASCAL_SIII_048

E_INFO_C_SIII_048

4.

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


frecvena de apariie. Se poate folosi un vector. (v[nr]=f_ap
nseamn c nr apare de f_ap ori). Se afieaz elementele din
acest vector care sunt egale cu 1.

3.

Se citesc numerele de la tastatur i se memoreaz ntr-un


vector care se ordoneaz cresctor. Se verific apoi
proprietatea din enu.

4.

a) Primul parametru se transmite prin valoare, al doilea prin


refrin.

E_INFO_PASCAL_SIII_048

E_INFO_C_SIII_049
E_INFO_PASCAL_SIII_049
E_INFO_C_SIII_049

a) Parametri se transmit prin valoare. Rezultatul este ntreg.

E_INFO_PASCAL_SIII_049

b) Se inializeaz o variabil max cu 0. Pentru fiecare numr,


nr, citit din fiier, se compar cifra maxim furnizat la apelul
cmax cu max.
E_INFO_C_SIII_050

3.

E_INFO_PASCAL_SIII_050

a) Ambii parametri se transmit prin valoare, iar rezultatul este


ntreg. Se compar restul mpririi lui x la y cu 0.
b) Se citesc de la tastatur a, b i n. Dac a i b nu formeaz
interval se interschimb. Se parcurge intervalul [a,b]. Se caut
divizorii lui n prin apel divxy.

E_INFO_C_SIII_050
E_INFO_PASCAL_SIII_050

4.

Se citete n din fiier. Pentru fiecare numr nr, citit dintre cele
n, se determin frecvena de apariie. Se poate folosi un
vector. (v[nr]=f_ap nseamn c nr apare de f_ap ori). Se
afieaz indicii elementelor din acest vector care sunt strict mai

E_INFO_C_SIII_051
E_INFO_PASCAL_SIII_051

E_INFO_C_SIII_051
E_INFO_PASCAL_SIII_051

E_INFO_C_SIII_052
E_INFO_PASCAL_SIII_052

3a

3b

mari dect 1.
a) se cauta primul factor prim al numarului a

O posibil rezolvare presupune construirea expresiei cerute pe


msura citirii coeficienilor. Puterea lui x se actualizeaz la
fiecare pas.
se salveaz ultima cifr a lui a ntr-o variabil auxiliar, apoi se
verific dac toate cifrele lui a au aceeai paritate cu variabila
auxiliar
se citete ntr-o variabil x cte un numr din fiier i se verific
dac ndeplinete cerina din enun aplnd funcia definit la a)
avnd ca parametru de apel variabila x. Nu este necesar
utilizarea unui tablou pentru a reine numerele citite.
Se ordoneaza elementele vectorului si apoi se verifica dac
fiecare pereche de dou elemente consecutive este format din
valori distincte.

E_INFO_C_SIII_052
E_INFO_PASCAL_SIII_052

E_INFO_C_SIII_053
E_INFO_PASCAL_SIII_053

3b

Pentru perechi de elemente consecutive se verifica daca


cmmdc este 1.

E_INFO_C_SIII_053
E_INFO_PASCAL_SIII_053

E_INFO_C_SIII_054
E_INFO_PASCAL_SIII_054

Se afieaz irul citit apoi de n-1 ori se execut urmtoarele:


- se permut irul cu o poziie spre dreapta
- se afieaz irul obinut
a) Se pun cifrele numarului intr-un vector, se ordoneaza
crescator si se formeaza noul numar

E_INFO_C_SIII_054
E_INFO_PASCAL_SIII_054

E_INFO_C_SIII_055

O soluie posibil presupune citirea tuturor numerelor din fiier


i testarea condiiei impuse; numrul minim returnat de funcia
cerut este chiar numrul nsui, dac este respectat
condiia.

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


scriu n fiierul pare.txt numerele pare pe msur ce sunt
citite. Nu este necesar folosirea unui tablou, numerele putnd
fi prelucrate pe msur ce sunt citite. Se numr cte numere
se scriu n fiierul pare.txt; n cazul n care s-au scris 0
numere, se afieaz mesajul nu exista.

4b

Se parcurge intervalul de valori de la a la b (cresctor sau


descresctor dup cum este relaia ntre a i b) i pentru
fiecare numr din acest interval se apeleaz funcia de la
subpunctul a)

3.

Se citesc numerele din fiier pn la sfritul acestuia, se rein


ntr-un vector i apoi se construiesc i se scriu n fiierul
iesire.txt toate sumele cerute (nu este necesar ca acestea s
fie la rndul lor reinute ntr-un vector).

4b

Se apeleaz funcia definit la 4a) cu parametri x i z iar dac


valoarea returnat de aceasta este mai mic dect y atunci
intervalul [x,y] conine cel puin un multiplu a lui z.

3.

Se citesc numerele din fiier, pn la sfritul acestuia. Se

E_INFO_PASCAL_SIII_055

E_INFO_C_SIII_055
E_INFO_PASCAL_SIII_055
E_INFO_C_SIII_056
E_INFO_PASCAL_SIII_056

E_INFO_C_SIII_056
E_INFO_PASCAL_SIII_056

E_INFO_C_SIII_057
E_INFO_PASCAL_SIII_057

E_INFO_C_SIII_057
E_INFO_PASCAL_SIII_057
E_INFO_C_SIII_058

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

pstreaz (fiecare fiind reinut n alt variabil) cele mai mici 2


numere gsite pn la ultima citire. Se compar ultimul numr
citit cu cele 2 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 2 componente.

E_INFO_PASCAL_SIII_058

E_INFO_C_SIII_059

3.

Se citesc numerele din fiier, pn la sfritul acestuia. Se


pstreaz (fiecare fiind reinut n alt variabil) cele mai mici 2
numere gsite pn la ultima citire. Se compar ultimul numr
citit cu cele 2 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 descresctor i se afieaz
ultima cifr a produsului primelor 2 componente.

Se citesc cele 100 de numere de pe prima linie din fiier ntrun tablou unidimensional, apoi se citete valoarea de pe a
doua linie i se folosete un algoritm fundamental de cutare
(binar sau chiar i secvenial avnd n vedere c nu se cere
eficiena metodei de rezolvare).

4a

Se scrie o funcie care returneaz partea ntreag a radicalului


parametrului.

4b

Se apeleaz funcia avnd ca parametru valoarea n i se


verific dac ptratul valorii returnate este egal cu n.

E_INFO_PASCAL_SIII_059

E_INFO_C_SIII_060
E_INFO_PASCAL_SIII_060

E_INFO_C_SIII_060
E_INFO_PASCAL_SIII_060
E_INFO_C_SIII_060
E_INFO_PASCAL_SIII_060
E_INFO_C_SIII_061
E_INFO_PASCAL_SIII_061

E_INFO_C_SIII_061
E_INFO_PASCAL_SIII_061
E_INFO_C_SIII_062
E_INFO_PASCAL_SIII_062
E_INFO_C_SIII_062
E_INFO_PASCAL_SIII_062

4
3
4

E_INFO_C_SIII_063
E_INFO_PASCAL_SIII_063

E_INFO_C_SIII_063
E_INFO_PASCAL_SIII_063

E_INFO_C_SIII_064
E_INFO_PASCAL_SIII_064

a) o posibilitate de implementare a subprogramului cifra


utilizeaz funcii standard pe numere ntregi i operatorul
aritmetic de aflare a restului mpririi a 2 numere ntregi.
b) programul citete din fiierul text cte o pereche de
numere reale i testeaz egalitatea prii ntreagi 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 utilizeaz dou instruciuni for imbricate n care
limitele sunt literele a i z.
Se aplic formula care definete irul fibonacii i se rein
doar termenii impari n tabloul v.
Se citesc ntr-un tablou unidimensional valorile din fiier i
se sorteaz cresctor. Se parcurge apoi tabloul de la
prima la ultima poziie i se afieaz elementele impare,
apoi se parcurge tabloul de la ultima la prima poziie
afindu-se elementele pare. Ca metod eficient se
poate folosi un vector de contorizare (vezi sortarea prin
numrare).
a) o posibilitate de implementare a subprogramului verif
se bazeaz pe extragerea cifrelor numrului ntr-un vector
i compararea tuturor secvenelor de 3 cifre alturate.
b) programul citete din fiierul text cte un numr
natural cu exact 6 cifre, extrage primele 3 cifre ale
numrului prin mprire la 1000 i apeleaz funcia verif.
Se pot citi valorile din fiier ntr-un tablou unidimensional,
apoi se parcurge tabloul de la al doilea la penultimul
element i se testeaz pentru fiecare dintre elemente
condiia de nod.
O posibilitate de implementare a subprogramului diviz
utilizeaz dou structuri for imbricate pentru obinerea

perechilor de numere i apoi verificarea condiiilor de


divizibilitate.
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.

E_INFO_C_SIII_064
E_INFO_PASCAL_SIII_064

E_INFO_C_SIII_065
E_INFO_PASCAL_SIII_065

E_INFO_C_SIII_065
E_INFO_PASCAL_SIII_065

E_INFO_C_SIII_066

3.

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 din fiier ntr-un tablou, apoi
parcurgem tabloul, determinm i afim numerele cu
proprietatea cerut.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate. Se obine punctaj parial pentru o soluie care
memoreaz numerele citite din fiier ntr-un tablou, apoi
parcurgem tabloul, determinm i afim cele dou valori
cerute.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate. Se obine punctaj parial pentru o soluie care
memoreaz numerele citite din fiier ntr-un tablou, apoi
parcurgem tabloul, determinm ordinea elementelor n tablou
conform cerinei, dup care se afieaz tabloul obinut.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate. Se obine punctaj parial pentru o soluie care
memoreaz numerele citite din fiier ntr-un tablou, apoi
parcurgem tabloul, determinm i afim cele dou valori
cerute.

2.

Se urmresc apelurile recursive, determinndu-se valoarea


afiat

3.

Se vor declara corespunztor numele i tipul subprogramului.

E_INFO_PASCAL_SIII_066
E_INFO_C_SIII_066
E_INFO_PASCAL_SIII_066

E_INFO_C_SIII_067
E_INFO_PASCAL_SIII_067
E_INFO_C_SIII_067
E_INFO_PASCAL_SIII_067

E_INFO_C_SIII_068
E_INFO_PASCAL_SIII_068

E_INFO_C_SIII_069
E_INFO_PASCAL_SIII_069

E_INFO_C_SIII_070
E_INFO_PASCAL_SIII_070

E_INFO_C_SIII_071
E_INFO_PASCAL_SIII_071
E_INFO_C_SIII_071

a) O posibilitate de implementare a subprogramului sfx


utilizeaz extragerea ultimelor 3 cifre ale numrului i
compararea acestora.
b) programul citete din fiierul text cte un numr
natural cu exact 6 cifre i prin apeluri repetate ale funciei
sfx determin numerele cu proprietatea din enun.
Se pot citi valorile din fiier ntr-un tablou unidimensional,
apoi se parcurge tabloul de la al doilea la penultimul
element i se testeaz pentru fiecare dintre elemente
condiia de pol. Pentru un algoritm eficient, se evit
utilizarea tabloului, fiind necesare doar trei variabile.

Se va determina inversul numrului i n funcie de condiia


impus subprogramul returneaz 1 sau 0.

E_INFO_PASCAL_SIII_071
E_INFO_C_SIII_072

2.

Se urmresc apelurile recursive, determinndu-se valoarea


afiat

3.

Se vor declara corespunztor numele i tipul subprogramului.


Se vor memora n doi vectori caracteristici cifrele celor dou
numere apoi se vor determina numrul de cifre comune i se
va returna valoarea astfel obinut.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Dac se realizeaz
cerina fr a utiliza subprogramul de la punctul 3 se obine
punctaj parial. Dac se vor genera termenii irului pn la
poziia k se va obine un punctaj parial.

2.

Se urmresc apelurile recursive, determinndu-se valoarea


afiat

3.

Se vor declara corespunztor numele i tipul subprogramului.


Pentru a insera valoarea pe poziia k, se va parcurge tabloul
pn pe poziia k+1, de la dreapta spre stnga atribuind
elementului ai valoarea elementului ai-1 apoi elementului ak i se
va atribui valoarea dat.

4.

O rezolvare de punctaj maxim implic un anumit grad de


creativitate din partea concurentului. Dac se realizeaz
cerina fr a utiliza subprogramul de la punctul 3 se obine
punctaj parial.

E_INFO_PASCAL_SIII_072
E_INFO_C_SIII_072
E_INFO_PASCAL_SIII_072

E_INFO_C_SIII_072
E_INFO_PASCAL_SIII_072

E_INFO_C_SIII_073
E_INFO_PASCAL_SIII_073
E_INFO_C_SIII_073
E_INFO_PASCAL_SIII_073

E_INFO_C_SIII_073
E_INFO_PASCAL_SIII_073

Se obine punctaj parial pentru o soluie care memoreaz


numerele citite din fiier ntr-un tablou, apoi se insereaz
media aritmetic ntre dou elemente consecutive i se
afieaz n formatul cerut.
E_INFO_C_SIII_074

2.

Se urmresc apelurile recursive, determinndu-se valoarea


afiat

3a.

Se vor declara corespunztor numele i tipul subprogramului.


Subprogramul poate determina numrul cerut comparnd
fiecare cifr a numrului cu o variabil maxim ce se va
iniializa corespunztor.

3b

Se afieaz mesajul Da dac Cifra(n) returneaz o valoare


mai mic sau cel mult egal cu 4.

3c.

Se citete succesiv cte o valoare din fiier ntr-o variabil x i


se verific dac Cifra(x)=c.

2.

Algoritmul inverseaz elemente ale tabloului.

3.

Se vor declara corespunztor numele i tipul subprogramului.


Se va determina inversul numrului folosind un algoritm
elementar i se va furniza valoarea astfel obinut prin
parametru.

4.

Se pot citi valorile din fiier ntr-un tablou unidimensional, apoi


se parcurge tabloul de la al doilea la penultimul element i se
testeaz pentru fiecare dintre elemente condiia de punct de
minim. Pentru un algoritm eficient, se evit utilizarea tabloului,

E_INFO_PASCAL_SIII_074
E_INFO_C_SIII_074
E_INFO_PASCAL_SIII_074

E_INFO_C_SIII_074
E_INFO_PASCAL_SIII_074
E_INFO_C_SIII_074
E_INFO_PASCAL_SIII_074
E_INFO_C_SIII_075
E_INFO_PASCAL_SIII_075
E_INFO_C_SIII_075
E_INFO_PASCAL_SIII_075

E_INFO_C_SIII_075
E_INFO_PASCAL_SIII_075

fiind necesare doar trei variabile.


E_INFO_C_SIII_076

2.

Se urmresc apelurile recursive, i se constat c se va


calcula produsul cifrelor impare din numr.

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.

2.

Se urmresc apelurile recursive, i se constat c se va


calcula suma cifrelor impare din numr.

3.

Se deschide fiierul i se citesc numerele din fiier, numrnd


i nsumnd valorile ce ndeplinesc proprietatea cerut.

4.

Numerele prime citite din fiier se memoreaz ntr-un tablou


unidimensional. Numerele din tablou se vor afia n ordinea
invers memorrii.

2.

Se urmresc apelurile recursive, i se constat c se va


calcula numrul cifrelor impare din numr.

3.

Se citete numrul n. Se genereaz numere naturale


consecutive mai mici sau egale cu n, ncepnd cu valoarea 2
i se vor afia pe ecran doar numerele prime dintre cele
generate.

4.

Se definete subprogramul care determin cea mai mare


valoare negativ dintr-un tablou unidimensional. Pentru a
determina minimul valorilor pozitive dintr-un vector utiliznd
aceeai funcie, se va transmite tabloul n care s-au inversat n
prealabil semnele tuturor elementelor. Valorii determinate de
funcie i se va schimba semnul i astfel va reprezenta minimul
din valorile pozitive.

2.

Se urmresc apelurile recursive, i se constat c se va


determina maximul cifrelor din numr.

3.

O posibil rezolvare separ cifrele numrului i determin cele


mai mari dou cifre ale sale

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 )

2.

Se urmresc apelurile recursive, i se constat c se va


calcula suma cifrelor impare din numr.

3.

Se citete n, apoi utiliznd o instruciune for, se verific pentru


fiecare numr din intervalul [2,n-1] dac este un ptrat perfect
i dac restul mpririi lui n la respectivul numr este nenul; n
caz afirmativ se afieaz. Numerele afiate se vor contoriza i
dup fiecare 5 numere afiate se va afia sfrit de linie.

E_INFO_PASCAL_SIII_076
E_INFO_C_SIII_076
E_INFO_PASCAL_SIII_076
E_INFO_C_SIII_076
E_INFO_PASCAL_SIII_076

E_INFO_C_SIII_077
E_INFO_PASCAL_SIII_077
E_INFO_C_SIII_077
E_INFO_PASCAL_SIII_077
E_INFO_C_SIII_077
E_INFO_PASCAL_SIII_077
E_INFO_C_SIII_078
E_INFO_PASCAL_SIII_078
E_INFO_C_SIII_078
E_INFO_PASCAL_SIII_078

E_INFO_C_SIII_078
E_INFO_PASCAL_SIII_078

E_INFO_C_SIII_079
E_INFO_PASCAL_SIII_079
E_INFO_C_SIII_079
E_INFO_PASCAL_SIII_079
E_INFO_C_SIII_079
E_INFO_PASCAL_SIII_079

E_INFO_C_SIII_080
E_INFO_PASCAL_SIII_080
E_INFO_C_SIII_080
E_INFO_PASCAL_SIII_080

E_INFO_C_SIII_080

4.

E_INFO_PASCAL_SIII_080

E_INFO_C_SIII_081

b)Pentru toate numerele citite din fiier se apeleaz


subprogramul i se rein ntr-un tablou numere care au cifrele
ordonate descresctor. Se sorteaz tabloul printr-o metod ct
simpl, apoi se afieaz fiecare element din tablou care este
diferit de precedentul element.
2.

Se urmresc apelurile recursive, determinndu-se valoarea


afiat.

3.

Subprogramul poate determina numrul cerut parcurgnd


toate numere care au indicii n intervalul cerut , verificnd
condiia impus.O rezolvare posibil pentru program este s
se parcurg tabloul i s se verifice condiia cerut folosind
apeluri ale subprogramului ordonat.

4.

O rezolvare posibil este s se parcurg fiecare linie din fiier


i s se calculeze maximul care se va afia n fiierul de ieire.

2.

Se urmresc apelurile recursive, determinndu-se valoarea


afiat.

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 ntrun tablou sortat cresctor, apoi parcurge tabloul, pentru
determinarea numerelor cu proprietatea cerut.

2.

Se urmresc apelurile recursive, determinndu-se valoarea


afiat.

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 ntrun tablou sortat descresctor, apoi parcurge tabloul, pentru
determinarea numerelor cu proprietatea cerut.

2.

Se urmresc apelurile recursive, determinndu-se valoarea


afiat.

3.

O soluie posibil const n parcurgerea simultan a celor


dou tablouri i construirea tabloului c care are elementele cu
proprietatea cerut.

4.

O rezolvare posibil este s se parcurg fiecare linie din fiier


i s se calculeze cmmmc care se va afia n fiierul de ieire.

2.

Se urmresc apelurile recursive, determinndu-se valoarea


afiat.

3.

O soluie posibil const n parcurgerea simultan a celor


dou tablouri i construirea tabloului c care are elementele cu
proprietatea cerut.

4.

O rezolvare posibil este s se parcurg fiecare linie din fiier,

E_INFO_PASCAL_SIII_081
E_INFO_C_SIII_081
E_INFO_PASCAL_SIII_081

E_INFO_C_SIII_081
E_INFO_PASCAL_SIII_081
E_INFO_C_SIII_082
E_INFO_PASCAL_SIII_082
E_INFO_C_SIII_082
E_INFO_PASCAL_SIII_082
E_INFO_C_SIII_082
E_INFO_PASCAL_SIII_082

E_INFO_C_SIII_083
E_INFO_PASCAL_SIII_083
E_INFO_C_SIII_083
E_INFO_PASCAL_SIII_083
E_INFO_C_SIII_083
E_INFO_PASCAL_SIII_083

E_INFO_C_SIII_084
E_INFO_PASCAL_SIII_084
E_INFO_C_SIII_084
E_INFO_PASCAL_SIII_084
E_INFO_C_SIII_084
E_INFO_PASCAL_SIII_084
E_INFO_C_SIII_085
E_INFO_PASCAL_SIII_085
E_INFO_C_SIII_085
E_INFO_PASCAL_SIII_085
E_INFO_C_SIII_085

a)Se definete subprogramul ordonat.

s se calculeze cmmdc i apoi se vor afia numerele


simplificate cu cmmdc n fiierul de ieire.

E_INFO_PASCAL_SIII_085
E_INFO_C_SIII_086

2.

Se urmresc apelurile recursive, determinndu-se valoarea


afiat.

3.

O modalitate de rezolvare este parcurgerea cifrelor numrului


primit prin intermediul primului parametru, utiliznd valorile
succesive obinute prin restul mpririi numrului la 10,
respectiv a prii ntregi a valorii obinute prin mprirea la 10
a acestui numr. Pentru ca soluia s fie corect, trebuie
abordate cu atenie i cazurile speciale: numrul poate fi 0 (n
acest caz trebuie s se returneze 0), respectiv cazul n care
numrul conine cifre 0 terminale (dac se inverseaz ordinea
cifrelor numrului, aceste cifre 0 terminale se pot pierde). O
alt abordare ar fi transformarea cifrelor numrului iniial n
elemente ale unui tablou unidimensional. Se prelucreaz
aceste elemente, apoi se construiete numrul cerut, folosind
elementele tabloului.

4.

O rezolvare de punctaj maxim presupune gsirea celor dou


valori efectund o singur parcurgere a fiierului, i fr
utilizarea unui tablou. Se obine punctaj parial pentru o
soluie n care se memoreaz numerele citite din fiier ntr-un
tablou, apoi se parcurge tabloul, eventual de dou ori, pentru
determinarea celor dou numere cu proprietatea cerut i
afiarea acestora pe ecran n ordine cresctoare.

2.

Se urmresc apelurile recursive, determinndu-se valoarea


afiat.

3.

Se extrage cte o cifr din a i se construiete un nou numr


n care primele b cifre se introduc cele extrase din a, apoi
pentru fiecare cifr extras se introduce n numrul nou format
cifra 1.

4.

O rezolvare de punctaj maxim presupune gsirea celor dou


valori efectund o singur parcurgere a fiierului, i fr
utilizarea vreunui tablou. Se obine punctaj parial pentru o
soluie n care se memoreaz numerele citite din fiier ntr-un
tablou, apoi se parcurge tabloul, eventual de dou ori, pentru
determinarea celor dou numere cu proprietatea cerut i
afiarea acestora pe ecran.

2.

Se urmresc apelurile recursive, determinndu-se valoarea


cerut.

3.

Parametrul x al subprogramului numar va fi referit prin


adres. Se parcurg cifrele numrului n i se verific dac sunt
sau nu satisfcute simultan cele dou condiii referitor la cifra
curent c: c1c i c2c. Dac da, atunci c se adaug la x (x
iniial trebuie s aib valoarea 0).

4.

O posibil rezolvare de punctaj maxim presupune gsirea


valorii maxime (max), efectund o singur parcurgere a
fiierului. Se poate utiliza un subprogram (optimizat) care
verific dac un numr este prim sau nu. Se ncepe verificarea
numerelor naturale de la max pn la primul numr care este
prim, utiliznd o structur repetitiv cu test iniial. Se obine
punctaj parial pentru o soluie n care se memoreaz
numerele citite din fiier ntr-un tablou, apoi se parcurge

E_INFO_PASCAL_SIII_086
E_INFO_C_SIII_086
E_INFO_PASCAL_SIII_086

E_INFO_C_SIII_086
E_INFO_PASCAL_SIII_086

E_INFO_C_SIII_087
E_INFO_PASCAL_SIII_087
E_INFO_C_SIII_087
E_INFO_PASCAL_SIII_087

E_INFO_C_SIII_087
E_INFO_PASCAL_SIII_087

E_INFO_C_SIII_088
E_INFO_PASCAL_SIII_088
E_INFO_C_SIII_088
E_INFO_PASCAL_SIII_088

E_INFO_C_SIII_088
E_INFO_PASCAL_SIII_088

tabloul pentru determinarea valorii maxime, i se caut


numrul a care satisface condiiile din enun.
E_INFO_C_SIII_089

2.

Se urmresc apelurile recursive, determinndu-se valoarea


cerut.

3.

Parametrul n al subprogramului numar va fi referit prin


adres. Se determin cifrele numrului n (utiliznd mprirea
ntreag i restul mpririi la 10). Din aceste cifre se
construiete n memorie, valoarea parametrului n (referit prin
adres). Se va acorda atenie cazului n care parametrul n
primete ca valoare un numr cu zerouri terminale (de
exemplu n=202300, n care se cere nlocuirea cifrei 2 cu cifra
1).

4.

O posibil rezolvare de punctaj maxim se obine prin


utilizarea vectorului caracteristic. Acesta este un tablou
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 numrul de apariii ale valorii k, dac
acesta apare n fiier, respectiv valoarea 0, dac acest numr
nu apare n fiier. Prin parcurgerea acestui vector se obin, n
ordine cresctoare, valorile cerute. Se obine punctaj parial
pentru o soluie n care se memoreaz numerele citite din
fiier ntr-un tablou, se sorteaz i apoi se parcurge tabloul
pentru determinarea valorilor cerute.

2.

Se urmresc apelurile recursive, determinndu-se valoarea


afiat.

3.

Se declar tipul definit de utilizator vect ca fiind un tablou


unidimensional cu cel mult 200 de componente numere
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 diferena. Dac aceasta este mai
mare dect 1000, se returneaz valoarea 1, altfel 0.

4.

O posibil rezolvare de punctaj maxim se obine prin


utilizarea vectorului caracteristic. Acesta este un tablou
unidimensional cu cel mult 10000 de componente, numerotate
de la 0 la 9999, n care componenta cu indicele k va avea o
valoare ce reprezint numrul de divizori ai numrului k, dac
acesta apare n fiier, respectiv valoarea 0, dac acest numr
nu apare n fiier. De exemplu, v[12]=6 pentru c numrul 12
are 6 divizori. ntruct valorile din fiier se pot repeta, se va
calcula numrul de divizori doar n cazul n care vectorul
caracteristic conine iniial valoarea 0 pe poziia k (i k exist
n fiier). Determinnd prima apariie a valorii maxime a
acestui vector se obine valoarea cerut. Valoarea maxim se
determin cu o singur parcurgere a vectorului caracteristic.
Se va afia indicele elementului maxim. Se obine punctaj
parial pentru o soluie n care se memoreaz numerele citite
din fiier ntr-un tablou, se sorteaz i apoi se parcurge tabloul
pentru determinarea valorii cerute.

2.

Se urmresc apelurile recursive, determinndu-se valoarea


afiat.

3.

a) Subprogramul este o funcie cu un parametru ntreg i


rezultat ntreg.
b) Programul va citi succesiv cte un numr ntr-o variabil x

E_INFO_PASCAL_SIII_089
E_INFO_C_SIII_089
E_INFO_PASCAL_SIII_089

E_INFO_C_SIII_089
E_INFO_PASCAL_SIII_089

E_INFO_C_SIII_090
E_INFO_PASCAL_SIII_090
E_INFO_C_SIII_090
E_INFO_PASCAL_SIII_090

E_INFO_C_SIII_090
E_INFO_PASCAL_SIII_090

E_INFO_C_SIII_091
E_INFO_PASCAL_SIII_091
E_INFO_C_SIII_091
E_INFO_PASCAL_SIII_091

i va testa valoarea apelului par(x/10)


E_INFO_C_SIII_091

4a.

Metoda utilizat este: 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, dac este egal cu max se
modific lin_ultim iar dac e mai mic nu se modific nimic.

4b.

Se transpune n limbaj, algoritmul:


citete x
max=x; lin_prim=1; lin_ultim=1; i=1
ct timp n-am ajuns la sfritul fiierului
citete 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

3a.

Subprogramul nu furnizeaz nici un rezultat, deci e de tip


procedure / void i are doi parametri

3b.

Se poate folosi un singur aple al subprogramului ordonare,


afind ultimele m, apoi primele m elemente ale tabloului
rezultat sau dou apeluri, dou apeluri; dac se dorete
ordonarea descresctoare schimbnd semnul tuturor
elementelor din tablou

4.

pentru c1=A, Z
pentru c2=A,Z
dac c1c2 scrie c1c2

3.

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

E_INFO_PASCAL_SIII_091

E_INFO_C_SIII_091
E_INFO_PASCAL_SIII_091

E_INFO_C_SIII_092
E_INFO_PASCAL_SIII_092
E_INFO_C_SIII_092
E_INFO_PASCAL_SIII_092

E_INFO_C_SIII_092
E_INFO_PASCAL_SIII_092
E_INFO_C_SIII_093
E_INFO_PASCAL_SIII_093
E_INFO_C_SIII_093

4.

E_INFO_PASCAL_SIII_093

E_INFO_C_SIII_094

E_INFO_PASCAL_SIII_094

E_INFO_C_SIII_094

b) Se apeleaz funcia cu valorile 0 i n-1 pentru p1 i


respectiv p2.
4

Algoritm clasic pentru detereminarea unui minim (n cazul


acestei probleme, minimul modulului diferenei dintre x i
valorile aflate n fiier. Numrul de pai este egal cu numrul
de valori din fiier; programul folosete doar cteva variabile
simple (nu este necesar reinerea tuturor valorilor din fiier
ntr-un tablou).

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 folosind trei instruciuni pentru toate tripletele de
sum S i reine pe cel n care produsul celor trei numere din
triplet este maxim.
a. Se testeaz dac lungimea fiecare dintre cele trei laturi
e strict mai mic dect suma lungimilor celorlalte dou

E_INFO_PASCAL_SIII_094

E_INFO_C_SIII_095
E_INFO_PASCAL_SIII_095
E_INFO_C_SIII_095
E_INFO_PASCAL_SIII_095

E_INFO_C_SIII_096

Se poate utiliza algoritmul lui Euclid pentru determinarea celui


mai mare divizor comun al acelor dou numere.
In programul principal iniializm o variabil d cu primul numr
i actualizm aceast variabil (d=dcm(d,x)) pe msur ce
citim numerele din fiier n variabila x.
a) Se parcurge tabloul transmis ca parametru ntre cele dou
poziii i se contorizeaz valorile pozitive, negative i nule.

E_INFO_PASCAL_SIII_096

E_INFO_C_SIII_096

E_INFO_PASCAL_SIII_096

E_INFO_C_SIII_097

2.

Se pot genera toate irurile corecte care ncep cu litera a i se


vor afia ultimele trei.

3.

4.

Subprogramul poate determina suma cerut parcurgnd toate


numerele dintre x i y i nsumndu-le pe cele care respect
condiia impus.
Este considerat optim un algoritm care afieaz, pentru fiecare
cifr de la 0 la 9, valorile din fiier care au pe x ca cifr a
unitilor. Este posibil permis memorarea valorilor din fiier
sau deschiderea fiierului de 10 ori, cte o dat pentru fiecare
cifr.

2.

Se pot genera toate submulimile n ordinea impus i se vor


afia ultimele trei.

3.

Subprogramul poate determina numrul cerut multipicnd


valoarea unei variabile cu valoarea lui x, ct timp produsul
obinut nu este mai mare dect y.

E_INFO_PASCAL_SIII_097
E_INFO_C_SIII_097
E_INFO_PASCAL_SIII_097
E_INFO_C_SIII_097
E_INFO_PASCAL_SIII_097

E_INFO_C_SIII_098
E_INFO_PASCAL_SIII_098
E_INFO_C_SIII_098
E_INFO_PASCAL_SIII_098
E_INFO_C_SIII_098

4.

E_INFO_PASCAL_SIII_098

E_INFO_C_SIII_099

Se pot genera toate irurile care respect condiia impus i


se vor afia cel de al treilea i al patrulea.

3.

Subprogramul poate determina numrul cerut ca rest la


imprtirea la 10nr-1 , unde nr este numrul de cifre al lui k.

E_INFO_PASCAL_SIII_099
E_INFO_C_SIII_099

4.

E_INFO_PASCAL_SIII_099
E_INFO_C_SIII_100

Se urmresc apelurile recursive, determinndu-se valoarea


afiat.

3.

Subprogramul poate determina numrul cerut parcurgnd toi


divizorii posibili ai celor trei numere i contorizndu-i pe cei 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 ntrun tablou, apoi parcurge tabloul, eventual de la dreapta la
stnga, pentru determinarea numrului cu proprietatea cerut,
precum i a poziiei acestuia n tablou.

E_INFO_PASCAL_SIII_100
E_INFO_C_SIII_100
E_INFO_PASCAL_SIII_100

Algoritm de complexitate ptratic O(n2), n care se folosete


un singur vector de n elemente ntregi, care memoreaz valorile
din fiier. Valorile pozitive sunt ordonate, iar la afiare, n locul
celor negative se afieaz 0.

2.

E_INFO_PASCAL_SIII_100
E_INFO_C_SIII_100

Este considerat optim un algoritm care folosete un vector de


frecven care controrizeaz numrul de apariii al fiecrei cifre.
Este posibil i memorarea valorilor din fiier sau deschiderea
fiierului de 10 ori, cte o dat pentru fiecare cifr. n toate
situaiile se determin numrul de apariii al fiecrei cifre, n
funcie de care se efectueaz afiarea.

2.

E_INFO_PASCAL_SIII_099
E_INFO_C_SIII_099

laturi.
b. Se formeaz toate perechile posibile cu laturile celor dou
triunghiuri (sunt 3!=6 cazuri)
O soluie corect, dar ineficient ca timp de executare i
spaiu de memorie utilizat reine numerele de pe prima linie
ntr-un vector, apoi pe msur ce citete cte un interval
determin dac toate numerele din tabou aparin intervalului
printr-o parcurgerea integral a vectorului. Complexitatea
algoritmului este O(n*m), iar spaiu de memorie folosit: un
tablou de 1000 elemente i cteva variabile simple.

S-ar putea să vă placă și