Sunteți pe pagina 1din 19

subiecte III intensiv

subiect E_INFO_C_SIII_001 E_INFO_PASCAL_SIII_001 E_INFO_C_SIII_001 E_INFO_PASCAL_SIII_001 4 item 3 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 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, 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. b) o posibil soluie presupune citirea numerelor i testarea

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

E_INFO_C_SIII_006 E_INFO_PASCAL_SIII_006

3.

E_INFO_C_SIII_007 E_INFO_PASCAL_SIII_007

4.

E_INFO_C_SIII_007 E_INFO_PASCAL_SIII_007

5.

E_INFO_C_SIII_008 E_INFO_PASCAL_SIII_008 E_INFO_C_SIII_008 E_INFO_PASCAL_SIII_008

3.

4.

E_INFO_C_SIII_009 E_INFO_PASCAL_SIII_009

3.

E_INFO_C_SIII_010 E_INFO_PASCAL_SIII_010 E_INFO_C_SIII_010 E_INFO_PASCAL_SIII_010

3.

4.

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 determinndu-se 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 1 la n. 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 mare putere a lui doi mai mic dect acel numr.

E_INFO_C_SIII_011 E_INFO_Pascal_SIII_011 E_INFO_C_SIII_011 E_INFO_Pascal_SIII_011 E_INFO_C_SIII_012 E_INFO_Pascal_SIII_012

3.

Se citesc valorile de la tastatur, apoi pentru fiecare indice de la 1 la n se va atribui celei de a i-a valoare din vectorul rezultat valoarea returnat de ctre subprogramul P, apelat pentru k=i. Se citesc pe rnd numerele de la tastatur, iar dac numrul citit este prim se va incrementa un control a crui valoare este afiat la final pe ecran. Se citesc primele m valori ntr-un vector. Se citete apoi cte o valoare din a doua secven i folosind un algoritm asemntor celui de interclasare se determin valorile care apar doar n una dintre secvene. 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). 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. Se parcurg toate numerele impare din intervalul [11,99]. Dac att numrul curent ct i inversul acestuia sunt numere prime, numrul va fi afiat pe ecran. Se citesc numere pn la citirea numrului 0. Pentru fiecare numr se extrag cifrele i se verific daca cifra curent este 5. Dac da, este incrementat un contor a crui valoare se va afia n final pe ecran. 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. Subprogramul determina numrul cerut 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. Subprogramul extrage cifrele numrului n i le contorizeaz pe 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 3 pe poziia celui de-al doilea parametru. Subprogramul poate determina numrul cerut, parcurgnd toate elementele vectorului i contoriznd acele valori care respect condiia impus. Se formeaz un vector n care primul element este egal cu 0, iar restul elementelor sunt completate cu numerele din fiier. Apoi se afieaz rezultatul dat de funcia interval, micorat cu 1.

4.

3.

E_INFO_C_SIII_012 E_INFO_Pascal_SIII_012 E_INFO_C_SIII_013 E_INFO_Pascal_SIII_013

4.

3.

E_INFO_C_SIII_013 E_INFO_Pascal_SIII_013

4.

E_INFO_C_SIII_014 E_INFO_Pascal_SIII_014 E_INFO_C_SIII_014 E_INFO_Pascal_SIII_014 E_INFO_C_SIII_015 E_INFO_Pascal_SIII_015 E_INFO_C_SIII_015 E_INFO_Pascal_SIII_015 E_INFO_C_SIII_016 E_INFO_PASCAL_SIII_016

3.

4.

3.

4.

3.

E_INFO_C_SIII_016 E_INFO_PASCAL_SIII_016

4.

E_INFO_C_SIII_017 E_INFO_PASCAL_SIII_017 E_INFO_C_SIII_017 E_INFO_PASCAL_SIII_017

3.

4.

E_INFO_C_SIII_018 E_INFO_PASCAL_SIII_018

