You are on page 1of 20

Informatic indicatii de rezolvare Specializarea matematic-informatic Subiectul III subiect E_INFO_C_SIII_001 E_INFO_PASCAL_SIII_001 E_INFO_C_SIII_001 E_INFO_PASCAL_SIII_001

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

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 E_INFO_Pascal_SIII_011

3.

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 E_INFO_Pascal_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. 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. 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. 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) 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. 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. Subprogramul extrage cifrele numrului n i le contorizeaz pe

E_INFO_C_SIII_012 E_INFO_Pascal_SIII_012

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 E_INFO_C_SIII_014 E_INFO_Pascal_SIII_014 E_INFO_C_SIII_014 E_INFO_Pascal_SIII_014

4.

3.

4.

E_INFO_C_SIII_015 E_INFO_Pascal_SIII_015

3.

E_INFO_C_SIII_015 E_INFO_Pascal_SIII_015 E_INFO_C_SIII_016 E_INFO_PASCAL_SIII_016

4.

3.

E_INFO_C_SIII_016

4.

E_INFO_PASCAL_SIII_016

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. 3. 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 E_INFO_PASCAL_SIII_017

E_INFO_C_SIII_017 E_INFO_PASCAL_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. 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. 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 E_INFO_PASCAL_SIII_018

3.

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.

O posibil soluie presupune citirea numerelor din fiier, memorarea succesiv a secvenelor de cte 4 numere aflate pe poziii consecutive i verificare proprietii cerute. 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. 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. 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. 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.

3.

4.

E_INFO_C_SIII_020 E_INFO_PASCAL_SIII_020

3.

E_INFO_C_SIII_020 E_INFO_PASCAL_SIII_020 E_INFO_C_SIII_021 E_INFO_PASCAL_SIII_021 E_INFO_C_SIII_021

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

3.

4a.

E_INFO_PASCAL_SIII_021

pt,. i=k+1,n-k+1 s=s+xi-xi-k dac s>smax smax=s; imax=i scrie imax 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 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_021 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 E_INFO_PASCAL_SIII_022

3a. 3b. 4.

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

3a.

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

3b.

4.

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

3a.

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

4b.

E_INFO_PASCAL_SIII_025 E_INFO_C_SIII_026 E_INFO_PASCAL_SIII_026 E_INFO_C_SIII_026 E_INFO_PASCAL_SIII_026 4. 3.

dou numere ntregi. Simplificarea fraciei obinute se face calculnd cmmdc cu algoritmul lui Euclid. pt. i=k,1,+1 scrie n*i 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. Se ordoneaz cresctor numai elementele impare ale tabloului . 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_C_SIII_027 E_INFO_PASCAL_SIII_027 E_INFO_C_SIII_027 E_INFO_PASCAL_SIII_027

3.

4.

E_INFO_C_SIII_028 E_INFO_PASCAL_SIII_028

3.

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.

E_INFO_C_SIII_031 E_INFO_PASCAL_SIII_031 E_INFO_C_SIII_031 E_INFO_PASCAL_SIII_031

3.

4.

E_INFO_C_SIII_032 E_INFO_PASCAL_SIII_032 E_INFO_C_SIII_032 E_INFO_PASCAL_SIII_032

3.

Se parcurge intervalul determinat de cele dou capete i se afieaz numerele prime din acest interval. 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. O rezolvare posibil const n parcurgerea elementelor tabloului i verificarea condiiei enunate, pentru fiecare component a tabloului. 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. a) Se descompune numrul n cifre i se verific dac fiecare cifr ndeplinete condiia din enun. 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

4.

E_INFO_C_SIII_033 E_INFO_PASCAL_SIII_033 E_INFO_C_SIII_033 E_INFO_PASCAL_SIII_033

3.

4.

E_INFO_C_SIII_034 E_INFO_PASCAL_SIII_034

3.

E_INFO_C_SIII_034 E_INFO_PASCAL_SIII_034 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. 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. 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.

3.

E_INFO_C_SIII_035 E_INFO_PASCAL_SIII_035 E_INFO_C_SIII_036 E_INFO_PASCAL_SIII_036

4.

4.

E_INFO_C_SIII_037 E_INFO_PASCAL_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. a) Se scrie antetul subprogramului, urmrind cerina. 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.

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

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). Se scrie definiia complet a subprogramului, urmrind cerina. O soluie posibil citete cele n elemente din fiierul bac.in i

4.

le reine ntr-un tablou unidimensional. Se sorteaz vectorul utiliznd apeluri ale subprogramului. E_INFO_C_SIII_039 E_INFO_PASCAL_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. 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. 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. 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. 3. 4. Subprogramul verific dac vectorul respect proprietatea cerut. 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 Se ordoneaz vectorul descresctor i se adun primele k elemente pentru a obine rezultatul furnizat de subprogram. 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. 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. 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. O rezolvare posibil citete cele dou valori a i b i apoi parcurge intervalul determinat afind numerele care ndeplinesc cerina din enu. 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. O rezolvare posibil citete cele dou valori a i b i apoi

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

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_042 E_INFO_PASCAL_SIII_042 E_INFO_C_SIII_042 E_INFO_PASCAL_SIII_042

3. 4.

E_INFO_C_SIII_043 E_INFO_PASCAL_SIII_043 E_INFO_C_SIII_043 E_INFO_PASCAL_SIII_043

3.

4.

E_INFO_C_SIII_044 E_INFO_PASCAL_SIII_044 E_INFO_C_SIII_044 E_INFO_PASCAL_SIII_044

3.

4.