3.

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. Se formeaz un vector n care primul element este egal cu 0, iar restul elementelor sunt completate cu numerele din fiier. Apoi se afieaz rezultatul dat de funcia count. 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. Se memoreaz pe rnd, n vectorul a, cele m numere de pe cte o linie a fiierului, iar apoi apelnd subprogramul aranjare se aduc elementele negative la nceputul vectorului. Se vor scrie elementele vectorului n fiierul nr2.txt, parcurgnd vectorul de la sfrit la nceput. 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. Se memoreaz pe rnd, n vectorul a, cele m numere de pe cte o linie a fiierului, iar apoi apelnd subprogramul nule se aduc elementele nenule la nceputul vectorului. Se vor scrie elementele vectorului n fiierul nr2.txt, parcurgnd vectorul de la sfrit la nceput. 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 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 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 Se calculeaz exponentul lui 5 din descompunerea n factori primi a lui n!. Acesta este [n/5]+[n/52]+[n/53]+... n=5; ct timp nz(n) < k n=n+5

E_INFO_C_SIII_018 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

4.

3.

4.

E_INFO_C_SIII_020 E_INFO_PASCAL_SIII_020 E_INFO_C_SIII_020 E_INFO_PASCAL_SIII_020

3.

4.

E_INFO_C_SIII_021 E_INFO_PASCAL_SIII_021 E_INFO_C_SIII_021 E_INFO_PASCAL_SIII_021

3.

4a.

E_INFO_C_SIII_021 E_INFO_PASCAL_SIII_021

4b.

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 E_INFO_PASCAL_SIII_022 E_INFO_C_SIII_023 E_INFO_PASCAL_SIII_023 E_INFO_C_SIII_023 E_INFO_PASCAL_SIII_023 E_INFO_C_SIII_023

3a. 3b. 4.

p=1 ct timp p*2<=b p=p*2 dac p>=a scrie p altfel scrie 0 aux=x[1] pt. i=1,n-1 x[i]=x[i+1] x[n]=aux 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), ... citete n; max=32002

3a.

3b.

4.

E_INFO_PASCAL_SIII_023

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 Dup citirea datelor se apeleaz p(n,x,mini,maxi,sum) i se calculeaz media cu (sum-mini-maxi)/(n-2) Dup citirea datelor cu memorarea tabloului ntr-un vector x i se iniializeaz min cu b+1 Se parcurge vectorul, 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. 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 numarator=x; numitor=1 ct timp numarator [numrtor] numitor=numitor*10; numrator=numarator*10 d=cmmdc(numarator, numitor) scrie numarator/d, numitor/d 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. Subprogramul sterge realizeaz deplasarea celor n-i elemente aflate n vector, dup elementul vi. Numrul de elemente se micoreaz cu o unitate. n programul principal se parcurge tabloul, i, pentru fiecare element vi,tergem elementul v+1, dac vi=vi+1.Deplasarea n vector se face doar atunci cnd vivi+1. Rmn astfel doar elemente distincte. 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. 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 care care

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

3b. 4.

E_INFO_C_SIII_025 E_INFO_PASCAL_SIII_025

3.

E_INFO_C_SIII_025 E_INFO_PASCAL_SIII_025

4a.

E_INFO_C_SIII_025 E_INFO_PASCAL_SIII_025 E_INFO_C_SIII_026 E_INFO_PASCAL_SIII_026

4b.

4.

E_INFO_C_SIII_027 E_INFO_PASCAL_SIII_027

4.

E_INFO_C_SIII_028 E_INFO_PASCAL_SIII_028

4.

E_INFO_C_SIII_029 E_INFO_PASCAL_SIII_029

4.

E_INFO_C_SIII_030 E_INFO_PASCAL_SIII_030

4.

ncepe pe locul i ct timp aceast sum este strict mai mic dect B[j]. 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. Se urmresc apelurile recursive, determinndu-se valoarea returnat de subprogram. Se ordoneaz cresctor doar elementele tabloului care respect condiia din enun. 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. Se urmresc apelurile recursive, determinndu-se valoarea afiat de subprogram. Se parcurg numerele naturale din intervalul [x,y] ;I se vor afi;a pe ecran doar cele care ndeplinesc condiia specificat n enun. 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 i determin cele mai mari dou valori care respect condiia specificat n enun. Se urmresc apelurile subprogramului n funcie de parametrii specificai. O rezolvare posibil const n parcurgerea elementelor tabloului i verificarea condiiilor enunate, pentru fiacre component a tabloului. O rezolvare de punctaj maxim implic un anumit grad de creativitate din partea concurentului. Se obine punctaj parial pentru o rezolvare clasic care memoreaz ntr-un vector datele din fiier i calculeaz suma celor mai mari m elemente ale vectorului. Se urmresc apelurile recursive, determinndu-se valoarea returnat de subprogram.

E_INFO_C_SIII_031 E_INFO_PASCAL_SIII_031 E_INFO_C_SIII_031 E_INFO_PASCAL_SIII_031 E_INFO_C_SIII_031 E_INFO_PASCAL_SIII_031

2.

3.

4.

E_INFO_C_SIII_032 E_INFO_PASCAL_SIII_032 E_INFO_C_SIII_032 E_INFO_PASCAL_SIII_032 E_INFO_C_SIII_032 E_INFO_PASCAL_SIII_032

2.

3.

4.

E_INFO_C_SIII_033 E_INFO_PASCAL_SIII_033 E_INFO_C_SIII_033 E_INFO_PASCAL_SIII_033 E_INFO_C_SIII_033 E_INFO_PASCAL_SIII_033

2.

3.

4.

E_INFO_C_SIII_034 E_INFO_PASCAL_SIII_034 E_INFO_C_SIII_034 E_INFO_PASCAL_SIII_034

2.

3.

Se descompune numrul n cifre i se verific dac fiecare cifr ndeplinete condiia din enun. 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 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

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. Se urmresc schimbrile poziiilor componentelor vectorului. 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. O posibil rezolvare const n citirea din fiier a datelor specificate i afiarea pe ecran a valorilor care ndeplinesc condiiile specificate de problem. Din exemplu se deduce modalitatea de generare, i se adapteaz pentru valoarea cerut. 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. 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. Se urmresc apelurile recursive, determinndu-se valoarea afiat. 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. Se scrie antetul subprogramului, urmrind cerina. 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.

3.

E_INFO_C_SIII_035 E_INFO_PASCAL_SIII_035 E_INFO_C_SIII_036 E_INFO_PASCAL_SIII_036 E_INFO_C_SIII_036 E_INFO_PASCAL_SIII_036 E_INFO_C_SIII_036 E_INFO_PASCAL_SIII_036

4.

2. 3.

4.

E_INFO_C_SIII_037 E_INFO_PASCAL_SIII_037 E_INFO_C_SIII_037 E_INFO_PASCAL_SIII_037

2. 3.

E_INFO_C_SIII_037 E_INFO_PASCAL_SIII_037

4.

E_INFO_C_SIII_038 E_INFO_PASCAL_SIII_038 E_INFO_C_SIII_038 E_INFO_PASCAL_SIII_038 E_INFO_C_SIII_038 E_INFO_PASCAL_SIII_038

2. 3. 4.

Se urmresc apelurile recursive, determinndu-se valoarea afiat. Subprogramul adaug la numrul pe care l formm cifre ale numrului dat care respect proprietatea din enun. Se scrie definiia complet a subprogramului, urmrind cerina. 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 E_INFO_PASCAL_SIII_039 E_INFO_C_SIII_039 E_INFO_PASCAL_SIII_039

2. 3.

Se urmresc apelurile recursive, determinndu-se valoarea afiat. 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. Se scrie antetul subprogramului, urmrind cerina. 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_C_SIII_039 E_INFO_PASCAL_SIII_039

4.

E_INFO_C_SIII_040 E_INFO_PASCAL_SIII_040 E_INFO_C_SIII_040 E_INFO_PASCAL_SIII_040

2. 3.

Se urmresc apelurile recursive, determinndu-se valoarea afiat. 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. Se scrie antetul subprogramelor, urmrind cerina. 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.

E_INFO_C_SIII_040 E_INFO_PASCAL_SIII_040

4.

E_INFO_C_SIII_041 E_INFO_PASCAL_SIII_041 E_INFO_C_SIII_041 E_INFO_PASCAL_SIII_041 E_INFO_C_SIII_041 E_INFO_PASCAL_SIII_041

3.

Subprogramul poate verifica dac vectorul respect proprietatea cerut prin verificarea unicitii elementelor i prin numararea vecinilor ce au diferena n modul egal cu 1. 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. Elementul maxim ct cel minim trebuie sa se determine la o singur parcurgere a fiierului fr a mai utiliza tipul tablou. 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 declar un vector de cel puin 99 de elemente. O rezolvare posibil citete valorea n iar apoi elementele vectorului. Se calculeaz suma elementelor impare. 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. Se declar un vector de cel puin 99 de elemente. O rezolvare posibil citete valorea n iar apoi elementele vectorului. Se calculeaz numrul elementelor ptrate perfecte. O rezolvare de punctaj maxim implic un anumit grad de creativitate din partea concurentului. Numerele ce apar de cel puin dou ori trebuie determinate la o singur parcurgere a