E_INFO_C_SIII_045

3.

E_INFO_PASCAL_SIII_045 E_INFO_C_SIII_045 E_INFO_PASCAL_SIII_045 4.

parcurge intervalul determinat ndeplinesc cerina din enu.

afind

numerele

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. 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_046 E_INFO_PASCAL_SIII_046

3.

E_INFO_C_SIII_046 E_INFO_PASCAL_SIII_046

4.

E_INFO_C_SIII_047 E_INFO_PASCAL_SIII_047 E_INFO_C_SIII_047 E_INFO_PASCAL_SIII_047

3. 4.

Se citete de la tastatur k, din fiier n. Pentru fiecare numr, nr, citit din fiier, se verific dac este putere a lui 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, 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 E_INFO_PASCAL_SIII_048

3.

a) Parametri se transmit prin valoare. Rezultatul este ntreg. 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_C_SIII_048 E_INFO_PASCAL_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. Se citesc numerele de la tastatur i se memoreaz ntr-un vector care se ordoneaz cresctor. Se verific apoi proprietatea din enu. 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_049 E_INFO_PASCAL_SIII_049 E_INFO_C_SIII_049 E_INFO_PASCAL_SIII_049

3.

4.

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

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. Pentru perechi de elemente consecutive se verifica daca cmmdc este 1. 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 Se numara cate triplete satisfac conditia: v[i]=v[i-1]+v[i+1]

3a

3b

E_INFO_C_SIII_052 E_INFO_PASCAL_SIII_052 E_INFO_C_SIII_053 E_INFO_PASCAL_SIII_053 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_055 E_INFO_PASCAL_SIII_055

3b 4

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 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. 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) 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). 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. Se citesc numerele din fiier, pn la sfritul acestuia. Se

E_INFO_C_SIII_055 E_INFO_PASCAL_SIII_055 E_INFO_C_SIII_056 E_INFO_PASCAL_SIII_056

3.

E_INFO_C_SIII_056 E_INFO_PASCAL_SIII_056

4b

E_INFO_C_SIII_057 E_INFO_PASCAL_SIII_057

3.

E_INFO_C_SIII_057 E_INFO_PASCAL_SIII_057 E_INFO_C_SIII_058

4b

3.

E_INFO_PASCAL_SIII_058

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. 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). Se scrie o funcie care returneaz partea ntreag a radicalului parametrului. Se apeleaz funcia avnd ca parametru valoarea n i se verific dac ptratul valorii returnate este egal cu n. 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

E_INFO_C_SIII_059 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

4a 4b 3

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

E_INFO_C_SIII_064 E_INFO_PASCAL_SIII_064

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

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 E_INFO_PASCAL_SIII_066 E_INFO_C_SIII_066 E_INFO_PASCAL_SIII_066

3.

4.

E_INFO_C_SIII_067 E_INFO_PASCAL_SIII_067 E_INFO_C_SIII_067 E_INFO_PASCAL_SIII_067

3.

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

2. 3.

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

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

E_INFO_C_SIII_074 E_INFO_PASCAL_SIII_074 E_INFO_C_SIII_074 E_INFO_PASCAL_SIII_074

2. 3a.

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. Se afieaz mesajul Da dac Cifra(n) returneaz o valoare mai mic sau cel mult egal cu 4. Se citete succesiv cte o valoare din fiier ntr-o variabil x i se verific dac Cifra(x)=c. 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. 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_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

3b 3c. 2. 3.

E_INFO_C_SIII_075 E_INFO_PASCAL_SIII_075

4.

fiind necesare doar trei variabile. 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 4. 3. 2. 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 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 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_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

2. 3. 4.

2. 3.

E_INFO_C_SIII_078 E_INFO_PASCAL_SIII_078

4.

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.

a)Se definete subprogramul ordonat. 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.

E_INFO_C_SIII_081 E_INFO_PASCAL_SIII_081 E_INFO_C_SIII_081 E_INFO_PASCAL_SIII_081

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

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.

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

2. 3.

4. 2. 3.

4.

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

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

E_INFO_C_SIII_086 E_INFO_PASCAL_SIII_086

4.

E_INFO_C_SIII_087 E_INFO_PASCAL_SIII_087 E_INFO_C_SIII_087 E_INFO_PASCAL_SIII_087

2. 3.

E_INFO_C_SIII_087 E_INFO_PASCAL_SIII_087

4.

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.

tabloul pentru determinarea valorii maxime, i se caut numrul a care satisface condiiile din enun. E_INFO_C_SIII_089 E_INFO_PASCAL_SIII_089 E_INFO_C_SIII_089 E_INFO_PASCAL_SIII_089 3. 2. 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 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. Se urmresc apelurile recursive, determinndu-se valoarea 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. Se urmresc apelurile recursive, determinndu-se valoarea afiat. 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_C_SIII_089 E_INFO_PASCAL_SIII_089

4.

E_INFO_C_SIII_090 E_INFO_PASCAL_SIII_090 E_INFO_C_SIII_090 E_INFO_PASCAL_SIII_090

2. 3.

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

2. 3.

i va testa valoarea apelului par(x/10) E_INFO_C_SIII_091 E_INFO_PASCAL_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. 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 pentru c1=A, Z pentru c2=A,Z dac c1c2 scrie c1c2 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=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. 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_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 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. 4.

E_INFO_C_SIII_094 E_INFO_PASCAL_SIII_094

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

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. 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 sau deschiderea fiierului de 10 ori, cte o dat pentru fiecare cifr. 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_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.

4.

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

2. 3.

4.

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.

You might also like