3.

4.

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

4.

3.

4.

E_INFO_C_SIII_044 E_INFO_PASCAL_SIII_044 E_INFO_C_SIII_044 E_INFO_PASCAL_SIII_044

3.

4.

fiierului. Se poate utiliza un vector caracteristic. E_INFO_C_SIII_045 E_INFO_PASCAL_SIII_045 3. Se declar un vector de cel puin 99 de elemente. O rezolvare posibil citete valorea n iar apoi elementele vectorului. Se numr apoi de cte ori apare fiecare element i se afieaz elementele ce apar o singur dat. 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. Se urmresc apelurile recursive, determinndu-se valoarea afiat. 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. a) Primul parametru, nr, este transmis prin valare, ceilali doi, nc i sc, prin referin. 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 E_INFO_PASCAL_SIII_047 E_INFO_C_SIII_047 E_INFO_PASCAL_SIII_047 4. 3. Se citete de la tastatur k, din fiier n. Pentru fiecare numr, nr, citit din fiier, se caut o cifr care s fie egal cu k. a) Primul parametru, nr, este transmis prin valare, al doilea, s, prin referin. b) Se citete n. Se iniializeaz o variabil max cu 0. Se citete fiecare numr nr dintre cele n, se compar valoarea furnizat la apelul subprogramului cif cu max. E_INFO_C_SIII_048 E_INFO_PASCAL_SIII_048 3. a) Parametri se transmit prin valoare. Rezultatul este ntreg. b) Se citesc a, b, n. Dac a i b nu formeaz interval se interschimb. Se parcurge intervalul [a,b]. Se determin cel mai mare divizor comun dintre fiecare numr din interval i n. Se compar cu 1. Se formeaz vectorul. 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. 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 multiplii lui n (restul mpririi s fie 0). Se formeaz vectorul. a) Primul parametru se transmite prin valoare, al doilea prin refrin. 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 E_INFO_PASCAL_SIII_050 3. 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

E_INFO_C_SIII_045 E_INFO_PASCAL_SIII_045

4.

E_INFO_C_SIII_046 E_INFO_PASCAL_SIII_046 E_INFO_C_SIII_046 E_INFO_PASCAL_SIII_046

2. 3.

E_INFO_C_SIII_046 E_INFO_PASCAL_SIII_046

4.

E_INFO_C_SIII_048 E_INFO_PASCAL_SIII_048

E_INFO_C_SIII_049 E_INFO_PASCAL_SIII_049 E_INFO_C_SIII_049 E_INFO_PASCAL_SIII_049

3.

4.

divizorii lui n prin apel div. Se formeaz vectorul. 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 elementele din acest vector care sunt mai 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 contorizeaza intr-un vector f cu 10 elemente aparitiile fiecarei cifre in numar. Cifrele sunt distincte daca in vectorul f elementele sunt mai mici decat 2. Se ordoneaza elementele vectorului si apoi se verifica daca formeaza o progresie aritmetica. b) Pentru perechi de elemente consecutive se verifica daca cmmdc este 1. a) Se pun cifrele numarului intr-un vector, se ordoneaza crescator si se formeaza noul numar Se numara cate triplete satisfac conditia: v[i]=v[i-1]+v[i+1]

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

E_INFO_C_SIII_052 E_INFO_PASCAL_SIII_052 E_INFO_C_SIII_053 E_INFO_PASCAL_SIII_053 E_INFO_C_SIII_054 E_INFO_PASCAL_SIII_054 E_INFO_C_SIII_054 E_INFO_PASCAL_SIII_054 E_INFO_C_SIII_056 E_INFO_PASCAL_SIII_056

3.

Se citesc numerele din fiier, pn la sfritul acestuia i se afieaz pe ecran numerele pare pe msur ce sunt citite. Nu este necesar folosirea unui tablou, numerele putnd fi prelucrate pe msur ce sunt citite. 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. Se citesc numerele din fiier pn la sfritul acestuia, se rein ntr-un vector i apoi se construiesc i se afieaz toate sumele cerute (nu este necesar ca acestea s fie la rndul lor reinute ntr-un vector). 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 cresctor i se afieaz primele 2 componente. 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

E_INFO_C_SIII_055 E_INFO_PASCAL_SIII_055

E_INFO_C_SIII_055 E_INFO_PASCAL_SIII_055 E_INFO_C_SIII_057 E_INFO_PASCAL_SIII_057

3.

E_INFO_C_SIII_058 E_INFO_PASCAL_SIII_058

3.

E_INFO_C_SIII_059 E_INFO_PASCAL_SIII_059

3.

E_INFO_C_SIII_061 E_INFO_PASCAL_SIII_061

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. 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 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. a) O soluie posibil utilizeaz un vector 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 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. 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. 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.

E_INFO_C_SIII_062 E_INFO_PASCAL_SIII_062

E_INFO_C_SIII_063 E_INFO_PASCAL_SIII_063

E_INFO_C_SIII_064 E_INFO_PASCAL_SIII_064

E_INFO_C_SIII_064 E_INFO_PASCAL_SIII_064

E_INFO_C_SIII_065 E_INFO_PASCAL_SIII_065

E_INFO_C_SIII_066 E_INFO_PASCAL_SIII_066 E_INFO_C_SIII_066 E_INFO_PASCAL_SIII_066

3.

Subprogramul poate determina numrul cerut parcurgnd toate elementele tabloului i determinnd maximul dintre divizorii comuni ai elementelor tabloului. 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.

4.

E_INFO_C_SIII_067 E_INFO_PASCAL_SIII_067 E_INFO_C_SIII_067 E_INFO_PASCAL_SIII_067

3.

Subprogramul poate determina numrul cerut parcurgnd toate elementele tabloului i determinnd numrul de numere prime din tablou. 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. 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. 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. 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. Se urmresc apelurile recursive, determinndu-se valoarea afiat Se vor declara corespunztor numele i tipul subprogramului. Se va determina inversul numrului i n funcie de condiia impus subprogramul returneaz 1 sau 0. Se urmresc apelurile recursive, determinndu-se valoarea afiat 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. 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. Se urmresc apelurile recursive, determinndu-se valoarea afiat 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. 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.

4.

E_INFO_C_SIII_068 E_INFO_PASCAL_SIII_068

4.

E_INFO_C_SIII_069 E_INFO_PASCAL_SIII_069

4.

E_INFO_C_SIII_070 E_INFO_PASCAL_SIII_070

4.

E_INFO_C_SIII_071 E_INFO_PASCAL_SIII_071 E_INFO_C_SIII_071 E_INFO_PASCAL_SIII_071 E_INFO_C_SIII_072 E_INFO_PASCAL_SIII_072 E_INFO_C_SIII_072 E_INFO_PASCAL_SIII_072

2. 3.

2. 3.

E_INFO_C_SIII_072 E_INFO_PASCAL_SIII_072

4.

E_INFO_C_SIII_073 E_INFO_PASCAL_SIII_073 E_INFO_C_SIII_073 E_INFO_PASCAL_SIII_073

2. 3.

E_INFO_C_SIII_073 E_INFO_PASCAL_SIII_073

4.

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 E_INFO_PASCAL_SIII_074 E_INFO_C_SIII_074 E_INFO_PASCAL_SIII_074 3. 2. Se urmresc apelurile recursive, determinndu-se valoarea afiat 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. 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 determin cifra axim pentru fiecare dintre elementele tabloului, determin cte au cifra maxi9m egal cu val citit de la tastatur i afieaz mesjul i numrul n formatul cerut. Algoritmul inverseaz elemente ale tabloului. 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. 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, verific proprietatea de palindrom i afieaz elementele care ndeplinesc aceast proprietate. Se urmresc apelurile recursive, i se constat c se va calcula produsul cifrelor impare din numr. Subprogramul poate determina numrul cerut verificnd i numrnd cte din cifrele numrului n se afl n intervalul cerut. 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. Se urmresc apelurile recursive, i se constat c se va calcula suma cifrelor impare din numr. Se deschide fiierul i se citesc numerele din fiier, numrnd i nsumnd valorile ce ndeplinesc proprietatea cerut. Numerele prime citite din fiier se memoreaz ntr-un tablou unidimensional. Numerele din tablou se vor afia n ordinea invers memorrii. Se urmresc apelurile recursive, i se constat c se va calcula numrul cifrelor impare din numr. Se citete numrul n. Se genereaz numere naturale consecutive mai mici sau egale cu n, ncepnd cu valoarea 2

E_INFO_C_SIII_074 E_INFO_PASCAL_SIII_074

4.

E_INFO_C_SIII_075 E_INFO_PASCAL_SIII_075 E_INFO_C_SIII_075 E_INFO_PASCAL_SIII_075

2. 3.

E_INFO_C_SIII_075 E_INFO_PASCAL_SIII_075

4.

E_INFO_C_SIII_076 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

2. 3.

4.

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

2. 3. 4.

2. 3.

E_INFO_PASCAL_SIII_078 E_INFO_C_SIII_078 E_INFO_PASCAL_SIII_078 4.

i se vor afia pe ecran doar numerele prime dintre cele generate. 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. Se urmresc apelurile recursive, i se constat c se va determina maximul cifrelor din numr. O posibil rezolvare separ cifrele numrului i determin cele mai mari dou cifre ale sale 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 ) Se urmresc apelurile recursive, i se constat c se va calcula suma cifrelor impare din numr. Se parcurge vectorul, se verific dac elementul curent este un ptrat perfect i n caz afirmativ se va afia. Numerele afiate se vor contoriza i dup fiecare 10 numere afiate se va afia sfrit de linie. a)Se definete subprogramul ordonat. b)Pentru toate numerele citite din fiier se apeleaz subprogramul i se afieaz acele numere care au cifrele ordonate cresctor sau descresctor 2. 3. Se urmresc apelurile recursive, determinndu-se valoarea afiat. 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. O rezolvare posibil este s se parcurg fiecare linie din fiier i s se calculeze maximul care se va afia n fiierul de ieire. Se urmresc apelurile recursive, determinndu-se valoarea afiat. Subprogramul poate determina numrul cerut parcurgnd toate numere din tablou care verific condiia impus. 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.

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

2. 3. 4.

E_INFO_C_SIII_080 E_INFO_PASCAL_SIII_080 E_INFO_C_SIII_080 E_INFO_PASCAL_SIII_080

2. 3.

E_INFO_C_SIII_080 E_INFO_PASCAL_SIII_080

4.

E_INFO_C_SIII_081 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

4. 2. 3. 4.

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

2. 3. 4.

Se urmresc apelurile recursive, determinndu-se valoarea afiat. Subprogramul poate determina numrul cerut parcurgnd toate numere din tablou care verific condiia impus. 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. Se urmresc apelurile recursive, determinndu-se valoarea afiat. O soluie posibil const n parcurgerea simultan a celor dou tablouri i construirea tabloului c care are elementele cu proprietatea cerut. O rezolvare posibil este s se parcurg fiecare linie din fiier i s se calculeze cmmmc care se va afia n fiierul de ieire. Se urmresc apelurile recursive, determinndu-se valoarea afiat. O soluie posibil const n parcurgerea simultan a celor dou tablouri i construirea tabloului c care are elementele cu proprietatea cerut. 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. Se urmresc apelurile recursive, determinndu-se valoarea afiat. 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. 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. Se urmresc apelurile recursive, determinndu-se valoarea afiat.

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 E_INFO_PASCAL_SIII_085 E_INFO_C_SIII_086 E_INFO_PASCAL_SIII_086 E_INFO_C_SIII_086 E_INFO_PASCAL_SIII_086

2. 3.

4. 2. 3.

4.

2. 3.

E_INFO_C_SIII_086 E_INFO_PASCAL_SIII_086

4.

E_INFO_C_SIII_087 E_INFO_PASCAL_SIII_087

2.

E_INFO_C_SIII_087 E_INFO_PASCAL_SIII_087 E_INFO_C_SIII_087 E_INFO_PASCAL_SIII_087

3. 4.

Se calculeaz y=10b i se returneaz numrul rezultat din partea ntreag a valorii a/y nmulit cu y. 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. Se urmresc apelurile recursive, determinndu-se valoarea cerut. 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). 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 tabloul pentru determinarea valorii maxime, i se caut numrul a care satisface condiiile din enun. Se urmresc apelurile recursive, determinndu-se valoarea cerut. 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). 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 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[10]=4 pentru c numrul 10 are 4 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). 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 ntrun tablou, se sorteaz i apoi se parcurge tabloul pentru determinarea valorilor cerute. Se urmresc apelurile recursive, determinndu-se valoarea

E_INFO_C_SIII_088 E_INFO_PASCAL_SIII_088 E_INFO_C_SIII_088 E_INFO_PASCAL_SIII_088

2. 3.

E_INFO_C_SIII_088 E_INFO_PASCAL_SIII_088

4.

E_INFO_C_SIII_089 E_INFO_PASCAL_SIII_089 E_INFO_C_SIII_089 E_INFO_PASCAL_SIII_089

2. 3.

E_INFO_C_SIII_089 E_INFO_PASCAL_SIII_089

4.

E_INFO_C_SIII_090

2.

E_INFO_PASCAL_SIII_090 E_INFO_C_SIII_090 E_INFO_PASCAL_SIII_090 3.

afiat. 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. 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. Pentru k0 se afieaz k nainte i dup apelul f(k/2) Subprogramul este o funcie cu un parametru ntreg i rezultat ntreg. Programul va apela funcia par pentru x/10000 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. 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 Subprogramul nu furnizeaz nici un rezultat, deci e de tip procedure / void i are doi parametri 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 pt. c1=A, Z

E_INFO_C_SIII_090 E_INFO_PASCAL_SIII_090

4.

E_INFO_C_SIII_091 E_INFO_PASCAL_SIII_091 E_INFO_C_SIII_091 E_INFO_PASCAL_SIII_091 E_INFO_C_SIII_091 E_INFO_PASCAL_SIII_091

2. 3.

4a.

E_INFO_C_SIII_091 E_INFO_PASCAL_SIII_091

4b.

E_INFO_C_SIII_092 E_INFO_PASCAL_SIII_092 E_INFO_C_SIII_092 E_INFO_PASCAL_SIII_092

3a. 3b.

E_INFO_C_SIII_092

4.

E_INFO_PASCAL_SIII_092 E_INFO_C_SIII_093 E_INFO_PASCAL_SIII_093 E_INFO_C_SIII_093 E_INFO_PASCAL_SIII_093 4. 3.

pt c2=A, Z dac c1c2 scrie c1 c2 pentru i impar Ai=(i+1)/2, pentru i par Ai=n-(n-i)/2 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=cmmdc(d,x))pe msur ce citim numere x din fiier. Se folosete algoritmul clasic al lui Euclid citete n; d=0 pt. i=1, n citete x; d=cmmdc(d,x) a) Se parcurge tabloul transmis ca parametru ntre cele dou poziii i se contorizeaz valorile pozitive, negative i nule. 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 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.

E_INFO_C_SIII_093 E_INFO_PASCAL_SIII_093 E_INFO_C_SIII_093 E_INFO_PASCAL_SIII_093 E_INFO_C_SIII_094 E_INFO_PASCAL_SIII_094

4a. 4b.

E_INFO_C_SIII_094 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 E_INFO_PASCAL_SIII_096

E_INFO_C_SIII_096 E_INFO_PASCAL_SIII_096

E_INFO_C_SIII_097 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

2. 3.

Se pot genera toate irurile corecte care ncep cu litera a i se vor afia ultimele trei. 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

4.

sau deschiderea fiierului de 10 ori, cte o dat pentru fiecare cifr.


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 E_INFO_PASCAL_SIII_098 4. 3. 2.

Se pot genera toate submulimile n ordinea impus i se vor afia ultimele trei. Subprogramul poate determina numrul cerut multipicnd valoarea unei variabile cu valoarea lui x, ct timp produsul obinut nu este mai mare dect y. 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. Se pot genera toate irurile care respect condiia impus i se vor afia cel de al treilea i al patrulea. Subprogramul poate determina numrul cerut ca rest la imprtirea la 10nr-1 , unde nr este numrul de cifre al lui k. 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.
Se urmresc apelurile recursive, determinndu-se valoarea afiat. 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. 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_C_SIII_099 E_INFO_PASCAL_SIII_099 E_INFO_C_SIII_099 E_INFO_PASCAL_SIII_099 E_INFO_C_SIII_099 E_INFO_PASCAL_SIII_099 E_INFO_C_SIII_100 E_INFO_PASCAL_SIII_100 E_INFO_C_SIII_100 E_INFO_PASCAL_SIII_100 E_INFO_C_SIII_100 E_INFO_PASCAL_SIII_100

2. 3. 4.

2. 3.

4.

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