Probleme V-VIII

 

pentru clasele V-VIII

I.             Instrucţiuni de introducere, afişare şi calcul

 

  • Să se afişeze triunghiul *                                                                                                                                                                  **                                                                                                                                                               ***                                                                                                                                                             Să se introducă un caracter de la tastatură şi să se afişeze un triunghi asemănător folosind caracterul introdus.
  • Se dă un număr natural n. Afişaţi un triunghi de forma n                                                                                                                                                                n+2      n+2                                                                                                                                                n+4      n+4      n+4                                                                                                                                    n+6      n+6      n+6      n+6        (CNI-etapa judeţeană, Petroşani, 2005)
  • Într-o tabără numărul de băieţi este cu 10 mai mare decât cel al fetelor. Dacă se citeşte de la tastatură numărul de fete, să se spună câţi elevi sunt în tabără. Exemplu: date de intrare: 50 date de ieşire: 110.
  • Într-un autobuz care pleacă în excursie sunt 7 copii. De la încă două şcoli urcă alţi copii, numărul acestora citindu-se de la tastatura. Câţi copii au plecat în excursie? Exemplu: Date de intrare: 15 20  Date de ieşire: 42 copii.
  • Un brăduţ este împodobit cu globuleţe albe, roşii şi albastre. Numărul globuleţelor albe se citeşte de la tastatură. Câte globuleţe are brăduţul, ştiind că numărul de globuleţe roşii este cu 3 mai mare decât numărul de globuleţe albe, iar globuleţele albastre sunt cu 2 mai puţine decât totalul celor albe şi roşii. Exemplu: Date de intrare: 12 Date de ieşire: 52.
  • Ion şi Vasile joacă următorul joc: Ion spune un număr iar Vasile trebuie să găsească cinci numere consecutive, crescătoare, numărul din mijloc fiind cel ales de Ion. Exemplu : Ion spune 10, Vasile spune 8 9 10 11 12. Ajutaţi-l pe Vasile să găsească răspunsul mai repede.
  • Doi copii au primit acelaşi număr de mere Introducând de la tastatură numărul de mere primte, afişaţi câte mere are fiecare copil după ce primul copil mănâncă un măr şi dă unul celuilalt copil. Exemplu : Date de intrare : 10 Date de ieşire : primul copil  8 mere   al doilea copil 11 mere.
  • Maria vrea să verifice dacă greutatea şi înălţimea ei corespund vârstei pe care o are. Ea a găsit într-o carte următoarele formule de calcul ale greutăţii şi înălţimii unui copil, v fiind vârsta : greutate=2*v+8 (în kg), înălţime=5*v+80 (în cm). Realizaţi un program care să citească vârsta unui copil şi să afişeze greutatea şi înălţimea ideală, folosind aceste formule.
  • Se introduc de la tastatură trei cifre. Afişaţi pe aceeaşi linie 5 numere formate cu aceste cifre luate o singură dată. Exemplu : date de intrare : 3 4 2 Date de ieşire : 324  342   243  234
  • Date trei numere, să se calculeze toate sumele posibile de câte două numere. Afişarea să cuprindă şi termenii sumei, nu numai valoarea ei. Exemplu: Date de intrare : 2 13 4  Date de ieşire: 2+13 =15  2+4=6  13+4=17.
  • Afişaţi tabla înmulţirii cu numărul n. Exemplu: pentru n=5, se va afişa pe verticală 1×5=5 2×5=10 3×5=15 4×5=20 5×5=25 6×5=30 7×5=35 8×5=40 9×5=45 10×5=50.
  • Se introduc lungimea şi lăţimea unui dreptunghi. Să se afişeze cuvântul PERIMETRU urmat de valoarea perimetrului acelui dreptunghi.
  • Dan are de făcut mai multe exerciţii de transformare în centimetri a unei mărimi date în metri. Realizaţi un program care să citescă valoarea în metri şi să o afişeze în centimetri. Exemplu: date de intrare: 72 date de ieşire: 7200 cm.
  • Să se scrie un program care citeşte un număr de ani şi calculează numărul de luni, zile şi ore corespunzătoare. Se consideră că un an are 365 zile. Exemplu: date de intrare: 2 date de ieşire: 24 luni 730 zile  17520 ore.
  • Măriuca ţine evidenţa iepurilor din crescătorie. Ea îşi notează câţi iepuri sunt la începutul fiecărei luni, câţi au murit şi câţi s-au născut în cursul fiecăei luni. Puteţi să realizaţi un program care, primind aceste date, să afişeze la sfârşitul fiecărei luni câţi iepuri sunt  în crescătorie? Exemplu : Date de intrare : nr. Iepuri la început de luna 10 iepuri morti 2  nr. iepuri nascuti 6  Date de ieşire : 14 iepuri.
  • Într-o gospodărie sunt 4 găini. Introduceţi în calculator prin variabilele a, b, c, d numărul de ouă pe care-l dă fiecare găină într-o zi. Afişaţi câte ouă se obţin într-o săptămână.
  • Se introduc în calculator două date în variabilele a şi b. Să se facă un program care să schimbe între ele valorile acestor variabile şi să afişeze noile valori ale lui a şi b.
  • O navă parcurge distanţa d ( în km ) dintre două staţii orbitale în a săptămâni şi b zile. Să se determine viteza navei exprimată în km/oră.

II.                Instrucţiunea de decizie ; algoritmi cu ramificaţii

 

Comparări între valorile a două variabile

 

  • Date două numere, afişaţi-l pe cel mai mic. Exemplu : Date de intrare : 44 32  Date de ieşire : 32.
  • Se introduc vârstele a doi copii. Afişaţi care copil este mai mare şi diferenţa de vârstă dintre cei doi. Exemplu : Date de intrare : 6 13  date de ieşire : al doilea copil este mai mare  cu  7 ani.
  • Se introduc punctajele a doi sportivi. Afişaţi-le în ordine descrescătoare. Exemplu: Date de intrare 100  134   Date de ieşire: 134 puncte   100 puncte
  • Dintr-o cutie cu trei numere se extrag două numere. Cunoscând suma celor două numere extrase, să se afişeze numărul rămas în cutie. Exemplu : date de intrare : numere existente in cutie 5 12 8 suma numerelor extrase  13  date de ieşire : 12.
  • Se dau două numere. Să se înmulţească cel mai mare cu doi şi cel mai mic cu trei şi să se afişeze rezultatele. Exemplu : date de intrare : 3 7  date de ieşire : 9  14
  • Se introduc două numere întregi. Să se testeze dacă primul număr este predecesorul (succesorul) celui de-al doilea şi să se afişeze un mesaj corespunzător. Exemple : date de intrare : 2 4  date de ieşire : Nu ; date de intrare : 5    6   date de ieşire : Da.

 

Compararea valorii unei variabile cu o constantă

 

1)    Se introduc două numere nenule şi un semn de operaţie (+,-,*,/). Să se efectueze cu cele două numere operaţia introdusă şi să se afişeze expresia care s-a calculat urmată de semnul = şi de valoarea ei. Exemplu : Date de intrare  10  6  *  Date de ieşire  10*6=60.

  • Se introduc trei date de forma număr ordine pacient, valoare glicemie. Afişaţi numărul de ordine al pacienţilor cu glicemia mai mare decât 100. Exemplu : Date de intrare nr  6  glicemie 90  nr  10  glicemie 107  nr  21 glicemie  110   Date de ieşire  10   21
  • Ionel spune părinţilor doar notele mai mari sau egale cu 7. Într-o zi el a luat trei note. Introduceţi-le în calculator şi afişaţi acele note pe care le va comunica şi părinţilor. Exemplu : Date de intrare 8  7  5  Date de ieşire  8
  • Se introduc două numere. Dacă al doilea număr este diferit de 0, să se afişeze câtul dintre primul şi al doilea, iar dacă este nul, să se afişeze mesajul “Împărţire imposibilă”. Exemple : Date de intrare 10 3  Date de ieşire  33   Date de intrare  45  0  date de ieşire  Impartire imposibila.
  • Un lift pentru copii acceptă o greutate de maxim 100 kg. Introducând în calculator greutăţile a doi copii, specificaţi prin afişarea unui mesaj corespunzător, dacă POT INTRA AMBII COPII sau INTRA PE RAND. Exemple : Date de intrare : greutati copii 87  50  Date de ieşire : Intra pe rand  Date de intrare 45  52  Date de ieşire Pot intra ambii copii.
  • Ionel are voie să se uite la TV 20 de ore pe săptămână. Se introduc numărul de ore cât se uită la TV în fiecare zi din săptămână. Să se verifice dacă va fi pedepsit sau nu. Exemplu: Date de intrare: 3 4 2 2 5 6 1 Date de ieşire: Va fi pedepsit.
  • Să se scrie un program care determină greutatea ideală a unei persoane cunoscând înălţimea, vârsta şi sexul persoanei. Formulele de calcul sunt: Gmasculin = 50 + 0.75 * (inaltime – 150) + (varsta – 20) / 4, Gfeminin = Gmasculin – 10, unde înălţimea este exprimată în cm şi vârsta în ani. Sexul se citeşte sub forma unui caracter, f sau m. Exemplu: Date de  intrare: inaltime= 160 varsta=21 sex=f   Date de ieşire: greutate=  75 kg.
  • Scrieţi un program care să permită alegerea unei opţiuni dintr-un anumit meniu afişat pe ecran: se afişează meniul
  1. suma
  2. produs

se introduc două numere şi se alege o operaţie din meniu prin introducerea numărului de ordine. Pe ecran să apară expresia şi valoarea calculată.

 

Testarea câtului sau a restului împărţirii întregi

 

  • Se dau trei numere. Să se afişeze aceste numere unul sub altul, afişând în dreptul fiecăruia unul dintre cuvintele PAR sau IMPAR. Exemplu : Date de intrare : 45 3  24  Date de ieşire : 45 impar  3  impar  24
  • Se dau două numere nenule. Să se verifice dacă primul se împarte exact la al doilea. Exemplu : Date de intrare : 45 7  Date de ieşire : Nu.
  • Se dau două numere. Să se afişeze acele numere care se împart exact la 7. Exemplu : Date de intrare : 34  28  Date de ieşire : 28.
  • “Mă iubeşte un pic, mult, cu pasiune, la nebunie, de loc, un pic,…”. Rupând petalele unei margarete cu x petale, el (ea) mă iubeşte …. Exemplu: Date de intrare: x=10 Date de ieşire: … de loc.
  • Elevii clasei a V-a se repartizează în clase câte 25 în ordinea mediilor clasei a IV-a. Radu este pe locul x în ordinea mediilor. În ce clasa va fi repartizat (A, B, C, D sau E)?. Exemplu : date de intrare : x=73 date de ieşire : C.
  • În Galaxia Reckya toate ceasurile au doar 4 ore. Ştiind că Gygely s-a născut la ora 1 şi că va trăi m ore, să se spună la ce oră va muri Gygely. (m<=50). Se dă numărul m. Se cere ora la care va muri Gygely.

5)    La un concurs se dau ca premii primilor 100 de concurenţi, tricouri de culoare albă, roşie, albastră şi neagră, în această secvenţă. Ionel este pe locul x. Ce culoare va avea tricoul pe care-l va primi? Exemplu : date de intrare : x=38 date de ieşire : rosie.

6)    Într-o tabără, băieţii sunt cazaţi câte 4 într-o căsuţă, în ordinea sosirii. Ionel a sosit al n-lea. În a câta căsuţă se va afla? Exemplu : date de intrare : n=69 date de ieşire : casuta 17.

Ceasul arată astfel        1

4          2

3

Exemplu: Date de intrare:  m=10  Date de ieşire: 3. (www.contaminare.ro)                                                                 

Operatori logici

 

  • Se dau trei numere diferite. Să se afişeze cel mai mare şi cel mai mic. Exemplu : Date de intrare 45 34 78 Date de ieşire   max=78  min=34.
  • Se dau trei numere diferite. Afisaţi-le în ordine crescătoare. Exemplu : Date de intrare 4  2  6  Date de ieţire  2  4
  • Se dau trei numere diferite. Afişaţi numărul a cărei valoare este cuprinsă între valorile celorlalte două. Exemplu : Date de intrare 12  14  10  Date de ieşire
  • Se introduc trei date de forma număr curent elev, punctaj. Afişaţi numărul elevului cu cel mai mare punctaj. Exemplu : Date de intrare nr crt  7  punctaj 120  nr crt  3  punctaj 100 nr crt 4 punctaj 119  Date de ieşire  punctaj maxim are elevul cu nr crt 7.
  • Se introduc trei numere. Să se verifice dacă formează o secvenţă de numere consecutive. Exemple: Date de intrare 3  4  5  Date de ieşire  Da    Date de intrare  4  5  7  Date de ieşire
  • La ora de matematică Gigel este scos la tablă. Profesoara îi dictează trei numere şi îi cere să verifice dacă cele trei numere pot fi laturile unui triunghi. Ajutaţi-l pe Gigel să afle rezultatul. Scrieţi un program care primeşte numerele lui Gigel, care sunt mai mici ca 32000, şi returnează DA sau NU. Observaţie: Trei numere pot fi laturile unui triunghi numai dacă fiecare este mai mic ca suma celorlalte două. Exemple: Date de intrare  3 5 7  Date de ieşire  Da  Date de intrare  2 5 9  Date de ieşire Nu.
  • Să se verifice dacă o literă introdusă este vocală sau consoană. Exemplu : Date de intrare a  Date de ieşire
  • Se introduc vârstele a 3 persoane. Afişaţi vârstele cuprinse între 18 şi 60 de ani. Exemplu : Date de intrare 56  34  12  Date de ieşire  56
  • Date două numere, afişaţi acele numere care se împart exact la 7 şi la 11. Exemplu : Date de intrare 154  213  Date de ieşire
  • Se dau două numere. Să se verifice dacă numărul mai mare se împarte exact la cel mai mic. Exemplu : Date de intrare 10 250  Date de ieşre  250 se imparte exact la 10.
  • Cunoscând data curentă exprimată prin trei numere întregi reprezentând anul, luna, ziua precum şi data naşterii unei persoane, exprimată la fel, să se facă un program care să calculeze vârsta persoanei respective în număr de ani împliniţi. Exemplu : Date de intrare data curenta 2005 10  25  data nasterii 1960  11  2  Date de ieşre 44 ani.

 

Probleme  diverse

 

  • Andrei primeşte într-o zi trei note, nu toate bune. Se hotărăşte ca, dacă ultima notă este cel puţin 8, să le spună părinţilor toate notele primite iar dacă este mai mică decât 8, să le comunice doar cea mai mare notă dintre primele două. Introduceţi notele luate şi afişaţi notele pe care le va comunica părinţilor. Exemple : Date de intrare 6 9  9  Date de ieşire 6  9  9 ;  Date de intrare  8  5  7  Date de ieşire
  • Se consideră trei numere întregi. Dacă toate sunt pozitive, să se afişeze numărul mai mare dintre al doilea şi al treilea număr, în caz contrar să se calculeze suma primelor două numere. Exemple: Date de intrare   45  23  100  date de ieşire 100 ;  Date de intrare  34  -25  10  Date de ieşire
  • Să se afişeze cel mai mare număr par dintre doua numere introduse în calculator. Exemple : Date de intrare 23 45   Date de ieşire  nu exista numar par ; Date de intrare  28 14  Date de ieşire 28 ;  Date de intrare  77 4  Date de ieşire
  • Pe o masă de biliard sunt bile albe, roşii şi verzi. Din fiecare culoare sunt bile de două dimensiuni: mari şi mici. Să se afişeze câte bile sunt în total pe masa de biliard. Un jucător vrea să-i spuneţi care bile sunt mai multe , cele mici sau cele mari, afişând numărul lor. De ce culoare sunt bilele cele mai numeroase? Precizaţi numărul lor. Exemplu: Date de intrare bile albe mici: 2 Nr. bile albe mari: 3 Nr. bile rosii mici: 1 Nr. bile rosii mari: 4 Nr. bile verzi mici: 3 Nr. bile verzi mari: 4  Date de ieşire Totalul bilelor: 17   Mari: 11 bile    Verzi: 7 bile

(www.contaminare.ro).

  • La ferma de găini Copanul este democraţie. Fiecare găină primeşte exact acelaşi număr de boabe de porumb. Cele care nu pot fi împărţite vor fi primite de curcanul Clapon. Să se spună cine a primit mai multe boabe şi cu cât. În caz de egalitate, se va afişa numărul de boabe primite şi cuvântul „egalitate”. Datele se vor citi în următoarea ordine: numărul de găini, iar dupa aceea numărul de boabe de porumb. Exemplu: Date de intrare 100 4050  Date de ieşire: Curcanul mai mult cu 10 boabe.                               (www.contaminare.ro).

III.         Instrucţiuni de ciclare , algoritmi ciclici

 

Utilizarea instrucţiunilor de ciclare pentru generare de numere

 

 

  • Să se afişeze toate numerele de forma a23a care se împart exact la 6.
  • Un lift coboară de la etajul a la etajul b. Afişaţi toate etajele pe care le parcurge. Exemplu : Date de intrare 8 3  Date de ieşire  8  7  6  5  4
  • Să se afişeze tabla înmulţirii cu n. Exemplu : Date de intrare n=5  date de ieşire  1×5=5  2×5=10 3×5=15 4×5=20 5×5=25 6×5=30 7×5=35 8×5=40 9×5=45 10×5=50.
  • Să se afişeze perechile de numere a şi b care satisfac relaţiile a+b=1000; 17 divide pe a şi 19 divide pe b.
  • Să se genereze primii n termeni ai şirului 1,1,2,2,2,3,3,3,3,4,4,4,4,4,….
  • Să se afişeze primii n termeni ai şirului lui Fibonacci : 0,1,1,2,3,5,8,13,21….
  • Se dă un număr. Să se scrie, dacă se poate, ca sumă de două numere impare. Exemple : date de intrare 24  Date de ieşire  24=1+23  24=3+21  24=5+19  24=7+17  24=9+15  24=11+13 ; Date de intrare 33 Date  de ieşire  Nu se poate.
  • Se dă un număr. Să se scrie, dacă este posibil, ca sumă de două numere consecutive. Exemple : Date de intrare 5 Date de ieşire 5=2+3 ; Date de intrare   6  Date de ieşire  Nu se poate.
  • Dându-se un număr natural n, să se găsească toate posibilităţile de scriere a acestui număr ca sumă de numere consecutive. Exemplu : Date de intrare 15 Date de ieşire  15=1+2+3+4+5  15=4+5+6  15=7+8.
  • Să se afişeze toţi divizorii unui număr natural dat. Exemplu : Date de intrare 12 Date de ieşire  1  2  3  4  6
  • Se introduce un număr. Să se verifice dacă este număr prim. Exemple: Date de intrare 23 date de ieşire Prim ; Date de intrare  45  Date de ieşire  Nu este prim.
  • Să se afişeze primele n numere prime. Exemplu: Date de intrare n=6 Date de ieşire 2  3  5  7  11

 

Stabilirea limitelor buclei for utilizând regula celor trei pahare

 

  • Un lift parcurge distanţa dintre două etaje a şi b. Să se afişeze toate etajele parcurse, în ordinea atingerii lor. Exemple : Date de intrare a=4  b=7  Date de ieşire  4  5  6  7 ; Date de intrare  a=10  b= 8 Date de ieşire  10  9
  • Se dau numerele a, b şi c. Să se scrie un program care să afişeze în ordine crescătoare toate numerele care se divid cu a sau b şi sunt mai mici decât c.

Indicaţie: Se stabileşte cu regula celor trei pahare ca în b să fie numărul mai mare şi în a cel mai mic şi bucla se ia de la b la c.

  • Să se calculeze suma numerelor naturale cuprinse între două numere date ( dintr-un interval). Exemplu: Date de intrare: capetele intervalului 3  6  Date de ieşire  suma=9.

 

Mai multe bucle for incluse una în alta (imbricate)

 

  • Să se determine toate tripletele de numere a, b, c cu proprietăţile: 1<a<b<c<100; a+b+c se divide cu 10.
  • Să se afişeze toate numerele de două cifre care adunate cu răsturnatul lor dau 55.
  • Se cere listarea numerelor cuprinse între 100 şi 599, având cifrele în ordine crescătoare şi suma cifrelor egală cu 18.
  • Să se înlocuiască literele cu cifre în scăderea următoare: a b c b e-

e d a b

––––

e b c e

 

Calcule de sume şi produse

 

  • Să se calculeze 7+14+21+28+…+98,  3*6*9*12*…*33
  • Să se calculeze sumele s1=1+2+3+…+n

s2=1*2+2*3+3*4+…+(n-1)*n

s3=1+1*2+1*2*3+…+1*2*3*…*n

s4=12+22+32+…+n2

s5=1/2+2/3+3/4+…+n/(n+1)

s6=2-3+4-5+…-99+100

s7=1+2+22+23+24+…+2n

  • Se introduc succesiv numere nenule până la introducerea numărului 0. Să se afişeze suma tuturor numerelor introduse. Exemplu: Date de intrare 3  5  4  2  0  Date de ieşire 14.
  • Se citesc numere de la tastatură până la introducerea unui număr impar divizibil cu 3. Să se afişeze suma tuturor numerelor pare introduse. Exemplu: Date de intrare  7  4   6   2   1   9   Date de ieşire 12.

 

Utilizarea instrucţiunilor de ciclare pentru repetarea unor acţiuni

 

  • Se dau numerele a şi n. Să se afişeze numărul a urmat de n zerouri. Exemplu : Date de intrare a=34  n=5  Date de ieşire
  • Se dau un număr n şi un număr prim k. Să se specifice la ce putere apare k în descompunerea în factori primi a numărului n. Exemplu : Date de intrare n=12  k=2  Date de ieşire
  • Să se afişeze descompunerea unui număr dat în factori primi. Exemplu : Date de intrare 12  Date de ieşire  12 = 2^2   3^1.
  • Un copac creşte zilnic cu 75 cm. La plantare avea 1 m. Să se afişeze după câte zile ajunge la înălţimea de 12 m. La ce înălţime ajunge după o lună (30 zile)?
  • Pentru a o elibera pe Ileana Cosânzeana, Făt-Frumos trebuie să parcurgă x km. El merge zilnic a km, dar Zâna-cea-Rea îl duce în fiecare noapte cu b km înapoi, b<a. După câte zile o eliberează? Exemplu: Date de intrare x=10  a=4   b=1  Date de ieşire  3 zile.
  • A fost odată un balaur cu 6 capete. Într-o zi Făt Frumos s-a supărat şi i-a tăiat un cap. Peste noapte i-au crescut alte 6 capete la loc. A doua zi Făt Frumos iar i-a tăiat un cap dar peste noapte balaurului i-au crescut alte 6 capete … şi tot aşa timp de n zile. În cea de a (n+1)-a zi, Făt Frumos s-a plictisit şi a plecat acasă! Scrieţi un program care citeşte de la tastatură n, numărul de zile, şi care afişează pe ecran câte capete avea balaurul după n zile. Exemplu: pentru n=3 se va afişa 15 capete. (ONI 2002 cl.a V-a)
  • A fost odată ca niciodată, a fost un cangur care creştea într-un an precum alţii în zece. Într-o zi a început să facă sărituri. Şi a sărit pentru început 7 metri. A doua zi a sărit, în plus faţă de ziua precedentă, de zece ori mai mult. În a treia zi a reuşit să sară, în plus faţă de prima zi, de zece ori mai mult decât în ziua a doua.  În a patra zi a sărit, în plus faţă de prima zi, de zece ori mai mult decât în ziua a treia.  Şi tot aşa mai departe. Scrieţi un program care calculează câţi metri  a sărit cangurul, în  total, în n zile. Exemplu: pentru n=3 se va afişa 861 m.                                                                                               (ONI Focşani 2003 cl.a V-a)
  • Se citesc de la tastatură numere naturale până când suma numerelor pare este mai mare decât k. Căte numere au fost introduse şi care este suma numerelor pare? Exemplu: Date de intrare: K=12 5  8  1  2  2  3  6     Date de ieşire: 7 (numere)  18 (suma celor pare)                    ( P.N.C. Bucureşti, Cupa Mărţişor  2005)

 

Algoritmi de însumare, contorizare, determinare a min şi max

 

  • Se citesc pe rând 4 numere întregi. Să se numere câte dintre ele au restul 7 la împărţirea cu 13. Să se afişeze aceste numere şi produsul celorlalte numere. Exemplu: Date de intrare 20  15  30  46  Date de ieşire  Numere: 20  46  Total: 2  Produs: 450.
  • Se citesc pe rând temperaturile medii ale fiecărei luni a unui an, ca numere întregi. Să se afişeze cu două zecimale media anuală a temperaturilor pozitive şi a celor negative. Exemplu: Date de intrare -5  -3  1  8  12  17  20  21  18  10  6  -2  Date de ieşire  medie_poz=13.66  medie_neg=-3.33.
  • Se citesc numere naturale strict pozitive până la întâlnirea numărului 0. Să se numere câte dintre ele sunt pare, presupunând că cel puţin primul element este nenul. Exemplu: Date de intrare 4 3 6 5 7 7 0  Date de ieşire 2 numere pare.
  • Se introduc datele de naştere a n copii, sub forma an, număr lună, zi. Să se afişeze câţi copii sunt născuţi pe 1 iunie şi câţi copii sunt născuţi în 1994, 1995 şi 1996. Exemplu: Date de intrare n=3   an=1994 luna=12 zi=3   an=1990 luna=6 zi=1   an=1995 luna=6 zi=1  Date de ieşire  2 copii născuţi la 1 iunie  2 copii născuţi în 1994 1995 1996.
  • Se citesc de la tastatură numere întregi pozitive atâta timp cât suma lor nu depăşeşte 1000. Să se scrie un program care să afişeze cea mai mică şi cea mai mare valoare a acestor numere. Exemplu: 550  345  100 45  Date de ieşire  max=550  min=100.
  • Se citesc mediile a n elevi, ca numere reale. Să se afişeze cea mai mare şi cea mai mică medie. Să se verifice dacă sunt corigenţi. Exemplu : Date de intrare n=4  50  4.25  9.66   6.33  Date de ieşire max=9.66 min=4.25   1 corigent.

 

Algoritmul de împărţire în cifre a unui număr

 

  • Se dau trei numere a,b,c, de câte două cifre, nenule, fiecare. Folosind cifrele unităţilor celor trei numere se va genera un număr x de trei cifre, iar cu cifrele zecilor se va genera un număr y de trei cifre. Să se afişeze x şi y. Exemplu : date de intrare a=24  b=13  c=64  date de ieşire x=434 y=216.
  • Se introduce un număr natural cu maxim 9 cifre. Să se determine şi să se afişeze numărul de cifre, cea mai mare cifră şi suma tuturor cifrelor acestui număr. Exemplu: Date de intrare 24356103 Date de ieşire 8 cifre  max=6  min=0 suma=24.
  • Câte cifre pare sunt într-un număr dat? Exemplu : Date de intrare 34425346 Date de ieşire 4 cifre.
  • Să se verifice dacă la scrierea unui număr, introdus de la tastatură, cifrele pare şi impare alternează. Exemplu : date de intrare 347092 date de ieşire da.
  • În câte zerouri se termină un număr de maxim 9 cifre, introdus de la tastatură? Exemplu : Date de intrare 20034000 Date de ieşire 3 zerouri.
  • Se introduce un număr. Să se verifice dacă este palindrom. Exemple : Date de intrare 12321 Date de ieşire Da ; Date de intrare 23034 Date de ieşire Nu.
  • Să se afişeze toate numerele palindroame mai mari decât 10 şi mai mici decât un număr dat, n. Exemplu : Date de intrare n=110  date de ieşire  11 22 33 44 55 66 77 88 99 101.
  • Se introduce un număr natural n cu maxim 8 cifre, nenule şi distincte, mai mici ca 9. Să se afişeze cifrele numărului în ordine descrescătoare. Indicaţie: fiecare cifră c se înmulţeşte cu 10c, se adună aceste numere şi se afişează fără Exemplu: pentru n=354, s-ar face următoarele calcule: 4*104+5*105+3*103=54300 şi se va afişa 543 .
  • Dat un număr întreg de maxim 9 cifre, să se afişeze numărul de apariţii al fiecărei cifre. Exemplu : Date de intrare 364901211 Date de ieşire 0 apare de 1 ori  1 apare de 3 ori   2 apare de 1 ori   3 apare de 1 ori   4 apare de 1 ori   5 apare de 0 ori   6 apare de 1 ori   7 apare de 0 ori   8 apare de  0 ori   9 apare de 1 ori.
  • Afişaţi câte cifre distincte conţine un număr nenul. Exemplu : date de intrare 234323 Date de ieşire 3 cifre.
  • Se dau două numere naturale a,b cu maxim 9 cifre. a) Să se determine cifrele distincte comune numerelor a şi b. b) Să se afişeze numărul cel mai mare format din toate cifrele lui a şi b

Exemplu : pentru a=2115  b=29025 se va afişa a) 2   5  b) 955222110 (OJI, clasa a V-a,  2004)

  • Se introduc două numere, a şi b, a<b<5000000. Să se afişeze ultima cifră a sumei tuturor numerelor aflate între a şi b. Exemple: Date de intrare a=12 b=14 date de ieşire 9 ; date de intrare           a=1000000  b=3000000  date de ieşire 0.
  • Se dau două numere având acelaşi număr de cifre. Câte cifre trebuie modificate pentru a transforma un număr în celălalt ? Exemplu : pentru n1= 2135 şi n2= 7139 este necesară modificarea a două cifre.

 

Algoritmul lui Euclid

 

  • Se dau două numere nenule. Să se afişeze cmmdc şi cmmmc al lor. Exemplu : Date de intrare 12 32  Date de ieşire  cmmdc=4  cmmmc 96.
  • Se dau numitorul şi numărătorul unei fracţii. Să se simplifice, dacă se poate, şi să se afişeze fracţia simplificată. Exemplu : Date de intrare 12 32  Date de ieşire  3/8.
  • Se dau trei numere. Determinaţi şi afişaţi cmmmdc al lor. Exemplu : Date de intrare 12 32  38  Date de ieşire 2.
  • Se dă numărul n, să se afişeze toate numerele mai mici ca el prime cu el. Exemplu : date de intrare n=10 date de ieşire  1 3 7 9.
  • Într-o tabără participă b băieţi şi f Se organizează un joc la care trebuie să participe un număr cât mai mare de echipe, formate din acelaşi număr nrb de băieţi şi nrf de fete. Trebuie să scrieţi un program care determină numărul maxim de echipe care se pot forma şi numărul nrb de băieţi şi, respectiv numărul nrf de fete, care intră în componenţe fiecărei echipe. Dacă nu se pot forma cel puţin două echipe identice, afişaţi Nu ne putem juca. Exemple: pentru b=10  f=15  se va afişa:  5 echipe  cu  2 baieti  3 fete, pentru b=12  f=25 se va afişa Nu ne putem juca.
  • Se citesc de la tastatură patru numere întregi diferite de zero. Numerele reprezintă în ordinea citirii: numărătorul şi numitorul primei fracţii, respectiv numărătorul şi numitorul celei de a doua fracţii. Să se adune cele doua fracţii şi să se afişeze numărătorul şi numitorul sumei. Exemplu: Date de intrare: 6 18  12  24 Date de ieşire:  5

Probleme diverse

 

  • Să se afişeze toate numerele până la 100 care au patru divizori.
  • Dintre numerele mai mici ca 1000, care au cei mai mulţi divizori ?
  • Se dau n numere. În câte zerouri se va termina produsul lor? Exemplu : date de intrare n=4 5  4 10  25 date de ieşire 3 zerouri.
  • Se dă un număr natural n, n<=100 şi o cifră k din mulţimea {2,3,5,7}. Se cere să se afişeze exponentul lui k în descompunerea în factori primi a produsului 1*2*3*…*n. Exemplu: date de intrare n=8 k=2  date de ieşire 7. (ONI 2003 clasa a V-a)
  • Se introduc temperaturile medii măsurate în fiecare lună a unui an. Să se afişeze valoarea celei mai mari temperaturi negative şi a celei mai mici temperaturi pozitive a acelui an.   Exemplu: date de intrare -4   -6   0   5   10   20   24   25   17   8    -1   -7   date de ieşire   max negative=-1 min pozitive=5.
  • Se citeşte un număr natural n cu cel mult 9 cifre şi se cere să se afişeze o piramidă formată din cifrele lui astfel: pe prima linie cifra (sau cifrele) din mijloc, pe a doua cele 3 (sau 4 ) cifre din mijloc, etc. pe ultima să fie scris numărul dat. Exemplu: n=237855    se va afişa 7 8                                                                                                                                                        3 7 8  5                                                                                                                                                   2  3  7  8  5  5
  • Dată valoarea unui număr natural, se cere să se tipărească în scriere romană.
  • Se citesc pe rând caracter cu caracter elementele unei expresii matematice, caracterele citite pot fi doar cifre şi +, -, * ,/ şi =, până la întâlnirea semnului =. Operaţiile se fac în ordinea introducerii lor, fără a se ţine seama de prioritate. Calculatorul să afişeze rezultatul expresiei.
  • O broscuţă se deplasează efectuând câte o săritură de lungime p cm la fiecare secundă. După fiecare n secunde broscuţa devine mai obosită, iar lungimea săriturii pe care o face se înjumătăţeşte. Scrieţi un program care să citească de la tastatură lungimea iniţială a săriturii, p, numărul de secunde după care broscuţa îşi injumătăţeşte saltul, n, precum şi durata totală a deplasării broscuţei T (exprimată în secunde) şi care să determine distanţa totală pe care a parcurs-o broscuţa. Distanţa totală determinată va fi afişată pe ecran cu două zecimale. Restricţii: p, n, T sunt numere naturale; p, n, T<30000;T/n<16 Exemplu Pentru n=10, p=20 şi T=33, distanţa totală pe care se deplasează broscuţa este 50 cm.     (ONI, Galaciuc 2001, clasa a V-a)
  • La un concurs de matematică participă elevi din mai multe şcoli din diferite oraşe. Pentru a se putea deosebi între ele lucrările lor, fiecare lucrare este codificată printr-un număr natural cu 3 cifre, să zicem abc, unde a este codul oraşului, b este codul şcolii din oraşul a iar c este codul unui elev din şcoala b din oraşul a. Ex.: lucrarea cu codul 328 este lucrarea elevului cu codul 8 de la şcoala cu codul 2 din oraşul cu codul 3. Se cunosc: un cod (al lucrării unui elev H, prietenul nostru), numărul n de lucrări şi codurile acestora.Cerinţă: Se cere să se rezolve cerinţele:
    1. Verificaţi dacă H este premiant sau nu.
    2. Determinaţi numărul de premii luate de elevii din oraşul lui H
    3. c) Determinaţi numărul de premii luate de elevii din şcoala lui H

Exemplu: date de intrare  codH 123 n=4  133 221 123 125        Date de ieşire  a) da b) 3 c) 2

(OJI, clasa a V-a, februarie 2004)

  • O carte are N pagini. Pe paginile care au numărul asociat divizibil cu K şi nedivizibil cu H se află poze. Cerinţă: pentru N, K, H citite de la tastatură se cere să se afişeze ultima cifră a sumei numerelor asociate paginilor care au poze, dacă problema nu are soluţie se va afişa mesajul: Imposibil!

Restricţii 0<N<1000000001  0<K,H£N. Exemplu Pentru N=20, K=3, H=2 se va afişa 7

(CNI Satu-Mare 2003 clasa a V-a)

  • Într-o parcare sunt n maşini care au numere de înmatriculare provizorii (numere întregi, din cel mult 5 cifre). Maşinile sunt aşezate în ordinea de citire a numerelor de înmatriculare. Să se afişeze poziţiile pe care se află maşinile pentru care suma cifrelor numărului de înmatriculare este impară ( n<= 20).

Exemplu: pt. n=5 şi numerele de înmatriculare:    634  90281   63721   30361     70915 se vor afişa poziţiile:     1 3 4                                                                                                (CNI Satu-Mare 2002 clasa a V-a)

  • În vacanţă la mare după ce se plictiseşte de plajă şi apă, Ionică este mai tot timpul în Parcul de distracţii. Dintre toate locurile de distracţie el a ales tirul. Astfel, într-o seară Ionică obţine S puncte, după un anumit număr de trageri (cel puţin două trageri). Ştiind că la toate tragerile efectuate a obţinut puncte şi că după fiecare tragere el progresează constant, adică obţine cu un punct mai mult decât la tragerea anterioară, se cere să se determine toate modalităţile de obţinere a punctajelor (cu suma lor egală cu S). Date de intrare: de la tastatură se va citi valoarea lui S (număr natural nenul ≤ 998877). Date de ieşire: Pentru fiecare soluţie se va afişa pe câte un rând numărul de trageri şi punctajul primei trageri cu un spaţiu între ele, iar la sfârşit pe ultima linie se va afişa mesajul Numar solutii, urmat de numărul de soluţii. Exemplu: Pentru S=15 pe ecran se va afişa: 5 1     2  7     3  4          Număr soluţii 3                         (ONI Gălăciuc 2002 clasa a V-a)
  • Pentru a descoperi numărul cheii ce trebuie să o folosească pentru a putea să o elibereze pe Ileana Cosânzeana, Făt-Frumos are de rezolvat următoarea problemă: Pentru numărul citit pe uşă, trebuie să calculeze suma divizorilor şi, dacă această sumă este un număr prim, atunci codul este egal cu suma cifrelor numărului citit. În caz contrar, codul este egal cu suma cifrelor impare ale numărului citit. Ajutaţi-l pe erou să descopere numărul cheii. Exemple: date de intrare 472 date de ieşire cheia 7 ; Date de intrare 4 date de ieşire cheia 4.                                     (CNI-etapa judeţeană, 2005)
  • Se dau două numere având acelaşi număr de cifre. Câte cifre trebuie modificate pentru a transforma un număr în celălalt? Exemplu: date de intrare n1=2135 n2=7139 date de ieşire  2 cifre.

(CNI-etapa judeţeană, 2005)

IV.          Variabile booleene

 

1)   Cătălina are o maimuţă care a învăţat să scrie la tastatură. Pentru această săptămână trebuie să înveţe să scrie trei cuvinte de maximum 10 caractere. Din păcate, maimuţa se grăbeşte şi apasă greşit pe taste. Ajutaţi-o pe Cătălina să verifice când maimuţa a scris corect cele trei cuvinte. Date de intrare: cele trei cuvinte şi  cuvintele introduse de maimuţă. Programul se va opri atunci când maimuţa a reuşit să scrie corect toate cele trei cuvinte indiferent de ordinea introducerii sau de numărul de cuvinte greşite introduse. Separarea intre cuvinte se face apăsând tasta Enter. Exemplu: Pentru cuvintele: Palat  calculator jungla, maimuta poate tasta: palat Calutin jungla Pialat Cucalator calculator Palat  se va afişa AI REUSIT!        (www.contaminare.ro)

2)    Cine se uită la televizor ?

            Ana, Barbu, Călin, Dumitru şi Elena petrec împreună o zi de iarnă.

Dacă Ana priveşte la TV, la fel face şi Barbu

Fie Dumitru, fie Elena, fie amândoi privesc la TV

Fie Barbu, fie Călin priveşte la TV, dar nu amândoi

Dumitru şi Călin fie privesc, fie nu privesc la TV, dar asta numai împreună

Dacă Elena priveşte la TV atunci Ana şi Dumitru se uită şi ei

      Indicaţie : se vor folosi variabilele booleene a,b,c,d,e care vor avea valoarea true sau false după cum propoziţiile « Ana se uită la TV », « Barbu se uită la TV », etc. sunt adevărate sau false.

  • Cine minte ?

Într-o împrejurare în care sunt implicaţi a, b şi c se fac următoarele afirmaţii : a susţine că b minte, b susţine că c minte, c susţine că a şi b mint. Cine minte şi cine spune adevărul ?

V.            Generarea aleatoare a numerelor

 

Funcţia random şi procedura randomize

 

  • Să se simuleze aruncarea unui zar de n ori afişându-se valoarea feţei şi să se afişeze de câte ori a apărut valoarea 6.
  • Se aruncă 2 zaruri până la obţinerea unei duble. Să se afişeze suma punctelor.
  • Se extrag n bile dintr-o urnă, notate de la 1 la 20. Valoarea bilei va fi generată de calculator. Să se afişeze cea mai mare valoare extrasă.
  • Dintr-o urnă cu bile albe şi negre se extrage pe rând câte o bilă, de n ori. Afişaţi câte bile albe şi câte negre au fost extrase.
  • Să se facă un test de înmulţire cu două numere cuprinse între 0 şi 10, generate de calculator, care să cuprindă cel mult 5 încercări.

VI.          Tablouri cu o dimensiune (vectori)

 

Introducere, parcurgere, afişare

Parcurgere cu instrucţiunea for

 

  • Se citesc 4 numere de maxim 9 cifre. Să se afişeze pe verticală, specificându-se şi poziţia pe care o ocupă în şir. Exemplu: Date de intrare 5 3 7 6 Date de ieşire           5          pozitia 1

3          pozitia 2

7          pozitia 3

6          pozitia 4

  • Se dă un şir de 10 numere naturale. Să se afişeze pe două rânduri, pe primul rând cele pare şi pe al doilea cele impare. Exemplu: Date de intrare 4 3 2 5 6 8 9 0 1 5 Date de ieşire    4  2  6  8  0                                                                                                                                                 3  5  9  1  5
  • Se introduc 10 litere, să se afişeze în ordinea inversă introducerii. Exemplu: Date de intrare a b r a c a d a b r Date de ieşire r b a d a c a r b a.
  • Un acrostih este o poezie la care, citind începutul fiecărui vers, se obţine un mesaj. Să se introducă un acrostih, vers cu vers, şi să se afişeze mesajul dat de primele litere. Exemplu: pentru Vreau să dorm                                                                               Râd în somn                                                                                                                                                Este ca un drog                                                                                                                                            Acest drag somn                                                                                                                                          Uitat în pat

Se va afişa     VREAU

  • Introduceţi n numere într-un vector şi un număr d. Afişaţi acele numere din şirul dat care sunt divizibile cu d. Exemplu: date de intrare n=5 numere: 5 7 10 23 15  d=5  Date de ieşire 5  10
  • Robin Hood se află la un concurs de tras cu arcul. Acolo el trebuie să obţină punctajul x doar din trei săgeţi(sageata 1+sageata2+sageata3=punctajul x). Ţinta este formată din n cercuri concentrice (unul în altul). Fiecare cerc are un anumit punctaj. Să se spună valorile cercurilor în care trebuie să tragă Robin Hood pentru a obţine punctajul x. Dacă există mai multe soluţii, să se printeze toate. Dacă nu există soluţii, să se printeze “imposibil”. Date de intrare: pe prima linie n şi x, pe a doua linie valoarea fiecărui cerc. Date de ieşire: soluţiile sau “imposibil”. Exemplu: Intrare:n=3 x=4 valori cercuri 1 2 3 4 Ieşire: 1 1 2 (explicaţie: 1+1+2=4)

(www.contaminare.ro)

 

Utilizarea altor instrucţiuni de ciclare pentru parcurgerea vectorilor

 

  • Să se afişeze elementele unui vector până la prima valoare nulă. Dacă nu există nici un 0, se vor afişa toate numerele şi mesajul „Nici un element nul”. Exemplu: Date de intrare: numar elemente=5, numere 3 6 8 0 2 3 Date de ieşire 3  6
  • Se introduc n numere reprezentând punctajele obţinute la un concurs. Să se afişeze primele k punctaje mai mari decât o valoare b, necesară calificării la o etapă superioară. Dacă nu sunt suficienţi concurenţi care să fi obţinut punctaj peste b, să se afişeze şi mesajul „Candidati insuficienti”. Exemplu: Date de intrare n=3 punctaje: 45  23  78  k=2  b=50  Date de ieşire 78.
  • Se introduc un număr par de numere. Să se adune câte două numere consecutive şi să se afişeze sumele obţinute. Exemplu: Date de intrare: numar elemente: 6, numere 5 4 3 6 5 5 Date de ieşire 9 9
  • Se introduc pe rând n caractere. Să se afişeze pe ce poziţie apare prima dată caracterul spaţiu. Exemplu: Date de intrare n=10 caractere i n f o c l u b 7  Date de ieşire
  • Căpitanul Jack O’Neel se află pe o navă spaţială. Nava are lungimea de n camere şi lăţimea de o cameră. El se află în camera numărul 1. În fiecare cameră se află un dispozitiv de teleportare. Acest dispozitiv te poate teleporta într-o altă cameră din cele n. Să se spună dacă O’Neel poate ajunge în camera h. Date de intrare: Pe prima linie numărul n şi numărul h. Pe a doua linie sunt n numere, fiecare număr indică în ce cameră îl transmite pe Jack O’Neel teleportorul din acea cameră. Date de ieşire: Dacă O’Neel poate ajunge în camera h se va printa „DA” şi camerele prin care a trecut. Dacă nu poate ajunge în camera h să se printeze „NU”. Obs: Dacă O’Neel trece de două ori prin aceeaşi cameră, acesta nu mai încearcă să ajungă în camera h şi se va printa „NU”. Exemple: Date de intrare: n=5 h=4 teleportari: 2 3 4 1 3 Date de ieşire:
    DA 1 2 3 4 Date de intrare: n=4 h=4  teleportari:1 2 3 4 date de ieşire: NU            (www.contaminare.ro)
Sume, produse, contorizări, min, max

 

  • Să se afişeze suma valorilor pozitive şi suma valorilor negative din n numere date. Exemplu: Date de intrare  n=6  numere 6 9 -8 7 –5 –3  Date de ieşire: S poz= 22  S neg=-16.
  • Se introduc temperaturile măsurate în n zile. Să se afişeze media temperaturilor negative şi media celor pozitive. Exemplu: Date de intrare n=5 temperaturi 23 24 23 25 22 Date de ieşire 23.40
  • Din n numere întregi introduse în calculator doar unul este nul şi nu este primul sau ultimul. Afişaţi suma numerelor din faţa acestui 0 şi suma celor de după el. Exemplu: Date de intrare n=5 numere 4 5 1 0 7 Date de ieşire s1=10 s2=7.
  • Într-un şir de numere întregi, să se afişeze suma elementelor de pe poziţiile pare şi suma celor de pe poziţii impare. Exemplu: Date de intrare n=6 numere 3 1 5 4 6 7 Date de ieşire simp=14 spar=12.
  • Se introduc în calculator şi se memorează vârstele a n bărbaţi. Afişaţi câţi au vârsta mai mare decât 50 şi mai mică decât 70 de ani. Exemplu: Date de intrare n=4 varste 56 45 76 65 Date de ieşire 2 barbati.
  • La o cură de slăbire de k zile se înscriu n persoane, fiecare cu greutatea g(i). Ştiind că greutatea ideală este mai mare sau egală cu a şi mai mică sau egală cu b, iar persoanele urmează tratamente diferite astfel: cei sub greutate ideală se îngraşă 1 kg pe zi, cei peste greutatea ideală slăbesc 1 kg pe zi, cei cu greutatea ideală îşi păstrează greutatea, aflaţi a) numărul de persoane cu greutate ideală la începutul tratamentului ; b) numărul persoanelor cu greutate ideală după cele k zile de tratament. Exemplu: n=10 k=7 a=40 b=50 şi 38 41 48 50 54 58 60 42 32 se va afişa a) 4 persoane b) 7 persoane. (InfoStar Aiud 1998 clasa a VI-a)
  • Date n numere naturale, câte sunt prime cu 7? Dar cu 10? Exemplu: Date de intrare n=6 numere 5 7 14 20 12 15 Date de ieşire: prime cu 7: 4 nr, prime cu 10: 1 nr.
  • Se introduc n numere egale cu 0, 1 sau 2. Să se scrie un program care să determine pe ce poziţie apare primul 0, de câte ori apare fiecare cifră şi care este cifra folosită cel mai puţin. Exemplu: Date de intrare n=7 numere: 1 1 0 2 1 0 1 Date de ieşire: pozitie primul zero 3, cifra 0 apare de 2 ori  cifra 1 apare de 4 ori cifra 2 apare de 1 ori, cel mai putin: 2 .
  • Afişaţi câte numere au forma aaa , din n numere date. Exemplu: Date de intrare n=3 numere 123 222 434  Date de ieşire 1 nr.
  • Se introduc înălţimile, exprimate în cm, a n copii. Afişaţi înălţimea celui mai înalt şi înălţimea celui mai scund copil. Care este diferenţa de înălţime între ei? Exemplu: Date de intrare: n=5 inaltimi 120 118 120 115 100 117 Date de ieşire imax=120 cm imin=100 cm diferenta=20 cm.
  • Se dau n numere. Să se determine cea mai mică valoare şi să se afişeze de câte ori apare ea în şir. Exemplu: Date de intrare n=8 numere 6 4 7 5 8 5 9 5 Date de ieşire min=5 apare de 3 ori.
  • Se introduc n numere întregi. Dintre numerele mai mici ca 100, afişaţi numărul cu valoarea cea mai mare. Exemplu: Date de intrare: n=4 numere 120 98 34 105 Date de ieşire: 98.
  • Să se calculeze suma componentelor pozitive, produsul celor negative şi numărul componentelor nule ale unui vector cu n numere reale. Exemplu: Date de intare: n=7 numere 1 0 -4 -3  0  5  -1 Date de ieşire: s=6 p=-12 c=2.
  • Un lot de pământ este împărţit în n parcele dreptunghiulare, numerotate de la 1 la n. Se citesc perechile de numere care reprezintă lungimea şi lăţimea fiecărei parcele. Să se afişeze suma ariilor parcelelor şi valoarea celei mai mari suprafeţe. Exemplu: Date de intrare: n=3, lungime=10 latime=5 lungime=15 latime=10  lungime=12 latime=5 Date de ieşire: suma=260 max=150.
  • Să se înlocuiască fiecare element dintr-un şir numeric cu media aritmetică a celorlalte n-1 elemente ale sale. Exemplu: Date de intrare: n=3 numere 1 2 3 Date de ieşire: 2.5 2  5
  • Moş Crăciun soseşte în mijlocul copiilor oferind fiecărui copil un cadou cu o anumită valoare (numărul copiilor se citeşte de la tastatură, precum şi valorile cadourilor, în lei). Să se spună:

-cât a cheltuit Moşul pentru cumpărarea cadourilor (în moşi, 1 leu=6 moşi)

-dacă Moşul are sau nu un copil preferat, adică dacă există un copil al cărui cadou să aibă valoarea mai mare decât suma valorilor cadourilor tuturor celorlalţi copii. Dacă există, afişaţi DA, urmat de indicele copilului, în caz contrar afişaţi NU. Exemplu: dacă n=5    valori cadouri: 10  50  6  5  20, se va afişa: Mosul a cheltuit 546 mosi       DA  2                                                                      (InfoStar, Aiud 1995 clasa a VI-a)

  • Un pitic vrea să urce o scară care are n trepte de înălţimi date, ordonate crescător. Înălţimile treptelor sunt în cm şi sunt valori întregi. Acolo unde diferenţa între două trepte consecutive este de 1 cm piticul urcă fără dificultăţi, unde diferenţa este mai mare decât 1 cm piticul trebuie să ia o pastilă care îi dă putere să sară pe treapta următoare. Cunoscând înălţimile treptelor, prima fiind obligatoriu 0, piticul vrea să afle care este numărul minim de pastile de care are nevoie pentru a urca scara şi de asemenea care este cea mai mare diferenţă dintre două trepte consecutive. Exemplu: pentru n=9 şi înălţimile treptelor 0 3 4 6 7 10 19 20 21, se va afişa: numar minim de pastile =4   diferenta maxima=9   (InfoStar, Aiud 1996 clasa a VI-a)

18)  Copiii dintr-o clasă merg la cules de portocale. Se citeşte de la tastatură numărul de copii din clasă şi câte portocale a cules fiecare copil. Ştiind că cel care spune că a cules cele mai multe portocale şi cel care spune că a cules cele mai puţine portocale mint, să se spună câte portocale au cules împreună toţi copiii din clasă care spun adevărul. Exemplu: date de intrare : 5 (nr. de copii din clasă) 69 25   14  329  54  date de ieşire: 148.

  • Se citesc de la tastatură n numere naturale. Să se spună câte din ele sunt cu 3 cifre.
  • Într-o clasă sunt x copii. Aceştia merg într-o piaţă în care sunt n vânzători de mere. Se citeşte de la tastatură numărul de mere ale fiecărui vânzător. Copiii vor cumpăra mere doar de la vânzătorii care au cel puţin 3 mere pentru fiecare copil. Câţi vănzători îndeplinesc această condiţie? Exemplu: Date de intrare: x=25 (numărul de copii) n=5 (numărul de vânzători) 280 456  78   50   75 Date de ieşire: 4 (vânzători) (P.N.C. Bucureşti, Cupa Mărţişor 2005.)
  • Se consideră n mulţimi. Fiecare mulţime conţine numai numere consecutive. Pentru a da aceste mulţimi este suficient să dăm primul şi ultimul element. Scrieţi un program care să determine elementele intersecţiei celor n mulţimi. Date de intrare: De la tastatură se citeşte numărul n. Apoi perechi de numere, câte una pe un rând, separate prin câte un spaţiu, care reprezintă cel mai mic, respectiv cel mai mare element din fiecare mulţime. Date de ieşire: Pe ecran se va afişa pe prima linie elementele intersecţiei cu câte un spaţiu între ele. Restricţii şi precizări: 0 < n < 31 Elementele mulţimilor sunt numere naturale < 41.

Exemplu: date de intrare: n=3 perechi: 5  10    2  9    4  11 Date de ieşire: 5  6  7  8 9.

Ordonarea elementelor unui vector

 

  • Se dau n numere reale. Să se afişeze în ordine crescătoare. Exemplu:Date de intrare: n=4 numere:7 -3  8  0 Date de ieşire –3  0  7  9.8
  • Se dă un vector cu n componente întregi. Se cere să se afişeze primele k componente în ordine crescătoare iar celelalte în ordine descrescătoare. Exemplu: n=7 k=3 şirul 23 12 18 4 0 23 5 se va afişa 12 18 23 23 5 4 0
  • N numere naturale introduse de la tastatură să se afişeze astfel: numerele pare în ordine crescătoare şi cele impare în ordine descrescătoare. Exemplu: pentru n=7 şi şirul 2 5 3 1 8 5 4 se va afişa 2 1 3 5 4 5 8.
  • Prin ordonarea elementelor unui vector format din n caractere, să se afişeze de câte ori apare fiecare caracter. Exemplu: Date de intrare: n=4 elemente: a 4 g a Date de ieşire: a apare de 2 ori g apare de 1 ori  4 apare de 1 ori.
  • Cunoscând numele şi înălţimea a n elevi, n<=100, să se afişeze numele acestora în ordinea descrescătoare a înălţimii. Exemplu: Date de intrare: n=3 nume: Ion inaltime: 120 nume:Ana inaltime:114 nume: Dan inaltime 130 Date de ieşire: Dan  Ion  Ana
  • La un concurs participă n sportivi. Se cunosc rezultatele fiecărui sportiv. Să se afişeze cele mai bune trei rezultate, în ordine descrescătoare a performanţei. Exemplu: pentru n=5 şi rezultatele 156  187  23  97  86   se va afişa  187  156
  • Se cunosc punctajele obţinute de cei n elevi participanţi la un concurs de informatică. Ştiind că doi elevi primesc acelaşi premiu numai dacă au punctaje egale, să se determine câţi elevi primesc Premiul I, câţi Premiul II şi câţi Premiul III. Cerinţă: Scrieţi un program care citeşte de la tastatură numărul concurenţilor precum şi punctajele acestora, luate din borderoul de corectare, şi determină şi afişează pe ecran pe câte o linie numărul de elevi pentru fiecare din cele trei premii. Restricţii: numărul n al elevilor nu depăşeşte 300 iar punctajul fiecăruia este un număr natural cel mult egal cu 100. Exemplu: Pentru n=10 si punctajele: 58 79 34 12 58 40 79 58 30 58 se vor afişa numerele: 2 4    1   ceea ce înseamnă că 2 elevi primesc Premiul I (cei care au obţinut 79 puncte), 4 elevi obţin Premiul II (cei cu 58 puncte) şi un elev (cel cu 40 puncte) primeşte Premiul III.
  • Se introduc n numere de câte una sau două cifre. Să se afişeze aceste numere în ordinea crescătoare a primei lor cifre. Exemplu: pentru n=5 şi numerele 34 2  5  62  25  se va afişa 2  25  34  5  62   sau  25  2  34  5

Deplasarea elementelor unui vector

 

  • Să se insereze cifra 0 pe prima poziţie a unui vector dat, fără a utiliza un alt vector. Exemplu: Date de intrare: n=4 numere: 5 3 7 8 Date de ieşire: 0 5 3 7 8.
  • Se introduc n numere în calculator. Să se rearanjeze elementele din şir astfel încât primul element al şirului dat să apară pe ultima poziţie. Exemplu: Date de intrare: n=3 numere: 1 2 3 Date de ieşire: 2 3 1.
  • Se introduc n numere în ordine crescătoare şi un număr k. Să se insereze acest număr în şirul dat astfel încât să rămână sortat crescător. Exemplu: Date de intrare: n=4 k=100 numere: 90 95 110 120 Date de ieşire: 90 95 100 110 120.
  • Definim operaţia de compactare a unui tablou ca fiind eliminarea zerourilor. Dacă întâlnim un element nul toate elementele situate la dreapta sa vor veni cu o poziţie mai in faţă, în locul său. Se dă un tablou cu n elemente intregi. Compactaţi-l. Exemplu: Date de intrare: n=4 numere: 9 0 0 5 Date de ieşire: 9 5.
  • Să se aşeze toate elementele egale cu o valoare v dintr-un şir de n numere date, la sfârşitul şirului. Exemplu: Date de intrare: n=4 v=5 numere: 5 6 5 3 Date de ieşire: 6 3 5 5.
  • Se introduc în calculator două tablouri de dimensiunem, respectiv n, şi un număr k, k<= Să se intercaleze în primul tablou, după poziţia k, tabloul al doilea.

Verificarea unor proprietăţi

 

  • Se introduc două şiruri de numere cu acelaşi număr de elemente. Să se verifice dacă valorile lor, în ordinea dată, sunt proporţionale. Exemplu: Date de intrare: n=3 sir1: 1 2 3 sir2: 3 6 9 Date de ieşire: Da.
  • Să se verifice dacă un vector dat este monoton crescător.
  • Să se caute un număr x printre n numere întregi generate de calculator având valori între 0 şi 100. Dacă se găseşte valoarea respectivă să se afişeze ultima poziţie în care apare, dacă nu se găseşte, să se afişeze mesajul „numar inexistent”
  • Un tren este format din n vagoane de clasa I-a şi a II-a. Şeful de tren nu vrea să fie mai mult de k vagoane de aceeaşi clasă unul după altul. Introducându-se o aranjare a vagoanelor, să se testeze dacă există mai mult de k vagoane de acelaşi fel consecutive. Se va afişa un mesaj corespunzător. În caz afirmativ, să se afişeze şi poziţia de început a subşirurilor cu mai mult de k elemente de acelaşi fel. Exemplu: Date de intrare: n=6 k=3 tip vagoane: 1 1 2 2 2 2 Date de ieşire: Da, pozitia de inceput 3.
  • Date două şiruri de numere, a cu n elemente şi b cu m elemente, m< n, să se verifice dacă b este subşir al lui a. Exemplu: Date de intrare: n=4 elemente a: 1 2 3 4 m=2 elemente b: 2 4 date de ieşire: da.
  • Se dă un şir de numere reale. Să se verifice dacă şirul este o progresie aritmetică (diferenţa dintre oricare două numere alăturate este aceeaşi, de exemplu: 1,4,7,10,13)
  • Să se verifice dacă n numere date formează o mulţime (elementele sunt distincte), ordonînd elementele. Exemple: Date de intrare: n=4 numere: 4 6 2 6 Date de ieşire: Nu ; Date de intrare: n=3  numere: 3 5 2 Date de ieşire: Da.
  • Să se verifice dacă doi vectori cu aceeaşi lungime au aceleaşi elemente, ordonînd ambii vectori în prealabil. Exemple: Date de intrare: n=3 primul vector: 4 2 6 al doilea vector: 6 2 4 Date de ieşire: Da; Date de intrare: n=2 primul vector: 4 2 al doilea vector: 3 4 Date de ieşire: Nu.

 

Construirea unor vectori

 

  • Ciurul lui Eratostene: Să se formeze un vector care să conţină elementele prime mai mici decât un număr dat n, n<1000, utilizând procedeul de excludere prezentat în manualul de matematică (excluderea se va face prin inlocuirea elementului cu 0 şi nu se vor afişa elementele nule).
  • Într-o închisoare cu n celule se află, la un moment dat, n deţinuţi. Se ia hotărârea să fie eliberaţi anumiţi deţinuţi, alegerea lor făcându-se într-un mod special. În închisoarea aceea erau tot n gardieni. Procedeul de determinare a deţinuţilor ce vor fi eliberaţi este următorul: gardianul k pleacă de la celula k şi mergând din k în k celule, schimbă starea uşilor pe la care trece,1<=k<=n. În final anumite celule vor rămâne deschise, deţinuţii respectivi fiind eliberaţi. Puteţi afla care? Iniţial toate uşile sunt închise. Exemplu: n=50 vor fi eliberati cei din celulele 1 4  9  16  25  36
  • Să se formeze vectorul primelor n elemente ale şirului lui Fibonacci: 0, 1, 1, 2, 3, 5, 8, 13,21,…. (f[1]=0, f[2]=1, f[i]=f[i-1]+f[i-2]).
  • Se introduc n numere întregi. Elementele diferite să se memoreze într-un alt vector. Să se afişeze acest nou vector. Exemplu: Date de intrare: n=4 numere: 1 2 2 1 Date de ieşire: 1 2.
  • Să se formeze şi să se afişeze vectorul care să conţină elementele nenule dintr-un vector dat.
  • Să se extragă dintr-un vector elementele care au ultima cifră egală cu k şi să se formeze cu ele un alt vector. Să se afişeze cei doi vectori. Exemplu: Date de intrare: n=3 k=7 numere: 17 23 47 Date de ieşire: 17 47.
  • Se dau n numere întregi. Folosind un alt vector, să se aşeze numerele pare la început. Exemplu: Date de intrare: n=4 numere: 3 4 6 5 Date de ieşire: 4 6 3 5.
  • Prin contorizare şi utilizarea unui vector ajutător, într-un şir de numere date să se grupeze la început numerele deficiente, apoi cele perfecte şi la sfârşit cele abundente. (Numim număr deficient cel care este mai mare decât suma divizorilor mai mici ca el, număr perfect cel care este egal cu acestă sumă şi abundent numărul mai mic decât această sumă). Exemplu: Date de intrare: n=5 numere: 6 12 3 4 10 Date de ieşire: 3 4 10 6
  • Dat un număr n, să se memoreze într-un vector toate numerele mai mici ca n prime cu n. Să se afişeze în ordine descrescătoare. Exemplu: Date de intrare: n=10 Date de ieşire: 9 7 3.
  • Se citeşte un număr natural cu cifre nenule. Să se determine cel mai mic şi cel mai mare număr format din cifrele acestui număr. Exemplu: Date de intrare: n=26341 Date de ieşire: min=12346 max=64321.
  • Să se insereze între oricare două elemente alăturate ale unui şir numeric dat media lor aritmetică. Exemplu: date de intrare: n=3 numere: 2 4 5 Date de ieşire: 2 3 4 4.5 5.
  • Se dă şirul 1,2,2,3,3,3,4,4,4,4,5,… . Dat un număr k, să se afişeze elementul de pe poziţia k.

VII.        Tablouri cu două dimensiuni (matrici)

 

Introducere, parcurgere integrală, afişare

 

  • Se dă un tablou bidimensional cu m linii şi n coloane, 1£m,n£50, cu componente întregi şi un număr întreg k. Se cere să se afişeze tabloul cu componentele mărite cu k. Exemplu: Date de intrare: m=2 n=3 k= 5 elemente: 1 2 3     Date de ieşire:         6  7   8                                                                                                                          4 5 6                       9 10 11
  • Se introduc două matrici cu m linii şi n coloane. Să se afişeze matricea sumă a celor două matrici date.
  • Se introduce o matrice cu m linii şi n coloane. Să se afişeze elementele astfel încât liniile să devină coloane. Exemplu: m=2, n=3 matricea 1  2  3               se va afişa         1  4

4  5  6                                       2  5                                                                                                                                                             3  6

  • Să se afişeze suma şi produsul tuturor elementelor unei matrici cu m linii şi n coloane cu componente reale. Câte elemente sunt întregi? Exemplu: Date de intrare: m=2 n=2 matrice:       4 5 3

Date de ieşire: s=15 p=120  6 numere intregi                                     1 1 2

  • Dat un tablou bidimensional cu n linii şi n coloane, afişaţi cea mai mare componentă şi poziţiile pe care le ocupă. Exemplu: Date de intrare: n=2 matrice: 4 7        Date de ieşire: max=7 pozitii 1 2   2 2.

5 7

  • Se consideră un tablou care imaginează tabla de şah. Se citesc un număr de linie şi un număr de coloană care vor reprezenta poziţia unui cal pe tablă. Să se afişeze coordonatele elementelor tablei pe care poate sări calul. Exemplu: Date de intrare: 2 2 Date de ieşire: 1  4      4  1     4  3     3

Parcurgere parţială a unui tablou bidimensional

 

  • Să se afişeze suma elementelor de pe coloana k a unei matrici cu m linii şi n coloane, k£ Exemplu: Date de intrare: m=2 n=4  k=1    matrice  4 3 6 8  Date de ieşire:   s=11.                                                                                                                      7 4 9 0
  • Se introduc punctajele realizate de m concurenţi la n probe sub forma unei matrici cu m linii şi n coloane. Afişaţi punctajul total realizat de fiecare concurent. Exemplu: Date de intrare: m=3 n=2 punctaj concurent 1: 7 9 punctaj concurent 2: 10 8 punctaj concurent 3: 9 9 Date de intrare: concurent1 16 concurent2 18 concurent3 18.
  • Se dă o matrice pătratică cu dimensiunea n,n. Afişaţi suma elementelor de pe diagonala principală şi de pe diagonala secundară.
  • Ducând cele două diagonale într-o matrice pătratică, se obţin patru zone triunghiulare. Afişaţi suma componentelor din interiorul fiecărei zone.
  • Se dă un tablou cu m linii şi n coloane. Se cere să se afişeze suma componentelor de pe marginea tabloului. Exemplu: Date de intrare: m=3 n=4 matrice 6 4 1 0 Date de ieşire : s=32.                                                                                                                    1 5 3 3                                                                                                                                                        0 8 2 7
  • Se dă o matrice cu n linii şi n coloane. Să se afişeze suma componentelor ce se află pe pătrate concentrice ale matricii date. Ex: pentru n=4 şi tabloul 1 1 1 1 se va afişa          suma patrat 1=30                                                                                                    2 2 2 2                          suma patrat 2=10                                                                                                    3 3 3 3

4 4 4 4

  • Afişaţi valoarea maximă de pe fiecare coloană a unei matrici cu m linii şi n coloane.
  • Se dă un tablou cu m linii şi n coloane având componente cifre zecimale. Fiecare linie a tabloului reprezintă cifrele a m numere naturale. Se cere să se afişeze pe acelaşi rând cifrele sumei celor m numere date. Exemplu: pentru numerele 914, 9211, 3547, 23 se introduce matricea cu m=4, n=4          0 9 1 4                                                                                                                                                       9 2 1 1

3 5 4 7

0 0 2 3                          şi se va afişa suma  1  3   6   9   5.

  • O persoană are de cumpărat p produse din m magazine. Să se facă un program care să indice, pentru fiecare produs, magazinul în care acesta are preţul minim. Cunoscând cantităţile ce trebuie cumpărate pentru fiecare produs, să se determine suma ce urmează a fi cheltuită. Exemplu: p=2 m=3 şi preţurile aşezate într-o matrice cu p linii şi m coloane:      50000   48000  49500                                                                                                                                               11000   11500   11500           se va afişa: produs 1 pret minim in magazin 2                 produs 2 pret minim in magazin 1 ,  cunoscând cantităţile 5  7, suma necesară va fi de  317000 lei.

 

Eliminarea, adăugarea şi schimbarea poziţiei liniilor şi coloanelor

 

  • Se introduce o matrice cu m linii şi n coloane. Se cere ca prin operaţii de interschimbare de linii să se obţină o matrice cu elementele de pe prima coloană ordonate crescător. Exemplu: Date de intrare: m=2 n=3 matrice: 7 4 9     Date de ieşire:         1 8 4                                                                                                                 1 8 4                             5 4 0                                                                                                                5 4 0                             7 4 9
  • Se dau o matrice de dimensiune m,n şi un număr k, k£ Să se elimine linia k din matrice.
  • Se dau o matrice de dimensiune m,n şi un vector cu n elemente. Să se adauge aceste elemente ca linie k în matricea dată.
  • Se dă o matrice cu m linii şi n coloane cu elemente 0 sau 1.Determinaţi o matrice cu m+1 linii şi n+1 coloane care are un număr par de 1 pe fiecare linie şi fiecare coloană.
  • Să se afişeze suma vecinilor fiecărui element al unei matrice de m linii şi n coloane. Exemplu: m=3, n=2 pentru matricea       1  2       se va afişa         9   8  18  17  13                                                                                                         3  4                                                                                                                                                                  5  6

Verificarea unor proprietăţi

 

  • Să se verifice dacă o matrice pătratică de dimensiune n,n este simetrică (elementele simetrice faţă de diagonala principală sunt egale). Exemplu: Date de intrare: n=3 matrice: 3 4 5     Date de ieşire: Da                                                                                                                            4 1 7                                                                                                                                                           5 7 0
  • Se dă un tablou cu m linii şi n coloane. Să se determine numărul de linii care au toate elementele egale.
  • Să se verifice dacă două matrici cu aceeaşi dimensiune sunt egale (au componentele de pe aceeaşi poziţie egale).
  • Se introduc mediile a m elevi dintr-o clasă, la n materii. Să se verifice dacă în acea clasă sunt elevi repetenţi (cel puţin trei corigenţe). În caz afirmativ, să se specifice şi câţi sunt.
  • Să se verifice dacă o matrice are toate elementele distincte.
  • Se da o matrice pătratică cu n linii şi n coloane. Stabiliţi dacă este un pătrat magic. (Suma pe linie egală cu suma pe coloană şi cu suma pe fiecare diagonală)

 

Construirea unui tablou

 

  • Să se construiască un tablou pătratic de dimensiune n,n cu primele n*n numere pare. Exemplu: n=3 se va afişa            2   4   6                                                                                                                                                                8  10 12                                                                                                                                                       14 16 18

2)   Se dă un număr natural n.  Vrem să construim un tablou pătratic cu n linii şi n coloane având elementele în mulţimea {-1, 1} astfel încât produsul elementelor de pe fiecare linie, respectiv coloană să fie –1. Cerinţă: Afişaţi unul din tablourile cu proprietăţile de mai sus. Restricţii: 0<n<26.  Exemplu: pentru n=4 o soluţie posibilă este           1 –1 –1 –1                                                                                                                                                   1   1 –1  1

-1   1   1  1

1   1   -1   1                                                                            (CNI Satu-Mare 2002 clasa a VI-a)

 

VIII.      Şiruri de caractere ( tipul string)

 

Parcurgere, testarea elementelor

 

  • Să se afişeze cu litere mari un text dat, de maxim 255 caractere. Exemplu: Date de intrare text: Cerc dE InfO Date de ieşire  CERC DE INFO.
  • Să se afişeze numărul de vocale dintr-un text scris cu litere mici, memorat într-o variabilă string.
  • Să se scrie toate prefixele unui cuvânt dat; prin prefix se înţelege şirul format din primele caractere ale cuvântului, minim un caracter, maxim toate. Exemplu: prefixele pentru tablou sunt: t ta  tab  tabl  tablo
  • Să se afişeze toate sufixele unui cuvânt. Exemplu: cuvântul tablou, sufixele: u ou lou blou ablou tablou.
  • Să se stabilească proprietatea de palindrom a unui cuvânt. Exemplu: cuvântul cojoc este palindrom.
  • Să se afişeze literele folosite şi frecvenţa fiecăreia într-un text de maxim 255 de caractere.
  • Se dă un text cu cel mult 255 caractere şi o secvenţă continuă de litere. Cuvintele din text sunt separate prin unul sau mai multe spaţii. Se cere să se determine numărul de apariţii a grupului de litere dat, în text. Exemplu: text: Alina merge sa cumpere mere, grup de litere: me, se va afişa 2.
  • Să se codifice un text dat afişând în locul fiecărei litere codul ei ASCII. Să se afişeze textul codificat, cu un spaţiu între coduri şi trei spaţii pentru un spaţiu în text. Exemplu: textul: ‘Am un mar’ se va afişa 65 109   117 110   109 97 114.
  • Într-un text dat, să se înlocuiască o literă dată cu o altă literă dată de la tastatură. Exemplu: Date de intrare: text abracadabra  litera inlocuita b  litera cu care se inlocuieste g Date de ieşire abragadabra.
  • Să se verifice dacă două cuvinte date au aceleaşi litere. Exemplu: Date de intrare: mar ram Date de ieşire: Da
  • Să se introducă în calculator un număr cu mai mult de 10 cifre, sub formă string, şi să se afişeze cu cifrele grupate câte trei, de la dreapta la stânga, grupele fiind separate de punct. Exemplu: numărul 12345678900 va fi afişat ca 12.345.678.900.
  • Se dă un şir de caractere. Eliminaţi din acest şir toate caracterele numerice pe care le conţine. Exemplu: Date de intrare: sir: Ana are 3 mere date de Ieşire: Ana are mere
  • Se citesc de la tastatură n litere mici, cu n < 15. Să se formeze două cuvinte astfel încât primul să conţină numai vocale iar celălalt numai consoane. Primul va fi afişat cuvântul care are mai multe litere, iar in caz de egalitate cel care conţine numai vocale. Exemplu: Date de intrare: 12 a v p o i n e r g e a s date de ieşire: aoieea
  • Într-o urnă se găsesc bile albe şi roşii. În fiecare bilă există câte un număr de la 1 la 50. Ionel şi Petrică doresc să se joace şi inventează următorul joc: Fiecare din cei doi copii extrage câte 5 bile şi numerele din bilele extrase sunt apoi alăturate formând un număr. Câştigă cel care a obţinut cel mai mare număr. Exemplu: Ionel extrage bilele cu numerele 10, 23, 1, 15, 48. Numărul este 102311548. Petrică extrage bilele cu numerele 1, 15, 24, 25, 26. Numărul este A câştigat Petrică. Realizaţi programul Pascalş ce stimulează jocul celor doi prieteni.                         (CJI, Petroşani, 2005)

Scoaterea cuvintelor dintr-un text

 

  • Se consideră un text memorat într-o variabilă string. Să se scrie un program care numără cuvintele din text, separatorii folosiţi fiind spaţiul, punctul, virgula.
  • O linie citită de la tastatură cuprinde cuvinte separate prin spaţii. Se cere să se afişeze lungimea minimă şi maximă a cuvintelor din linie.
  • Se citeşte de la tastatură un text cu maxim 255 caractere, cuvintele fiind separate de spaţiu, punct, virgulă şi caracterele ?,!. Se cere să se afişeze unul sub altul cuvintele din text. Exemplu: pentru textul: Pleaca Ion la mare? Se va afişa:   Pleaca                                                                                                                                                         Ion                                                                                                                                                             la                                                                                                                                                                mare
  • Să se afişeze în ordine alfabetică cuvintele formate din două litere dintr-un text dat. Exemplu: Date de intrare: tu ai fost la mare Date de ieşire  ai  la
  • Se dă un text cu cel mult 255 caractere, litere mici şi mari ale alfabetului englez şi spaţii. Se cere să se afişeze cuvintele din text de lungime maximă. Exemplu: Ionica vrea sa mearga cu Mircea al mare, se va afişa: Ionica  mearga
  • Se introduc de la tastatură două texte prin două variabile de tip string. Se cere să se afişeze cuvintele comune celor două texte, ştiind că două cuvinte pot fi separate prin unul sau mai multe spaţii. Exemplu: pentru textele: Ion merge la peste   şi  Dan merge la Ion, se va afişa : Ion  merge
  • Se dă un text t format din mai multe cuvinte (maxim 100 de cuvinte sau 1000 de caractere) separate prin spaţiu citit de la tastatură. Să se introducă într-un dicţionar toate cuvintele distincte din acel text. Acest dictionar va fi ordonat alfabetic în sens crescător de la A la Z. Exemplu: „acesta este un text de proba cu doi de este”, afişare: acesta cu      de doi este proba text un. Observaţii:  textul se introduce de la tastatură fără ghilimele şi se dă Enter  pentru a termina introducerea lui in memorie; nu se introduc caractere speciale, sau chiar daca textul are semne de punctuaţie, se va considera ca separator intre cuvinte spaţiul;
    cuvintele în dicţionar vor fi scrise cu literă mică

IX.          Alte tipuri de date structurate

Tipul mulţime

 

  • Se dau n (1<=n<=30) şiruri de caractere (litere mici şi mari ale alfabetului englez şi cifrele sistemului zecimal). Să se determine caracterele folosite în toate şirurile de caractere. Exemplu: Date de intrare n=3 siruri            Abcdammbc123ads

Sgssa89822221iuAsd

Hgds921kjdkAsda

Se va afişa A  d  s  1  2.

  • Se dau două mulţimi a şi b cu componente numere naturale mai mici sau egale cu 255. Se cere să se determine mulţimile: aÈb, aÇb, a-b. Exemplu: Date de intrare: multimea a 1 2 3 4 7 5  multimea b 4 5 8 Date de ieşire: reuniune 1 2 3 4 5 7 8  intersectie 4 5  diferenta 1 2 3 7.
  • Se dau n, 1<=n<=30, mulţimi cu elemente numere naturale mai mici sau egale cu 255. Se cere ă se afle elementele intersecţiei mulţimilor. Exemplu: Date de intrare: m=3 multime1  1  2  3  4  5   multime2  2 4 7 1   multime3   4 5 2 9 Date de ieşire: intersectie 2
  • Se citesc, din linii diferite, n cuvinte cuprinzând litere mici ale alfabetului latin. Se cere să se afişeze literele distincte din fiecare cuvânt citit şi literele distincte întâlnite în toate cele n cuvinte. Exemplu:Date de intrare: numar cuvinte=2 cuvant1: backspace cuvant2: program  Date de ieşire: litere cuvant1: a b c e k p s  litere cuvant2: a g m o p r  litere total: a b c e g k m o p r s.
  • Se dau două numere în baza 16 cu cel mult 255 cifre. Se cere să se afişeze cifrele comune celor două numere. Exemplu: Date de intrare: 1A67Fb 56DB345AA Date de ieşire: 6  A
  • Se introduc numele medicamentelor indicate şi contraindicate în 10 boli. Se cere să se afişeze numele medicamentelor care se pot administra unui pacient care suferă de mai multe boli din cele 10.
  • Se consideră maxim 10 mulţimi de numere de tip byte. Să se verifice dacă sunt disjuncte.

 

 

 

 

 

Tipul înregistrare

 

1)  Elevii dintr-o şcoală vor să facă un top al celor mai bune 10 melodii pentru fiecare săptămână. Ajutaţi-i  să  realizeze un program prin care se introduc n date de forma titlu melodie, interpret, număr puncte acumulate, număr puncte primite şi care afişează primele 10 titluri, în ordinea descrescătoare a punctelor.

  • Dintr-un lot de n persoane care s-au înregistrat cu nume şi data naşterii, trebuie selectate acele persoane care au împlinit 18 ani la 1 ianuarie 2006. Datele de intrare cuprind valoarea lui n şi cele n perechi de date de forma nume yy mm dd  şi sunt conţinute de fişierul date.int, iar datele de ieşire conţin numele cerute afişate pe verticală pe ecran.
  • La o staţie meteo se trec datele în fişierul temp.int sub forma data temperatura. Să se prelucreze aceste date afişându-se zilele în care temperatura a fost maximă.
  • Într-o clasă de maxim 25 de elevi, fiecare a primit câte unul din calificativele suficient, bine şi foarte bine la fiecare din cele 10 materii. Datele se introduc în calculator sub forma: nume elev număr de calificative suficient     număr de calificative bine     număr de calificative foarte bine. Să se afişeze în ordine descrescătoare statistica notării (numărul de suficient, de bine şi foarte bine) şi numele elevului cu cele mai multe calificative fb.

 

Stive, liste, cozi alocate static

 

  • Se consideră o stivă iniţial vidă, care poate conţine litere. Ilustraţi printr-un program efectul următoarelor operaţii: inserează R, inserează A, inserează M, inserează A, extrage un element, extrage un element, inserează V.
  • Se consideră coada … P A S C A L ,,, (P reprezintă începutul iar L sfârşitul cozii). Ilustraţi efectul următoarelor operaţii: extrage un element, extrage un element, inserează C, extrage un element, inserează U, inserează L.
Linie de ieşire
Linie de intrare
Depou
  • Se consideră următorul sistem de manevrare a vagoanelor într-un depou. Din dreapta, intră în depou n vagoane numerotate de la 1 la n, în ordinea crescătoare a numerelor. Construiţi un tren cu vagoanele numerotate în ordine descrescătoare, de la n la 1.

 

 

 

  • În condiţiile problemei precedente, dorim să construim un tren special: vagoanele cu număr pa rvor merge la un moment dat în altă direcţie decât cele impare, din acest motiv toate vagoanele cu număr par trebuie să fie plasate la începutul trenului în ordinea crescătoare a numerelor lor, iar cele cu număr impar la sfârşitul trenului, în ordinea descrescătoare a numerelor lor. Cum procedaţi?
  • Se citeşte de pe o linie de la tastatură o succesiune de paranteze rotunde deschise şi închise până la întâlnirea caracterului punct. Întâlnirea unei paranteze deschise determină introducerea acesteia într-o coadă. Întâlnirea uneia închise determină extragerea unui element din coadă- Verificaţi dacă parantezele din şir se închid corect şi determinaţi dimensiunea maximă a cozii (numărul maxim de paranteze deschise în coadă la un moment dat). Exemple: Date de intrare: (()). Date de ieşire: corect dim max=2; date de intrare (((). Date de ieşire: incorect dim max=3; date de intrare: ()). Date de ieşire: incorect dim max=1.
  • Se consideră un caroiaj dreptunghiular cu n linii şi m coloane, în care pe anumite poziţii sunt plasate obstacole. În poziţia iniţială (x0,y0) se află plasat un mobil. Să se determine, pentru toate poziţiile în care ajunge mobilul, distanţa minimă de la poziţia iniţială a mobilului măsurată în deplasări elementare (o deplasare elementară este o deplasare cu o poziţie la stânga, la dreapta, sus sau jos). Exemplu: Date de intrare: m=5 n=5 x0=3 y0=3 pozitie obstacole 1 2        Date de ieşire:   -2  -1  -1  5  4    unde -1=obstacol, -2=inaccesibil                                                 1 3                                -1   2   1  -1 3                                                                                                          2 4                                2   1   0   1  2                                                                                                         4 3                                3   2  -1  -1  3                                                                                                         4 4                                4   3   4   5  4                                                                                                         2 1

 

 

 

 

X.            Alţi algoritmi de lucru cu date structurate

 

Interclasarea

 

  • Se cere să se interclaseze două şiruri de numere reale, ordonate crescător. Prin interclasare se înţelege crearea unui nou şir ordonat , format din elementele şirurilor date. Exemplu: Date de intrare: nr. elemente din primul sir=3, primul sir=3 6 9, nr. elemente din al doilea sir=4, al doilea sir=1 2 5 9. Date de iesire: 1 2 3 5 6 9.
  • Pe două rafturi din bibliotecă aveţi mai multe cărţi. Se cunoaşte inăltimea în cm a fiecărei cărţi şi faptul că, pe fiecare raft, cărţile sunt aranjate de la stânga la dreapta în ordine descrescătoare a înălţimii. Mutaţi toate cărţile pe un al treilea raft pe care să fie ordonate tot descrescător. Afişati înălţimile cărţilor de pe acest al treilea raft. Exemplu: Date de intrare: numar carti pe primul raft: 5 inaltimi: 18 18 17 15 15 numar carti pe al doilea raft: 3 inaltimi: 15  14  12 Date de ieşire: 18 18 17 15 15 15 14 12.

 

Parcurgere circulară a unui şir

 

  • Numerele de la 1 la n sunt aşezate în ordine crescătoare pe circumferinţa unui cerc astfel că n ajunge situat lângă 1. Începând cu numărul s se marchează numerele din k în k, în ordinea crescătoare a lor, până când un număr este marcat de 2 ori. Câte numere au rămas nemarcate?
  • Oaza Lacotrop din deşertul Etpas este înconjurată de n portocali care conţin fructe, dispuşi sub formă de cerc şi numerotaţi de la 1 la n, în sensul acelor de ceas. Maimuţa Gino porneşte de la un portocal m şi numără, în sensul acelor de ceas, k portocali care conţin fructe. Culege toate fructele din portocaul de pe poziţia k. Continuă numărătoarea începând cu portocalul următor celui din care a cules, dar care conţine fructe. În final rămâne un singur portocal p necules, în care Gino îşi face adăpost. Cerinţă: Cu ce portocal m trebuie să înceapă numărătoarea pentru ca să-şi facă adăpost exact în portocalul p?. Date de intrare: fişierul portocal.in conţine pe o singură linie, numerele n, k şi p, separate printr-un spaţiu. Date de ieşire: fişierul portocal.out conţine pe prima linie numărul natural m cerut. Restricţii: 2<=n<=1000, 1<=k<=10000, 1<=p<=1000. Exemplu: portocal.in 6  8  5  out  3.                (ONI, Focşani, clasa a VII-a, 2003)

3)  Jocul “Nu te supăra, frate!” se joacă de către doi jucatori. Pe o pistă circulară cu n căsuţe numerotate de la 1 la  n, în ordinea dată de sensul acelor de ceasornic, se află înscrise valorile 0, 1 şi 10. Cei doi jucători vor avea fiecare câte un pion şi vor porni pe rând, din căsuţa 1. Începe jucătorul 1. Fiecare jucător va muta pionul său conform cu valoarea obţinută prin aruncarea zarului, cumulând sau pierzând puncte în funcţie de căsuţa în care ajunge. Fiecare jucător citeşte valoarea zarului când îi vine râdul.

Jocul are urmatoarele reguli:

  1. Câştigătorul poate fi:
  • jucătorul care ajunge primul din nou în căsuţa cu numărul 1, indiferent de punctaj (exceptând cazul în care are punctaj 0)
  • în cazul în care se termină şirul aruncărilor cu zarul, înseamnă că jucătorii s-au plictisit şi câştigă cel care a cumulat mai multe puncte, iar dacă au punctaje egale câştigă cel care se află în căsuţa cu număr de ordine mai mare.
  1. După aruncarea zarului, jucătorul mută pionul cu atâtea căsuţe cât indică valoarea zarului, în ordinea acelor de ceasornic, începând numărătoarea cu căsuţa următoare poziţiei pe care se află. Prima căsuţă nu conţine valoarea 0 (zero).
  2. După mutare pot apare următoarele situaţii:
  • ajunge într-o căsuţă cu valoarea 0 (zero) – jucătorul este penalizat, pierde toate punctele acumulate şi reia jocul din pozitia 1
  • ajunge într-o căsuţă cu valoarea 10 – primeşte un bonus de 10 puncte
  • ajunge într-o căsuţă cu valoarea 1 – primeşte 1 punct
  • ajunge într-o căsuţă în care se află celălalt pion (cu excepţia căsuţei 1, când câştigă) – jucătorul care ajunge ultimul este penalizat, pierde toate punctele şi reia jocul de la căsuţa 1.

Cerinţă Determinaţi jucătorul câştigător, poziţiile fiecărui jucător pe cerc şi punctajul fiecărui jucător.

Date de intrare În fişierul JOC.IN se dau:

–       Pe prima linie numărul n al căsuţelor din cerc.

–       Linia a doua conţine o succesiune de n valori (0, 1 sau 10), separate printr-un spaţiu, reprezentând valoarea fiecărei căsuţe.

–       Linia a treia conţine numărul de aruncări cu zarul

–       Linia a patra conţine o succesiune de valori întregi cuprinse între 1 şi 6, separate printr-un spaţiu, reprezentând aruncarea cu zarul.

      Date de ieşire Fişierul JOC.OUT va conţine 3 linii cu următoarele informaţii:

      – pe prima linie: jucătorul câştigător

– pe a doua linie: poziţia şi punctajul jucătorului numărul 1

– pe a treia linie: poziţia şi punctajul jucătorului numărul 2.

Restricţii 7<=n<=100

      Exemple

JOC.IN JOC.OUT
101 1 1 1 1 10 0 1 1 0

8

3 6 2 4 1 3 5 3

26 10

1 3

JOC.IN JOC.OUT
71 1 0 10 1 10 1

16

6 4 2 4 6 2 1 3 5 6 3 3 2 1 4 5

11 3

1 0

JOC.IN JOC.OUT
121 10 1 1 0 10 1 1 1 10 0 1

4

5 6 3 3

29 11

10 11

(OJI, clasa a VII-a, 2004)

 

Operaţii cu numere mari

 

  • Să se afişeze toate valorile 2n , pentru n cuprins între 31 şi 50.
  • Să se facă un program care să afişeze pe ecran suma a două numere întregi, de maxim 100 de cifre, citite din fişierul termeni.int.
  • Se citesc două numere naturale ca şiruri de caractere, având lungimea maximă de 25. Să se afişeze produsul numerelor sau un mesaj de eroare dacă datele de intrare sunt eronate. Datele de intrare pot fi citite de la tastatură sau din fişierul de tip text INT.INP care conţine două linii, câte un număr pe linie. Datele de ieşire pot fi afişate pe ecran sau scrise în fişierul de tip text IES.OUT, precizându-se produsul obţinut.
    Exemplu: dacă numerele citite sunt: 13478654 54390123  se va afişa produsul 733105648934442.
  • Se citeşte un număr natural foarte mare, de maxim 50 cifre. Verificaţi dacă este palindrom afişând un mesaj corespunzător.

 

Modelarea unor relaţii

 

  • Numim celebritate o persoană care este cunoscută de toată lumea, dar nu cunoaşte pe nimeni. Se pune problema de a identifica o celebritate, dacă există, într-un grup de n persoane pentru care se cunosc relaţiile dintre persoane.
  • Pe o matrice de m linii şi n coloane, fie o populaţie de viruşi care evoluează astfel: un virus moare izolat când are mai puţin de 2 vecini şi sufocat când are mai mult de 3 vecini; un virus apare pe un loc liber dacă are 2 sau 3 vecini; un virus trăieşte 3 generaţii dacă are condiţii prielnice de mediu. Virusul de generaţie i se codifică prin i, cu 1<=i<=3. Inexistenţa virusului se codifică prin 0. Să se afişeze configuraţia populaţiei de viruşi după g generaţii.  Observaţie: un virus poate avea cel mult 4 vecini: N, S, E, V. Datele de intrare se citesc din fişierul virus. inp cu următoarea structură:

m     n     g

a[1,1]  a[1,2] … a[1,n]

a[2,1]  a[2,2] … a[2,n]

………………………………

a[m,1]  a[m,2] … a[m,n]

Datele de ieşire se trec în fişierul virus.out. Exemplu:    

Virus.inp Virus.out
3       3       22   1   0

2   2   3

0   1   3

0   3   00   1   0

2   0   0

 

 

 

 

 

 

(CNI, Piatra Neamţ, clasa a VIII-a, 2001)

3) La un simpozion participă n persoane. Unele persoane cunosc alte persoane din sală, altele nu. Calculatorul care monitorizează reuniunea trebuie să comunice care este cea mai cunoscută persoană. Pentru aceasta persoanele se numerotează de la 1 la n şi se introduc în calculator perechi de forma i, j care semnifică faptul că persoana i cunoaşte persoana j, până la marcajul de sfârşit de fişier.

 

Determinarea unor secvenţe maximale

 

  • Într-un text de maxim 255 caractere, să se afişeze cea mai lungă secvenţă de caractere identice. Dacă sunt mai multe secvenţe, se va afişa prima. Exemplu: text: aabsssdadaaab se va afişa sss.
  • Se consideră un şir de maxim 255 litere c1, c2, …, cn nu neapărat distincte, din alfabetul englez. Cerinţe: a) să se determine poziţia p şi lungimea l a secvenţei maxime formată din litere consecutive egale din şirul dat (1<=p, 1<=n); b) să se determine literele distincte şi frecvenţa lor de apariţie în şirul iniţial; c) din şirul literelor distincte de la punctul b), să se afişeze câte posibilităţi de aranjare a 3 litere diferite sunt. Date de intrare se citesc din fişierul olimp71.inp ce are următoarea structură: n c1 c2    …   Datele de ieşire sw vor afişa pe ecran. Exemplu: olimp71.inp  6 abbacx, se va afişa a) p=2  l=2  b) a  b  c  x   2  2  1  1 c) 24                                                                                     (CNI, Piatra-Neamţ, clasa a VII-a, 2001)

 

Probleme  de  geometrie

 

  • Din fişierul dreptunghi.int se citesc coordonatele capetelor diagonalei unui dreptunghi cu laturile paralele cu axele de coordonate.. Scrieţi în fişierul puncte.out câte puncte de coordonate întregi sunt în interiorul sau pe laturile dreptunghiului. Exemplu:

            fişierul dreptunghi.int:     -2.5   3                          fişierul puncte.out

                                                4    -1.75                                   35

2)  Câte puncte cu coordonate întregi sunt continute într-o sferă de rază R cu centrul în originea sistemului de cooronate?  Se consideră că R este un număr natural, R<=30. Amintim că distanţa dintre un punct cu coordonatele (x,y,z) şi originea sistemului de coordonate se determină după formula d=sqrt(x*x+y*y+z*z). Exemplu: pentru R=4, programul va afişa 257. (ORI, Moldova, clasele VI-IX, 2001)

3)  Se citesc de la tastatură trei numere reale pozitive, care reprezintă lungimile laturilor unui triunghi. Scrieţi un program care să determine aria şi lungimile înălţimilor triunghiului. Specificaţi şi natura acestui triunghi: echilateral, isoscel, dreptunghic, dreptunghic isoscel sau oarecare.

4)  Se dau n puncte în plan p1, p2, …, pn prin coordonatele lor carteziene şi un dreptunghi cu laturile paralele cu axele prin coordonatele colţului din stânga sus şi colţului din dreapta jos. Cerinţă: determinaţi numărul de puncte dintre p1, p2, …, pn care sunt în interiorul dreptunghiului, respectiv numărul de puncte de pe cele două diagonale. Date de intrare: în fişierul puncte.in pe prima linie se află n, pe următoarele n linii coordonatele punctelor p1, p2, …pn separate printr-un spaţiu, iar pe următoarele două linii se află coordonatele colţurilor dreptunghiului. Date de ieşire: în fişierul text puncte.out se vor scrie numerele cerute cu un spaţiu între ele. Restricţii: 0<n<100, coordonatele sunt numere naturale < 3000. Exemplu:

Puncte.in                                               puncte.out

8                                                          5   4

3 4

2 4

5 6

5 1

4 2

0 6

2 2

3 2

1 5

5 1                                                                    (CNI, Satu-Mare, clasa a VIII-a, 2003)

5)  În curtea din spatele casei unui gospodar trãiau nestingherite mai multe familii de furnicuţe, organizate în mai multe muşuroaie. Una dintre furnicuţe îl aude într-o zi pe gospodar spunându-i soţiei sale cã vrea sã amplaseze un obiect chiar în zona în care se aflau muşuroaiele. Furnicuţa le anunţã şi pe celelalte, însã neştiind sã aprecieze exact unde va fi amplasat acel obiect, furnicuţele au nevoie de ajutorul vostru. Dacã aflã care din muşuroaie se aflã în pericol, ele se pot adãposti fãrã grijã în cele care sunt în siguranţã. Cunoscându-se numãrul de puncte (muşuroaie) M, coordonatele x  şi  y ale celor M  puncte prin numãrul vârfurilor poligonului (obiectului) şi coordonatele vârfurilor, determinaţi muşuroaiele care sunt în pericol sã fie distruse de obiectul care va fi amplasat de gospodar. Date de intrare: Fişierul de intrare furnici.in conţine pe prima linie un numãr întreg pozitiv M, care reprezintã numãrul de muşuroaie. Pe urmãtoarele M linii se gãsesc câte douã numere întregi pozitive, separate printr-un singur spaţiu, care reprezintã coordonatele punctelor (muşuroaielor). Urmãtoarea linie conţine un singur numãr întreg pozitiv N care reprezintã numãrul de vârfuri ale poligonului. Cele N linii care urmeazã conţin câte douã numere întregi pozitive, separate prin câte un spaţiu, care reprezintã coordonatele pentru vârfurile poligonului. Poligonul poate fi convex sau concav. Date de ieşire: Fişierul de ieşire furnici.out va conţine M linii. Pe fiecare dintre acestea se va scrie unul dintre mesajele „in siguranta!” sau „in pericol” dacã muşuroaiele de furnici din fişierul de intrare se gãsesc în exteriorul, respectiv în interiorul poligonului. Punctele corespunzãtoare muşuroaielor vor fi tratate în ordinea în care apar în fişierul de intrare. Restricţii şi precizãri: se considerã cã un muşuroi este în pericol atunci când coordonatele sale sunt conţinute în interiorul poligonului sau când muşuroiul se gãseşte pe una dintre laturile acestuia;3 <N <50; 1 <M <100. Exemplu

furnici.outin siguranta!

in pericol!

in siguranta!

in siguranta!

in pericol

 

      furnici.in                                                           

      5

      80 100

      400 170

      230 160

      340 347

      230 350

      6

      100 165

      380 200

      400 140

      520 350

      395 310

      220 360

                                                                                                                     (ginfo ian. 2004)

6) Introduceţi în calculator coordonatele, abscisa şi ordonata, a n puncte astfel încât să nu existe patru puncte coliniare. Determinaţi numărul de paralelograme care se pot forma unind câte patru din aceste puncte.  Datele de intrare se citesc din fişierul puncte.int care va avea pe prima linie numărul n şi pe următoarele n linii coordonatele punctelor separate prin spaţiu. Afişarea rezultatului se va face pe ecran. Exemplu:    

puncte.int pe ecran
72 2

3 3

5 4

1 6

8 2

7 1

6 5

6

 

 

 

 

 

 

 

 

 

 

  • Se dau n puncte în plan prin coordonatele lor (numere naturale mai mici sau egale cu 50). Să se determine centrul şi raza unui cerc care să conţină toate punctele date în interior sau pe circumferinţă, având centrul în unul din punctele introduse.
  • Să se calculeze aria unui poligon convex A1, A2,…, An (3<=n<=100) dat prin coordonatele vârfurilor sale, numere naturale mai mici decât 50. Indicaţie: se va descompune poligonul in triunghiuri de forma A1AiAi+1.
  • Se dau n, n>=3, puncte în plan prin coordonatele lor numere întregi din intervalul [0,500]. Să se afişeze numărul de triunghiuri isoscele care se pot forma unind câte trei din cele n puncte.
  • Se dau n, n>=3, puncte ]n plan prin coordonatele lor, numere întregi mai mici decât 50. Să se afişeze tripletele de coordonate ale punctelor care determină triunghiuri de arie maximă.
  • Se dau n, n >=4, puncte în plan prin coordonatele şi culoarea lor (numere naturale mai mici sau egale cu 50). Să se afişeze coordonatele vârfurilor dreptunghiurilor cu laturile paralele cu axele ale căror vârfuri au aceeaşi culoare.
  • Se dă un dreptunghi prin coordonatele vârfurilor sus-stânga şi jos-dreapta, şi n puncte în plan prin coordonatele lor numere naturale mai mici decât 500. Se cere să se determine numărul de puncte care se află în interiorul dreptunghiului, pe dreptunghi şi în exteriorul lui.

XI.          Utilizarea subprogramelor

 

Proceduri

 

1)   Pentru citirea a n date de forma nume elev, nota1, nota2, nota3 şi pentru calculul mediei fiecărui elev,  să se scrie procedura Citire. Să se realizeze următorul cap de tabel într-o procedură Tabel:                                 ***************************                                                                                                 *   Nume elev    *  Medie          *                                                                                                          ***************************                                                                                           şi să se afişeze rezultate printr-o procedură Scriere. Să se modifice procedura Tabel astfel încât să permită realizarea capului de tabel utilizând în locul * un alt caracter, citit de la tastatură în programul principal.

  • Să se ordoneze crescător şirul format din n nume de elevi folosind o procedură cu doi parametrii, de interschimbare a valorilor.
  • Să se listeze primele n numere prime, verificând calitatea de prim a unui număr într-o procedură cu un parametru.
  • Se introduc numărătorul şi numitorul a două fracţii. Să se afişeze cele două fracţii şi suma lor sub forma ireductibilă. Se va folosi o procedură cu doi parametrii, de simplificare a unei fracţii.
  • Se introduc n date de forma nume elev, punctaj. Uilizând procedura Meniu să se afişeze un meniu de forma Afisare in ordine alfabetica
  1. Afisare in ordinea descrescatoare a punctajelor

prin care utilizatorul poate alege modul de vizualizare al datelor introduse. Afişarea datelor şi sortarea lor se va face prin procedurile Afisare şi Sortare.

  • Se introduc două numere întregi. Să se afişeze în câte zerouri se termină produsul lor, fără a calcula produsul. Se va ţine seama că un zero la sfârşit se obţine înmulţind un 2 cu un 5 în descompunere celor două numere în factori primi. Se va crea o procedură cu doi parametrii, de determinare a exponentului la care apare un număr prim în descompunerea în factori primi a unui număr.
  • Se introduc două numere n şi k. Utilizând o procedură de calculul puterii unui număr, să se afişeze n la puterea k.

 

Funcţii

 

1)   Să se verifice dacă numele a k elevi se află într-un şir de n nume, utilizînd o funcţie Cautare.

2)   Citiţi un şir de n numere întregi şi afişaţi cea mai mare cifră a numerelor de pe poziţii pare şi cea mai mică cifră a celor de pe poziţii impare. Se va realiza câte o funcţie pentru determinarea cifrei maximale şi a celei minimale.  

XII.        Fişiere tip text

 

1)   Să se determine şi să se afişeze numărul de linii dintr-un fişier tip text şi numărul de caractere de pe fiecare linie.

2)   Să se verifice dacă într-un fişier tip text sunt linii „albe”, care conţin numai caracterele spaţiu şi TAB

3)   Să se afişeze pe ecran un fişier text, linie cu linie.

4)  Să se transfere conţinutul unui fişier tip text într-un alt fişier tip text, sub aceeaşi formă.

  • Să se facă un top al melodiilor (vezi problema 1 din Capitolul IX, Tipul înregistrare) utilizănd un fişier pentru citirea titlului, a interpretului şi a punctajului acumulat. Punctajul săptămânal obţinut se va citi de la tastatură. Afişarea topului se va face pe ecran. Se va actualiza câmpul puntaj acumulat din fişierul de intrare.

XIII.      Pregătire pentru faza naţională a ONI şi CNI

 

Clasa a V-a

 

  • În Orintia, există o floare care face strict x seminţe . Fiecare sămânţă este fertilă şi în decurs de un an, din ea se dezvoltă câte o floare care va  face alte x seminţe fertile. După k ani, florile orintiene dispar, dar rămân urmaşele lor. Grădinarul Perolino, pe care îl interesează câte flori vor fi în grădina lui după z ani, ştiind că în primul an au fost f flori de tipul amintit, vă roagă să îl ajutaţi la numărarea florilor. Date de intrare           f: numărul iniţial de flori                                                                                                                                            x : numărul de seminţe produse de fiecare floare                                                                                            k : durata de viaţă a unei flori                                                                                                                       z : anul în care grădinarul face recensământul                                                                                     Date de ieşire : t : numărul de flori aflate în grădină la sfârşitul anului z. Restricţii:1<=f<=10, 1<=x<=6, 1<=k<=5, 1<z<5. Exemplu: Intrări f=1  x=2  k=3  z=3  Ieşire  8 flori.

Explicaţie:          anul 1  1 floare 2 seminţe                                                                                                                            anul 2   3 flori    6 seminţe                                                                                                                            anul 3   8 flori    (3 + 6 – 1)                               (CNI, clasa a V-a, Satu-Mare, 2004)

  • Nicu are N dischete cu aceeaşi capacitate 1400 Ko. Dischetele sunt numerotate cu 1, 2, …, N şi pe fiecare dischetă are o porţiune din ea ocupată cu diverse fişiere. Dischetele 1, 2, …, N au ocupate o1, o2, …, oN Ko fiecare. Nicu află că prietenul său George are un joc frumos de dimensiune x Ko. După multe negocieri cu George, Nicu are acceptul de a copia jocul.
  • Afişaţi primele două numere prime alăturate dintre cele n numere întregi date.

      Cerinţă: Din cele N dischete alegeţi cât mai puţine pentru a copia jocul (dacă este posibil). Când nu este posibil afişaţi mesajul Nu se poate copia jocul!                                (CNI Satu-Mare 2003 clasa a V-a)

Când acestea nu există, afişaţi mesajul:   fără soluţie ( n<= 20). Exemplu:

Pentru  n=7 şi numerele   1   18   41   13   9   7   5     se va afişa perechea   41  13

pentru n=6 şi numerele   2   8   7   2   5   4    se va afişa perechea   7   2

pentru n=5 şi numerele   4   12    8   5   4      se va afişa mesajul      fără soluţie

(CNI Satu-Mare 2002 clasa a V-a)

  • Pentru un n natural dat, sa se determine toate numerele prime mai mici sau egale cu n pentru care oglinditul corespunzător este tot un număr prim (n<100). Exemplu: n=20, printre numerele găsite sunt şi 13, cu oglinditul 31, şi 17, cu oglinditul 71. (CNI Piatra-Neamţ 2001, clasa a V-a)
  • Un schior îşi doreşte un traseu care să conţină cel puţin un pisc (vârf) şi cel puţin o vale. Dacă traseul este caracterizat (ca altitudini relative) de cifrele componente ale unui număr dat, ajutaţi-l să stabilească dacă îl parcurge sau nu. Exemplu: traseul 5745 poate fi parcurs, traseele 123 şi 68556 nu pot fi parcurse.                                                                   (CNI Piatra-Neamţ 2001, clasa a V-a)
  • Se consideră un şir cu n numere naturale mai mici decât 32000, n < 30. Se cere: a) să se afişeze un număr din şir care are în scrierea sa cât mai multe cifre distincte. Dacă există mai multe numere cu această proprietate se va afişa primul element dintre ele. b) să se determine o succesiune cu număr maxim de componente din şir care are proprietatea că fiecare componentă a succesiunii are acelaşi număr de cifre distincte în scrierea sa.     Exemplu: pentru n=9 şi şirul 865, 15, 144, 231, 1591, 1998, 6235, 14, 4201se va afişa a) 6235  b) 231  1591   1998                                                                            (CNI 1998 clasa a V-a)
  • Se citesc n, număr natural mai mic decât 100, şi n numere naturale nenule mai mici decât 30000. Se cer: a) ultima cifră a numărului x[1]+x[2]+…x[n] b) ultima cifră a numărului x[1] x[2]+x[3]+…x[n]  Exemplu: pentru n=3 şi numerele 11  4  3  se va afişa a)  8    b)  1                                    (CNI 1998 clasa a V-a)
  • Se dau patru numere naturale a, b, c, d. Să se afişeze sub formă de fracţie ireductibilă cea mai mică fracţie subunitară şi cea mai mică fracţie supraunitară folosind cele patru numere. Exemplu: pentru a=2 b=5 c=6 d=16 se vor afişa fracţiile 1/8  şi  6/5                                                 (CNI Sinaia 1997 clasa a V-a)
  • Se consideră n stâlpi de înălţimi h[1], h[2], h[3]… h[n] metri. La baza fiecărui stâlp se află câte un melc codificat prin numărul stâlpului. Fiecare melc i urcă ziua p[i] metri şi coboară noaptea q[i] metri (p[i]>=q[i]). Să se afişeze melcii în ordinea în care ating vârfurile stâlpilor. Exemplu: pentru n=3 şi h[1]=2 p[1]=1 q[1]=0, h[2]=4 p[2]=4 q[2]=4, h[3]=5 p[3]=1 q[3]=0 se va afişa 2 1                          (CNI Sinaia 1997 clasa a V-a)
  • Fie A un şir de n numere naturale, 8<=n<=256, şi p un număr natural dat. a) să se precizeze dacă p este număr prim b) să se afişeze de câte ori apare p în A şi pe ce poziţii      c) dacă numărul p nu apare în A, să se însereze numărul p pe o poziţie k,  1<=k<=n, unde k este dat de la tastatură, deplasând spre dreapta elementele aflate pe poziţiile k+j, 0<=j<=n-k+1.                                               (CNI Buşteni 1994 clasa a V-a)
  • De la tastatură se citesc n elemente ale unui şir de numere. Să se scrie un program care interschimbă două secvenţe de lungimi l1 şi l2 care încep din poziţiile p1, reapectiv p2. Elementele care nu sunt cuprinse în cele două secvenţe pot fi mutate astfel încât interschimbarea să se poată face. Exemplu: pentru n=9, şirul 1,2,3,4,5,6,7,8,9, p1=2 l1=2 p2=6 l2=3, rezultatul este 1 6 7 8 4 5 2 3 9. (CNI Năvodari 1993 clasa a V-a)
  • Dându-se două numere n, k să se determine 2*k numere prime situate în centrul listei numerelor prime din intervalul [1,n], în cazul în care în interval este un număr par de numere prime, şi 2*k-1 numere din centrul listei de numere prime, în cazul în care numărul de numere prime este impar. Dacă numărul 2*k ( resp. 2*k-1) este mai mare decât numărul de numere prime din intervalul considerat, atunci se vor afişa toate numerele prime din interval. Restricţii: 1<=n<=10000, 1<=k<=30, k<n. Exemplu: n=21 k=2 se va afisa    5  7  11  13                                                                                                        ( ONI, clasa a V-a, Focşani, 2003)
  • În fiecare zi nelucrătoare din săptămână Pinochio spune câte o minciună datorită căreia nasul acestuia creşte cu câte p cm pe zi. Sâmbăta şi duminica, când vine bunicul Gepeto acasă, pentru a nu-l supăra prea tare, Pinochio reuşeşte să nu spună nici o minciună, ba chiar uitându-se în oglindă observă că în fiecare din aceste zile lungimea nasului său scade cu câte 1 cm pe zi. Când începe o nouă săptămână, rămânând singur acasă Pinochio continuă şirul minciunilor. Care este dimensiunea nasului lui Pinochio după k zile (zilele încep cu luni ) ştiind că iniţial nasul său măsura n cm? Exemplu: pentru n=2 p=1 k=8 se va afişa 6 cm.                                                                                     (ONI 2003 clasa a V-a)
  • Gigel este un tip ciudat. Lui îi place să îşi impresioneze colegii exprimând duratele numai în secunde. De exemplu, dacă îl vei întreba cât e ceasul el îţi va răspunde câte secunde s-au scurs de la ora 0.00 din ziua respectivă. Dacă ai să-l întrebi ce vârstă are, el îţi va răspunde câte secunde au trecut de când s-a născut.

Colegii lui Gigel au hotărât că nu e cazul să se lase impresionaţi; ca urmare au nevoie de un program care să citească de la tastatură un număr natural N (N£2000000000) care reprezintă vârsta lui Gigel exprimată în secunde şi care va afişa pe ecran câţi ani, câte luni şi câte zile are Gigel (orele şi minutele rămase sunt considerate nesemnificative). Scrieţi acest program pentru colegii lui Gigel!

Nu uitaţi că anii bisecţi sunt cei divizibili cu 4, dar nedivizibili cu 100 sau divizibili cu 400. De exemplu 1992 şi 2000 au fost ani bisecţi. Dar anul 1900 nu a fost bisect. Anii bisecţi au 366 de zile, spre deosebire de ceilalţi care au doar 365. Considerăm că ne aflăm în ultima zi de şcoală (15 iunie 2002).

            Exemplu :Pentru N=69206400 programul va afişa :Gigel are 2 ani, 2 luni si  10 zile.

(ONI Gălăciuc 2002 clasa a V-a)

  • Fie un număr p (1£p£4) dat de la tastatură. Să se scrie pe ecran toate numerele n de p cifre cu proprietîţile următoare: 1) n-1 şi n+1 sunt numere prime 2)  suma cifrelor lui n este tot un număr prim.  De exemplu, pentru p=2, numărul n=12 face parte din soluţie deoarece n-1=11, n+1=13 sunt prime iar suma cifrelor lui n este 1+2=3, tot un numar prim. Dacă nu există nici un număr n cu p cifre care să verifice aceste proprietăţi, se va da un mesaj.                                                                             (Marele Premiu PACO, 2001)

16)  Copa bate la poarta Orintiei, dar poarta e programată să nu se deschidă decât după ce se introduc, într-o casetă cu s spaţii (3<=s<=10), s cifre strigate de portar. Portarul a strigat “1”, Copa a butonat 1, în primul spaţiu de la stânga la dreapta. Portarul a strigat “0”, şi în timp ce Copa butona 0 în spaţiul al doilea, 1 a devenit 2 în spaţiul anterior. Portarul a strigat “7”. Copa scria 7 în spaţiul al treilea, iar în primul spaţiu 2 devine 3, iar în al doilea spaţiu 0 devine 1. Şi tot aşa, până la al s-lea spaţiu, când Copa reuşeşte să scrie toate cifrele şi apare tot codul. Şi poarta se deschide, dar …  surpriză, mai era o poartă, iar codul acesteia, N, era cel mai mic număr format din cât mai multe dintre cifrele codului anterior, astfel încât nici o cifră să nu se repete. Obs.: După 9 urmează 0. Disperat de atâta informatizare, Copa vă cere sprijinul să calculaţi cel de-al doilea cod N. Exemplu: Date de intrare  s=10     cifre strigate de portar: 1  0  7  9  7  3  6  9  4  6  Date de ieşire    102456789                                                                          (ONI Focşani 2003 clasa a V-a )

 

Clasa a VI-a

 

1)  Doi copii vopsesc un gard din scânduri pe care le vom numerota de la 1 la n astfel: primul ia o cutie de vopsea roşie cu care vopseşte scândurile cu numărul p, 2p, 3p, etc. Al doilea procedează la fel, începe de la acelaşi capăt al gardului dar ia o cutie de vopsea albastră şi vopseşte din q în q scânduri. Astfel, când vor termina de vopsit, gardul va avea multe scânduri nevopsite, unele scânduri vopsite în roşu, altele în albastru, iar altele în violet. Cunoscând numerele n, p şi q afişaţi: a) câte scânduri rămân nevopsite b) câte scânduri sunt vopsite în roşu c) câte scânduri sunt vopsite în albastru d) câte scânduri sunt vopsite în violet

(ONI  2002 clasa a VI-a)

2)  Se dă un vector cu n (1£n£30) elemente numere naturale, cu maxim 8 cifre. Se cere: a) Să se afişeze câte elemente din vector sunt valori-pantă (numere care privite de la stânga sau de la dreapta au cifrele în ordine crescătoare, de exemplu 136, 931).

  1. b) Să se afişeze cea mai mare şi cea mai mică valoare-pantă şi poziţiile pe care se află acestea în vector. Exemplu: Dacă se citeşte n=6 şi elementele 126  9621  1212  3678  9231  9621 , programul va afişa: numar valori-panta= 4          cea mai mare valoare-panta=9621 pe pozitiile  2  6     cea mai mica valoare-panta=126 pe pozitiile 1.                                                                                   (ONI 2003 clasa VI-a)

3)   Fratele cel mic al lui Gigel primise de la Moş Crăciun un joc de cuburi colorate. Gigel l-ar fi însoţit pe cel mic la joc, mai ales când acesta înşira cele n cuburi unul după altul, iar lui îi treceau prin cap tot felul de cerinţe pe care profesorul lui de informatică le-ar fi putut scorni: a. să vedem câte culori sunt în total; b. care culoare este folosită pentru cele mai multe cuburi; c. ce cub ar trebui scos din şir astfel încât să se formeze din cuburile rămase un şir cât mai lung de cuburi alăturate de aceeaşi culoare.

Se citesc de la tastatură n, numărul de cuburi, n<50, şi o succesiune de n numere de culori, de la 1 la 10. Dacă la cerinţele a, b, c sunt mai multe soluţii, se vor preciza toate. Exemplu: n=15  culorile  5 2 5 2 2 3 3 2 3 5 3 3 3 2 2 se va afişa a. 3   b. 2   3   c. Pozitia 10.                               (ONI Focşani 2003 clasa a VI-a)

4)     Profesorul de sport al clasei a VI-a B de la o şcoală din Focşani vrea la începutul orei să aşeze elevii pe terenul de sport, la raport, într-o anumită ordine. Pentru acest lucru, elevii sunt bine instruiţi,  astfel încât, aşezând pe ultimul rând n elevi, celelalte rânduri de elevi se creează singure după regula: – pe poziţia i a unui rând se va aşeza un elev, după cum urmează: dacă pe rândul din spate, pe poziţiile i şi i+1 stau fie numai băieţi, fie numai fete, atunci se va aşeza o fată, iar dacă pe aceste poziţii stau elevi de sex opus, se va aşeza un băiat.

Conform acestei reguli, pe rândul cu numărul de ordine i (iÎ{1, 2, …, n}) se vor aşeza i elevi. Numărul de elevi din clasă este n(n+1)/2.

Cerinţă: Pentru n dat şi un şir de n numere 0 şi 1 (0 reprezintă codificarea pentru o fată, iar 1 pentru un băiat), care reprezintă şirul de elevi de pe ultimul rând, se cere să se determine numărul de băieţi din clasă.

Date de intrare: De la tastatură se citesc datele de pe două linii: pe prima linie n, pe linia a doua un şir de n numere 0 şi 1, separate printr-un spaţiu ce reprezintă şirul de elevi de pe ultimul rând. Date de ieşire: Pe ecran se va afişa numărul de băieţi din clasă.  Restricţii: 1£ n £20.

      Exemplu: Pentru datele de intrare: 5     1 0 0 1 1  se va afişa: 8                       (ONI Focşani 2003 clasa a VI-a)

5)   Gigel a primit spre păstrare un set de n cutii de greutăţi nu neapărat distincte. El a cântărit cutiile şi pentru fiecare greutate distinctă a notat pe o foaie, în ordine crescătoare a greutăţilor, numărul de cutii cu greutatea respectivă.

Deoarece fratele său mai mic avea prostul obicei să se joace cu numerele scrise de el pe foaie, Gigel s-a gândit să calculeze un „număr de control” după următorul algoritm: începând de la primul număr a grupat numerele de apariţii ale greutăţilor câte trei (dacă îi rămân numere negrupate la sfârşit, le ignoră). Dacă într-un grup sunt numai numere pare sau numai impare notează grupul cu cifra 1, altfel îl notează cu cifra 0. Din şirul astfel obţinut, se  formează un număr care are ca valoare cifra zecilor egală cu numărul de valori 1 şi cifra unităţilor egală cu numărul de valori 0, obţinându-se astfel „numărul de control”.

      Cerinţă: Citind greutăţile cutiilor, să se determine „numărul de control” şi să se verifice dacă este număr prim. Date de intrare: Se citeşte de la tastatură numărul n urmat de greutăţile cutiilor. Date de ieşire:Se va scrie pe ecran „numărul de control”, urmat de valoarea 0 sau 1 pe linia următoare. Pe următoarea linie se va afişa 1 dacă numărul este prim, respectiv 0 în caz contrar.

      Restricţii:1 £ n £ 100. Fiecare greutate este un număr natural, mai mic sau egal cu 200

      Exemplu: Date de intrare n=21   1 3 2 6 2 6 2 8 9 8 8 9 10 8 11 18 11 12  14 15 17

Date de ieşire  31  1. Explicaţie: După ordonare se obţine şirul: 1 2 2 2 3 6 6 8 8 8 8 9 9 10 11 11 12 14 15 1 18

. Se obţine apoi: 1 3 1 2 4 2 1 2 1 1 1 1 1 care grupate cate trei dau valorile 1 1 0 1, din care se obţine numărul de control 31, care este număr prim.                                                            (OJI 2004 clasa a VI-a)

6)   Vânătorul şef al regelui Arthur a primit însărcinare să vâneze primele raţe ce se întorc din ţările calde. Regele fiind un tip cu idei fixe, i-a cerut vânătorului să vâneze raţele albe cu săgeţi albe, iar raţele negre cu săgeţi negre. Raţele vin în rânduri (stoluri) din ce în ce mai mari: mai întâi una, apoi două, trei, cinci, opt, treisprezece, ş.a.m.d. Se observă că numărul de raţe dintr-un rând este egal cu numărul de raţe de pe cele două rânduri anterioare. Raţele fiind nişte creaturi ordonate zboară în rânduri, în care nu vei putea găsi două raţe de aceeaşi culoare alăturate, fiecare rând începând cu o raţă albă.

Vânătorul  ştie că dacă a început să doboare o raţă, trebuie să le doboare pe toate de pe rândul acesteia, deoarece supravieţuitoarele vor alerta celelalte raţe şi ele nu se vor mai întoarce niciodată, iar vânătorul nostru îşi va pierde slujba.Cerinţă: Ştiind că vânătorul a primit ka săgeţi albe şi kb săgeţi negre, trebuie să determinaţi câte rânduri de raţe a doborât şi câte săgeţi de fiecare tip i-au rămas, ştiind că el vrea să-şi păstreze slujba. Date de intrare: Se citesc de la tastatură numerele ka şi kb (în această ordine). Date de ieşire: Se va afişa pe ecran:

– numărul de rânduri doborâte

– numărul de săgeţi albe rămase

– numărul de săgeţi negre rămase.

Restricţii: 0≤ka, kb≤2.000.000.000  Exemplu: Pentru ka=9 şi kb=10  Se va afişa:  4   2   6. Explicaţie: Pentru exemplu avem rândurile (A- raţă albă, N- raţă neagră) de raţe:

A

A N

A N A

A N A N A                                                                                                    (CJI 2004 clasa a VI-a)

7)   Să se genereze două şiruri A şi B de numere naturale, elementele lui A să fie cuprinse între 0 şi 99, iar ale lui B între 1 şi 999. Cele două şiruri au acelaşi număr de elemente, specificat de la tastatură. Să se genereze un şir C după următoarea regulă: C[i]=A[i]-B[i], dacă A[i] este par şi B[i] impar, C[i]=A[i]+B[i], dacă A[i] este impar şi B[i] par, C[i]=A[i]*B[i], dacă A[i] şi B[i] sunt ambele fie pare, fie impare. Să se afişeze câte patru elemente pe un rând, elementele şirului A, ale şirului B şi apoi ale lui C.                                   (CNI 1987 clasa a VI-a)

8)   O şcoală are maxim 7 serii de clase a VI-a, notate A, B, C, D, E, F. Să se scrie un program care să genereze o planificare a întâlnirilor sportive între aceste clase, astfel încât fiecare să se întâlnească o singură dată cu altă clasă. Întâlnirile au loc zilnic, câte una în fiecare zi, cu excepţia duminicilor. Programarea întâlnirilor începe cu ziua de miercuri, 1 iunie 1988 şi arată astfel:

miercuri      1 iunie               VI A – VI B

joi               2 iunie               VI A – VI C

……………………………………………                                                                           (CNI 1988 clasa a VI-a)

9)   Se dă un vector de numere naturale mai mici decât 101 şi un număr natural a. Să se însereze între două componente vecine, a căror diferenţă în valoare absolută este mai mare sau egală cu a, media lor aritmetică, pentru ca în final să rezulte un vector în care diferenţa absolută dintre două elemente este mai mică decât a.                                                                                                         (CNI Năvodari 1989 clasa a VII-a)

10)       Fie un şir de n fracţii (1£n£5) de forma a[i]/b[i], 1£i£n) cu 0£a[i]£255, 1£b[i]£8.

  1. Să se simplifice fracţia de pe poziţia k, k dat de la tastatură.
  2. Să se calculeze suma fracţiilor având ca rezultat fracţia ireductibilă p/q.
  3. Să se calculeze cât la sută reprezintă numărul q din suma p+q (CNI Buşteni 1994 clasa a VI-a)

11) Pe o tijă se află n discuri având diametre diferite, 1<= n<=100. Se cere aranjarea lor în ordinea descrescătoare a diametrelor  de jos în sus. În scopul aranjării în ordinea cerută se poate efectua un singur tip de operaţie: cu ajutorul unei cleme se prind un număr oarecare k de discuri,2<k, începând cu cel mai de sus se scot de pe tijă şi se întorc, introducându-le din nou pe tijă. Date de intrare: n= numar discuri, a1,a2..,an=diametrele discurilor,1<=ai<=999. Date de ieşire: fiecare schimbare constă din două linii de forma  k=numărul discurilor prinse şi x1,x2,…,xn=noua configuraţie a tijei. Exemplu: n=5  diametrele 5  3  2  1  4  se va afişa k=4    5 4 1 2 3      k=3   5 4 3 2 1.                                                            (CNI Sinaia 1996 clasa a VI-a)

12) Se consideră un număr n de copii care poartă tricouri de baschet ce au pe spate imprimate un număr de la 1 la n. Ei joacă următorul joc: se aşează pe un cerc într-o ordine oarecare toţi cei n copii; profesorul, pornind de la un elev începe să numere k elevi, cel de-al k-lea fiind eliminat din cerc; de la următorul după cel eliminat continuă numărătoarea până la k, eliminându-l pe cel la care s-a oprit numărătoarea, ş.a.m.d.

Cunoscându-se numerele n şi k (n,k<=50), să se determineordinea în care se aflau iniţial dispuşi copiii pe cerc, astfel încât aceştia să fie eliminaţi în ordinea 1,2,…,n. Se va afişa pe o linie numărul de ordine al jucătorilor situaţi iniţial pe cerc începând cu numărul 1. Exemplu: date de intrare: n=5 k=2  Date de ieşire: 1  5  2  4  3.                                                                                           (CNI Sinaia 1997 clasa a VI-a)

13) În vacanţă Gigel a uitat tehnica de înmulţire a două numere. Ca să-l ajute, bunica l-a învăţat o metodă veche: Dacă a şi b sunt cele două numere care trebuie înmulţite, le vom scrie unul lângă altul şi vom forma sub fiecare câte o coloană conform următoarelor reguli:                                                                                     1) sub a se acrie partea întreagă a lui a/2, iar sub b se scrie 2*b                                                                2) se aplică pasul 1) până când numărul de pe coloana lui a este 1                                                                     3) produsul se obţine adunând numerele din coloana lui b care corespund, pe linie, unor numere impare din coloana lui a. Exemplu: a=45, b=19,

a          b          produs                                                                                                                                      45      19         19+                                                                                                                                         22         38                                                                                                                                                      11         76         76                                                                                                                                          5          152       152                                                                                                                                     2          304                                                                                                                                                 1          608       608                                                                                                                                                             ===                                                                                                                                                          855                                                              (CNI Piatra-Neamţ 2001 clasa a VI-a)

14) Nicu merge la Metro să-şi cumpere rechizite şcolare. Pe fiecare obiect cumpărat se află un cod de produs alcătuit din cel mult 10 liniuţe verticale. Pentru fiecare cod Nicu asociază un număr de cod astfel: pentru fiecare liniuţă asociază o cifră, lungimea liniuţei. În acest mod fiecare obiect are asociat un număr natural. Cerinţă: Pentru cele n obiecte cumpărate şi date prin numărul de cod se cere să se afişeze câte numere palindroame există cu proprietăţile: sunt mai mici strict decât cel mai mare număr de cod, nu sunt printre numerele de cod date. Restricţii: 0<n<26, cel mai mare număr de cod este mai mic decât 3001. Exemplu: pentru n=7 şi numerele de cod  8  20  22  44  108  55  88  se va afişa 15 (deoarece avem următoarele numere palindroame: 0 1 2 3 4 5 6 7 9 11 33 66 77 99 101).               (CNI Satu-Mare 2003 clasa a VI-a)

15) La concursul Mititelu’ Gates,  pentru buna desfăşurare a competiţiei este necesară  o suma dată S; în acest scop s-a creat o listă de n (n<1000) persoane care pot şi vor să sponsorizere acest eveniment.  Fiecare din cele n persoane a confirmat participarea şi suma oferită. Determinaţi valorile selectate pentru sponsorizarea concursului, ştiind că numărul persoanelor  trebuie să fie minim şi suma totală să acopere cheltuielile.(unitatea de măsură este milionul)

Exemplul 1 : N=8  S=30          2.5    3     2    5     15    7    4   1           Se va afişa: 15   7   5    3

Exemplul 2 : N=7  S=37         5.5  4.5   2   17   2   5.5    10     Se va afişa: 17 10  5.5  4.5

  • Un grup de elevi formează o coloană care are m rânduri, m£15, cu n elevi pe rând, n£ De pe fiecare rând este ales cel mai scund elev, iar dintre aleşi, cel mai înalt primeşte un steag. Al doilea steag este repartizat în mod similar, se alege de pe fiecare rând cel mai înalt elev, iar dintre aleşi, cel mai scund. În cazul în care există mai mulţi elevi cu aceeaşi înălţime, se alege primul dintre ei. Să se scrie un program care să afişeze înălţimile purtătorilor de steag; valorile m, n şi înălţimile elevilor se citesc de la tastatură. Exemplu: m=3 n=4 rândul 1: 120  130  140  150   rândul 2: 110  120  130  130  rândul 3: 140  140  150  150  ; primul steag este dat elevului din poziţia (3,1), cu înălţimea 140, iar al doilea steag elevului din poziţia (2,3), cu înălţimea 130.                                                                                                                              (CNI 1989 clasa a V-a)
  • Într-un parc cu castani un copil găseşte o zonă cu 12 dale, aranjate sub forma unui dreptunghi cu 4 linii şi 3 coloane. Copilul îşi notează numărul de castane de pe fiecare dală, începând cu dala de pe prima linie şi prima coloană, continuând linie cu linie (notiţele copilului se introduc de la tastatură). El porneşte de pe prima dală (unde nu sunt castane), se poate muta de pe o dală pe alta doar pe linie sau pe coloană. Copilul adună castanele de pe fiecare dală pe care ajunge şi face un număr de k mutări (k citit de la tastatură). Comanda unei mutări de pe o dală pe alta se va face apăsând pe una dintre tastele A, B, C sau D, unde mutările posibile sunt definite astfel:

A – pe linia anterioară;

B – pe coloana următoare;

C – pe linia următoare;

D – pe coloana anterioară.

  1. Se cere să se afişeze câte castane a adunat copilul după fiecare mutare.
  2. Copilul se joacă cu cifrele numărului total de castane, obţinut la punctul a., conform următoarelor exemple:

173 —> 11 —> 2, 8 —> 8, 14  —> 5, 97  —> 16 —> 7, 1989 —> 27 —> 9

Ce cifră obţine copilul la punctul (b.) pentru numărul obţinut la punctul (a.), după mutarea k? Obs.: Copilul nu va primi comenzi prin care să iasă de pe dale.

Exemplu:     Pentru următoarea repartiţie de castane pe dale

0 5 7
3 1 2
10 8 4
6 1 1

şi pentru k = 4:

a. Comenzi de la tastatură: Rezultat afişat pe ecran
B 5
C 6
B 8
C 12
b. 12  —> 3

(CNI Satu-Mare 2002 clasa a VI-a)

  • Marius are o orgă de lumini de formă dreptunghiulară cu n linii şi m coloane de beculeţe. Funcţionarea orgii este automată, automodificându-se o dată la 1 secundă simultan toate becurile, după următoarea regulă: dacă un bec are un număr par de becuri vecine aprinse (în stânga, dreapta, sus şi jos) atunci îşi schimbă starea (dacă este aprins se stinge, iar dacă este stins se aprinde), însă dacă are un număr impar de becuri vecine aprinse îşi păstrează starea. Ştiind configuraţia iniţială a orgii determinaţi cum va arăta orga după k secunde? Restricţii:1<=n,m<=100, 1<=k<=500 Date de intrare: n m – dimensiunile orgii, k – timpul de rulare a orgii, n linii, fiecare având m elemente separate printr-un spaţiu, reprezentând stările becurilor. Starea unui bec este data prin 1, daca becul este aprins şi 0, daca este stins. Date de ieşire: n linii cu m elemente de 0 şi 1 reprezentând configuraţia orgii după k secunde, elementele fiind separate printr-un spaţiu.

Exemplu:  Date de intrare:  4  4  3

1 0 0 1

1 1 0 0

0 1 1 1

0 0 0 0

Răspuns:     0 1 0 0

1 1 1 1

0 0 1 1

1 1 1 1

Explicaţie:

1 0 0 1                    1 1 0 0              1 1 1 0              0 1 0 0

1 1 0 0    è 0 0 1 1    è       1 1 1 0    è       1 1 1 1

0 1 1 1    è 1 0 0 1    è       1 0 1 1    è       0 0 1 1

0 0 0 0                    1 0 0 0              1 0 1 0              1 1 1 1

Notă: Dacă un element are 0 becuri vecine aprinse, se consideră că are un număr par de becuri vecine aprinse

(CNI Satu-Mare 2004 clasa a VI-a)

  • Se consideră un text cu lungimea maximă de 255 caractere. Textul este format din cuvinte separate de cel puţin un spaţiu. Se cere să se găsească cuvintele de lungime maximă şi toate literele care se regăsesc simultan în toate aceste cuvinte. (CNI Năvodari 1992 clasa a V-a)
  • Se citesc două mulţimi M1 şi M2 de cuvinte precum şi un număr natural k. Să se aşeze cuvintele mulţimii M1 unele sub altele astfel încât literele lor de pe poziţia k să formeze pe verticală un cuvînt din mulţimea M2. Să se afişeze unele sub altele cuvintele din mulţimea M1 după ce au fost ordonate corespunzător. Exemplu: M1=[carte, acesta, arid, rac], M2=[ cutie, abac, acar, cort], k=2, rezultatul carte                               acesta                                                                                                                                                         rac                                                                                                                                                              arid .                                                                                                                                         (CNI Năvodari 1992 clasa a VII-a)
  • Se introduce un text format din cuvinte despărţite prin oricâte spaţii şi având maxim 255 de caractere, toate majuscule. a) Să se afişeze toate cuvintele din text, unul după altul   b) Să se găsească lungimea celui mai mic cuvînt c) Se citeşte un cuvânt de la tastatură; să se afişeze toate cuvintele din text care au aceeaşi lungime şi sunt formate din exact aceleaşi litere cu ale cuvîntului dat.                      (CNI Buşteni 1994 clasa a VII-a)
  • Se consideră un şir de cel mult 100 caractere, format din literele mici ale alfabetului englez. Se numeşte o bâlbă o secvenţă de caractere care apare în şir de cel puţin două ori şi una după alta. Exempu: abbcabab are bâlbele b şi ab. a) Să se determine cea mai lungă bâlbă din şirul considerat (ca număr de caractere) b) Să se codifice şirul dat înlocuind fiecare caracter cu ultima cifră a lui 2 la puterea x, unde x este codul ASCII asociat literei respective. Exemplu: Date de intrare abbcabab  date de ieşire a) ab  b) 24482424.                                                                                                                                           (CNI 1997 clasa a VI-a)
  • Se citeşte de la tastatură un număr natural n, n<=15). Pentru a codifica un text scris cu cel mult primele n litere mici din alfabetul englez, se folosesc cele mai mici n numere naturale care au exact 3 divizori. Pentru litera a se foloseşte cel mai mic număr cu această proprietate, pentru b cel mai mic număr diferit de cel folosit pentru a, etc. a) Să se afişeze cele n numere folosite la codificare b) pentru un text dat de la tastatură cu maxim 20 de litere, se cere să se afişeze codificarea textului. Exemplu: pentru n=2 şi textul aabbaa, se va afişa a) 4  9         b)                                                      (CNI Sinaia 1998 clasa a VI-a)
  • Se dau două numere a,b cu maxim 8 cifre. După fixarea a două cifre, câte una din fiecare număr, aceste cifre se interschimbă între ele, obţinându-se alte două numere a’, b’. De exemplu, din numerele a=23, b=416, fixând prima cifră din a şi a doua cifră din b, după interschimbarea lor se obţin numerele a’=13, b’=426. Să se determine a’ şi b’, astfel încât suma a’+b ‘să fie maximă. Exemplu: a=23, b=416, suma maximă se obţine pentru 63 şi 412. (CNI Sinaia 1998 clasa a VI-a)
  • Membrii cercului de electronică de la Clubul Copiilor din Aiud au realizat un robot care ştie să se deplaseze la comandă. Astfel comanda Nx deplasează robotul x metri spre nord, comanda Ey, Vz, St, deplasează robotul respectiv y metri spre est, z metri spre vest, t metri spre sud (x,y,z,t numere naturale). Un grup de copii dau o serie de comenzi robotului pentru a-l rătăci. La comanda STAI robotul se opreşte. Cunoscînd comenzile date, ajutaţi membrii clubului ca prin maxim 2 comenzi să readucă robotul în punctul de plecare. Exemplu: N 3 V 5    S 3    E 4    E 5    N 2    STAI  robotul revine la comenzile V 4   S 2.

(InfoStar, Aiud 1997 clasa a VI-a)

  • Se citeşte de la tastatură un text de maxim 255 de caractere. Singurul separator între cuvinte este considerat caracterul spaţiu (SPACE).
  1. Se va afişa pentru fiecare cuvânt: poziţia cuvântului în text, adică al câtelea cuvânt este; numărul de litere; suma codurilor ASCII ale literelor
  2. Se va afişa frecvenţa de apariţie a fiecărui cuvânt în text. (CNI Satu-Mare 2002 clasa a VI-a)
  • Sinbad Marinarul visează că se află într-o peşteră cu comori. Peste tot se aflau cufere pline cu bijuterii şi monezi de aur. Şi în timp ce Sinbad se minuna, se auzi o voce care spuse: „ Există o cale de a ajunge aici şi dacă reuşeşti toate aceste comori vor fi ale tale. Această peşteră se află în vârful muntelui Ararat , dar duhurile rele vor încerca să te oprească. Tu trebuie să le învingi în luptă dreaptă. Pentru a deschide peştera trebuie să-ţi aminteşti câte duhuri ai învins şi să rosteşti cu voce tare formula magică, care este cel mai mic număr care are atât prima cifră cât şi numărul de cifre egal cu numărul duhurilor învinse de tine. În plus, acest număr trebuie să aibă proprietatea că orice secvenţă de două cifre consecutive trebuie să fie numere prime diferite. În acest moment, Sinbad s-a trezit şi vrea să plece în căutarea comorii. Nu se teme de duhurile rele, dar ştie câte calcule necesită căutarea formulei magice (şi mai ştie că la matematică nu se descurcă foarte bine). De aceea, vă roagă să-l ajutaţi.

Sinbad vă va spune numărul n egal cu numărul duhurilor învinse de el, iar voi trebuie să-i spuneţi formula magică. În cazul în care nu există un astfel de număr, transmiteţi-i că Nu există. Exemplu: n=3 se va afişa 311.                                                                                                 (ONI  2002 clasa a VI-a)

  • Gigel are de rezolvat următoarea problemă: se consideră numărul natural N format din maxim 9 cifre, distincte două câte două şi în care nu există cifra 0. Gigel va trebui să facă bileţele pentru fiecare cifră din număr, bileţele pe care le va pune într-o căciulă, conform următorului algoritm: iniţial porneşte de la ultima cifră a numărului (cifra unităţilor) şi pune în căciulă bileţelul pe care este scrisă această cifră. Dacă aceasta este o valoare pară, începe parcurgerea numărului spre dreapta, în caz contrar spre stânga, parcurgerea făcându-se cu un număr de paşi egal cu cifra respectivă. În parcurgerea unui număr spre dreapta se consideră că după ultima cifră urmează prima (cea mai semnificativă cifră a numărului), după aceasta urmează a doua, etc., iar în deplasarea spre stânga după prima cifră (cea mai semnificativă cifră a numărului) urmează ultima cifră (cifra unităţilor), apoi penultima, etc., iar parcurgerea începe cu cifra din număr imediat de lângă cifra scrisă pe ultimul bileţel introdus în căciulă, respectând sensul parcurgerii. De exemplu, dacă numărul nostru este 1346, Gigel porneşte de la cifra 6, iar biletul pe care s-a scris această cifră îl pune în căciulă. Parcurge numărul spre dreapta, făcând 6 paşi; trece prin cifrele: 1,3,4,6,1 şi se opreşte la cifra 3. Deci, în căciulă va pune bileţelul pe care este scrisă cifra 3.

Algoritmul continuă până când se termină toate bileţelele sau când  ajunge la o cifră pentru care bileţelul cu valoarea respectivă a fost introdus deja în căciulă.

Cerinţă: În cazul în care algoritmul se încheie întrucât Gigel a pus toate bileţelele în căciulă, se va afişa cifra de pe ultimul bileţel introdus în căciulă, iar în cazul în care Gigel ajunge în timpul parcurgerii la o cifră pentru care bileţelul corespunzător a fost introdus deja în căciulă, se va afişa valoarea acestei cifre

Date de intrare: Se va citi de la tastatură numărul natural N format din cel mult 9 cifre distincte două câte două, în care nu există cifra 0.

Datele de ieşire:  Se va afişa pe ecran cifra la care Gigel a ajuns în momentul opririi algoritmului.

Exemple :

1) N=412

Gigel începe cu cifra 2 (bileţelul cu cifra 2 este pus de Gigel în căciulă);  fiind valoare pară, parcurge spre dreapta  şi se opreşte la cifra 1, bileţelul cu această cifră fiind pus în căciulă. Cifra 1 fiind impară,  continuă parcurgerea spre stânga şi se opreşte la cifra 4 şi pune astfel şi ultimul bileţel în căciulă. Din acest moment nu mai există bileţele nepuse în căciulă şi se va afişa deci cifra 4 .

2) N=1243

Gigel începe cu cifra 3 (bileţelul cu cifra 3 este pus de Gigel în căciulă);  fiind valoare impară, parcurge spre stânga şi se opreşte la cifra 1, bileţelul cu această cifră fiind pus  în căciulă. Cifra 1 fiind impară,  continuă parcurgerea spre stânga şi se opreşte tot la cifra 3, dar nu mai există bileţelul cu cifra 3 pentru a putea fi pus în căciulă. Se va afişa deci, cifra 3.                                                     (ONI Focşani 2003 clasa a VI-a)

  • Simpatie mare între Ionel şi Mărioara, doi elevi veniţi în tabără la Gălăciuc…! Pentru a scăpa de indiscreţia colegilor, cei doi hotărăsc să-şi trimită mesaje, unul altuia, folosind o metodă simplă de criptare: textul de criptat se scrie pe o foaie, aranjând literele cuvintelor într-un tablou având câte 5 caractere pe fiecare linie. Spaţiul dintre cuvinte este şi el caracter. Textul astfel aranjat pe un număr suficient de linii pentru a încape, se citeşte pe coloane, de sus în jos şi de la stânga la dreapta. În locul spaţiilor dintre cuvinte se pun puncte. Tot puncte se pun şi la sfârşitul textului, atâtea câte spaţii libere sunt rămase la sfârşitul textului “pus” în tablou. Exemplu: Pentru textul: Te astept dupa cina la ora 8 se va aranja:

 

1 2 3 4 5
T e a s
t e P t
d u P a
c i N a
l a o R
a 8

se va codifica:  Ttdclaeeuia..ppn.8ataao.s…r.

Decodificarea mesajului se va face învers codificării.

Ajutaţi-i, realizând un program care să codifice şi să decodifice mesajele celor doi copii. Pentru diferenţierea mesajelor ce trebuie codificate, de cele care trebuie decodificate, primul caracter al mesajului va fi ‘C’ sau ‘c’ pentru codificare, respectiv ‘D’ sau ‘d’ pentru decodificare. Aceste caractere,  vor fi lipite de prima litera din textul mesajului.

Intrare: CAm un mar                                          Ieşire: A.mm.aurn.

ntrare: dTaGia.aubllcaaa.r.c.                               Ieşire: Tabara la Galaciuc

(ONI Gălăciuc 2002 clasa a VI-a)

  • Să se calculeze anul, ziua, luna şi ora revenirii unei rachete pe Pământ cunoscând anul, ziua, luna şi ora plecării şi durata zborului în minute. Zborul durează cel mult un an. (CNI Năvodari 1989 clasa a VI-a)
  • Ministerul numerelor are de câteva zile un nou şef. Acesta a dorit să facă o serie de schimbări în ministerul pe care îl conduce şi a început “reorganizarea” cu mulţimea numerelor naturale în 2 etape: mai întâi toate numerele naturale au fost aşezate fără spaţiu (sau alt separator) între ele. După această primă etapă, mulţimea numerelor naturale arăta  astfel:  .. A doua etapă a “reorganizării”  a constat în formarea unor noi “grupe”:  o grupă  de o cifră, o grupă de 2 cifre, o grupă de 3 cifre şi aşa mai departe. Astfel, “grupele reorganizate” sunt: 1, 23, 456, 7891, 01112, 131415, 1617181, 92021222, 324252627 …. Cerinţă: Pentru un  număr natural N dat, să se afişeze prima şi ultima cifră din cea de-a N-a grupă de cifre obţinută după “reorganizare”, valori separate printr-un spaţiu. Restricţii: 1<=N<=250. Exemplu: Pentru N=8 se va afişa: 9 2   (deoarece 9 şi 2 sunt prima, respectiv ultima cifră din grupa a 8 a care este  92021222 )                                                      (ONI Focşani 2003 clasa a VI-a)

 

Clasa a VII-a

 

  • Se dă o expresie aritmetică care conţine operatorii +, – şi operanzii a, b, c. Cunoscând valorile operanzilor a, b, c se cere să se determine valoarea expresiei. Date de intrare: în fişierul expresie.in se dă pe prima linie valorile operanzilor a, b, c (separaţi prin câte un spaţiu), iar pe linia a doua expresia. Date de ieşire: în fişierul expresie.out se va scrie valoarea expresiei. Restricţii: a,b,c<32000 şi sunt numere naturale nenule
    Expresia este corectă din punct de vedere matematic şi are cel mult 1000 de caractere
    Exemplu: expresie.in   7 8 3   a+c-b+c   out  5                                   (www.contaminare.ro)
  • Se dă o secvenţă de maxim 1000 de caractere (numai litere mari şi mici ale alfabetului englez şi cifre). Cerinţă:
    se cere să se determine cel mai mare număr din secvenţă. Date de intrare: în fişierul nrmax.in se dă pe o singură linie, secvenţa. Date de ieşire: în fişierul nrmax.out se va scrie numărul cerut. Restricţii: secvenţa de caractere din fişier are maxim 1000 de caractere şi cel puţin un caracter. Exemplu: nrmax.in A78bx899f7g9
    out   899 . Observaţie: dacă nu există soluţie în fişierul nrmax.out se va scrie numărul -1.
  • Pe o insulă, după multiple experimente chimice se produce un fenomen extrem de periculos. Viespile se înmulţesc foarte repede producând pagube mari. Guvernatorul ia hotărârea ca după n zile să se evacueze insula. Se cere să se determine numărul de viespi existente în ziua de plecare, ştiind că în prima zi după fenomen sunt p viespi, în a doua zi q viespi, iar în zilele cu numărul de ordine k (3£k£n) numărul de viespi este egal cu de patru ori numărul de viespi din ziua k-1, minus numărul de viespi din ziua a k-2.  Date de intrare: |n fişierul text VIESPI.IN se află pe prima linie n, iar pe a doua linie p şi q cu un spaţiu între ele. Date de ieşire: |n fişierul text VIESPI.OUT se va scrie pe prima linie numărul de viespi după cele n zile. Restricţie

1£n,p,q£100. Exemplu: VIESPI.IN 4  2  3  VIESPI.OUT 37                                (ONI. Clasele 7-8, 2001)

4) Gigel are o panglică alcătuită din benzi de 1 cm lăţime, colorate în diverse culori. Panglica are N benzi colorate cu C culori, culori pe care le vom numerota de la 1 la C. Gigel vrea ca la ambele capete ale panglicii să aibă aceeaşi culoare, dar cum nu poate schimba culorile benzilor, singura posibilitate rămâne tăierea unor bucăţi de la capete. Cerinţă: Scrieţi un program care să determine modul de tăiere a panglicii astfel încât la cele două capete să fie benzi de aceeaşi culoare, iar lungimea panglicii obţinute să fie maximă. Date de intrare: Fişierul de intrare PANGLICA.IN conţine:

  • pe prima linie numerele naturale N şi C separate printr-un spaţiu;
  • pe următoarele N linii descrierea panglicii: pe fiecare linie un număr natural de la 1 la C, reprezentând în ordine culorile fâşiilor ce alcătuiesc panglica.
  • pe prima linie numărul de fâşii rămase;
  • pe linia a doua numărul culorii care se află la capete;
  • pe linia a treia câte fâşii trebuie tăiate de la începutul panglicii iniţiale;
  • pe linia a patra câte fâşii trebuie tăiate de la sfârşitul panglicii iniţiale.

Date de ieşire: Fişierul de ieşire PANGLICA.OUT va conţine următoarele 4 numere:

      Restricţii şi precizări 2£N£10000  1£C£200   Dacă există mai multe soluţii alegeţi pe cea în care se taie cât mai puţin din partea de început a panglicii.

Exemplul 1                                                               Exemplul 2

PANGLICA.IN          PANGLICA.OUT                PANGLICA.IN              PANGLICA.OUT

6 3                           4                                            5 2                                4

1                             2                                            1                                  2

2                             1                                            2                                              1

1                             1                                            1                                              0

3                                                                            2

2                                                                          2

3

(ONI, clasa a 7-a,2002)

5) Gigel s-a întâlnit din nou cu Maria la Concursul Naţional de Informatică de la Satu Mare. Pentru a comunica astfel încât ceilalţi colegi să nu înţeleagă mesajele lor ei folosesc o metodă de criptare a informatiilor conform următoarelor reguli:

  1. Ei formează dicţionarul cuvintelor utilizate în mesaj, spaţiul ce separă cuvintele fiind considerat şi el un cuvânt.
  2. Apoi determină k, ce reprezintă cea mai mică putere a lui 2 astfel încât numărul cuvintelor din dicţionar să fie mai mic decât 2k.
  3. În următoarea etapă ei sortează cuvintele din dicţionar în ordine alfabetică crescătoare.
  4. Fiecare cuvânt din dicţionar se codifică prin corespondentul în baza 2 a poziţiei cuvântului, exprimată pe k biţi.
  5. Se grupează biţii astfel obţinuţi în grupe de 8 completând dacă este cazul cu 0 ultima grupă.
  6. Fiecare grupă se transformă într-o valoare zecimală, rezultând astfel codul ASCII a unui caracter ce reprezintă codul criptat.

NOTĂ: Cuvintele din mesaj includ doar caractere mici din alfabetul englez,sunt separate prin spaţiu, iar lungimea unui cuvânt nu depăşeşte 10 caractere.

Datele de intrare se citesc din fişierul COD.IN ce are o singură linie. Primul caracter din linie reprezintă tipul operaţiei, criptare (c). Imediat după caracterul „c” urmează mesajul de criptat. În dicţionar nu pot exista mai mult de 15 cuvinte (inclusiv spaţiul). Datele de ieşire se scriu în fişierul COD.OUT ce conţine mesajul criptat urmat imediat de cuvintele din dicţionar separate prin spaţiu. EXEMPLU:

COD.IN                                                       COD.OUT

cmama are mere                             e­  are mama mere          (ATENŢIE! Între ­  are există două spaţii)

(CNI, clasa a 7-a,  Satu Mare, 2002)

6) Într-un fişier de intrare NUMERE.IN există una sau mai multe linii. Pe fiecare linie exista cel puţin două numere urmate apoi de unul din caracterele „p”, „m”, „n” sau „i” separate prin spaţiu. Caracterele de sfârşit de linie au următoarele înţelesuri. p – câte numere sunt prime din numerele date pe linia respectivă, m – determinarea mediei aritmetice a numerelor din linia respectivă exprimată cu două zecimale, n – numărul de numere prime din intervalul închis a celor două numere din linia respectivă

i – inversul fiecărui număr din linia respectivă cu două zecimale. Datele de ieşire se scriu în fişierul NUMERE.OUT având pe fiecare linie rezultatele cerinţelor fiecărei linii din fişierul de intrare.

Notă: Toate datele de intrare se consideră corecte. Numărul maxim de linii este 10. Pe o linie nu poate exista mai mult de 10 numere (acolo unde acest lucru este permis) Numerele utilizate sunt naturale şi nu depăşesc 64000.

Exemplu:

NUMERE.IN                                                 NUMERE.OUT

13  21  27  29  p                                                      2

12  5  i                                                                    0,08  0,20

(CNI, clasa a 7-a,  Satu Mare, 2002)

7)  Se dă o expresie aritmetică care conţine operatorii +, – şi operanzii a, b, c. Cunoscând valorile operanzilor a, b, c se cere să se determine valoarea expresiei. Date de intrare: în fişierul expresie.in se dă pe prima linie valorile operanzilor a, b, c (separaţi prin câte un spaţiu), iar pe linia a doua expresia. Date de ieşire: în fişierul expresie.out se va scrie valoarea expresiei. Restricţii: a,b,c<32000 şi sunt numere naturale nenule. Expresia este corectă din punct de vedere matematic şi are cel mult 1000 de caractere. Exemplu: expresie.in   7 8 3   a+c-b+c   expresie.out  5                                                (www.contaminare.ro)

8)  Se consideră un vector unidimensional x cu n componente numere naturale distincte, cel mult egale cu 32000.

Cerinţă: Scrieţi un program care să construiască vectorul y cu elemente din mulţimea   {1,2,…,n} astfel încât oricare ar fi numerele naturale i,j cu proprietatea că 1<=i<=n, 1<=j<=n şi x[i] < x[j] să avem y[i]<y[j]. Date de intrare; fişierul siruri.in va conţine: pe prima linie numărul n iar pe linia a doua componentele vectorului x separate printr-un spaţiu. Date de ieşire: fişierul siruri.out va conţine pe prima linie componentele vectorului y separate printr-un spaţiu. Restricţii: 1<=n<=100, componentele vectorului x sunt numere naturale cel mult egale cu 32000. Exemplu:

siruri.in Siruri.out
612  3  7  16  10  1 5  2  3  6  4  1

(OJI, clasa a VII-a, 2004)

9) George pleacă în excursie la munte. Pentru această excursie el doreşte să-şi ia un rucsac cu haine. Rucsacul are un volum de depozitare egal cu V cm3. George stabileşte n haine utile pentru excursie (numerotate cu 1, 2, …, n). Hainele au fiecare câte un volum egal cu v1, v2, …, vn cm3. Din păcate, există posibilitatea ca acestea să nu intre toate în rucsac. George ajunge la concluzia că hainele sunt împachetate şi presate îşi micşorează volumul fiecare cu p1, p2, …, pn la sută. Cerinţă: Determinaţi numărul maxim de haine ce pot fi introduse în rucsac. Date de intrare: în fişierul text excursie.in pe prima linie se va afla v şi n separate printr-un spaţiu, pe a doua linie se află v1, v2, …, vn separate prin câte un spaţiu, iar pe linia a treia p1, p2, …, pn separate de câte un spaţiu. Date de ieşire: în fişierul excursie.out se va scrie numărul cerut. Restricţii: 0<n<100, 0<v<30000, v1, v2, …, vn sunt numere naturale <30000, p1, p2, …, pn  sunt numere naturale <100. Exemplu:

excursie.in                                             excursie.out

980  4                                                   2

1600  200  10000  800

50  20  10  10                                                                (CNI, Satu-Mare, clasa a VII-a, 2003)

10) Un turist aflat în Valea Romeţului, aude din văzduh n cuvinte. Aici există o piatră fermecată care atunci când un cuvânt se izbeşte de ea, emană un ecou similar cu cuvântul dar spus de la sfârşit . Ajutaţi turistul să găsească grupele formate din cuvânt şi ecoul său. Exemplu: date de intrare: n=7  şi  cuvintele: cam  des  sed  oamenii  la  al  doilea  mac  Date de ieşire: cam  mac     des  sed    la  al .

                                                                                                (Info-Star, clasa a VII-a, 1996)

 

Clasa a VIII-a

 

1) Se consideră o listă de litere mici ale alfabetului, fiecare având o anumită pondere. Se cere completarea unui careu pătratic, astfel încât să se obţină ponderea maximă pe coloane. Pentru aceasta se dau următoarele definiţii:

  1. Se numeşte cuvânt un şir de litere mici, cu proprietatea că nu există x consoane sau y vocale consecutive şi nu pot exista 2 caractere identice consecutive.
  2. Se numeşte cuvânt de gen masculin, un cuvânt care începe şi se termină cu consoana.
  3. Se numeşte cuvânt de gen feminin, un cuvânt care începe şi se termină cu vocală.
  4. Se numeşte cuvânt de gen neutru, un cuvânt care începe cu consoană şi se termină cu vocală, sau începe cu vocală şi se termină cu consoană.

Datele se citesc dintr-un fişier cu următoarea structură:

  • pe prima linie se citeşte dimensiunea careului (n), x şi y cu spaţiu între ele
  • pe linia a doua sunt date coordonatele punctelor negre (linie şi coloană) separate prin spaţiu
  • pe linia a treia se dau numărul de cuvinte masculine, feminine şi neutre utilizate la completarea careului
  • începând cu linia a patra se dă perechea pondere caracter separate prin spaţiu

Numele fişierului se introduce de la tastatură.

Datele de ieşire se scriu în fişierul cu numele CNI.OUT care are următoarea structură:

  • pe primele n linii, careul ( punctele negre vor fi marcate prin caracterul „ * ” )
  • pe linia n+1 se va scrie ponderea maximă obţinută

Exemplu:

FIŞIERUL DE INTRARE:                                      CNI.OUT

4 3 3                                                                 cadc

2 3 4 1                                                              ab*a

4 1 3                                                                 cdab

100 c                                                                *abc

80 b                                                                  1160

90 a

70 d

(CNI, clasa a 8-a,  Satu Mare, 2002)

2)  Se dau următoarele corespondenţe pentru numerele naturale.

0 corespunde 0

1 corespunde 143

2 corespunde 307

3 corespunde 453

7 corespunde 1273

10 corespunde 1747

11 corespunde 2113

576 corespunde 160377

Să se determine codificarea numerelor citite din fişierul  cu numele CNI.IN (fiecare număr fiind citit de pe o linie). Datele de ieşire se vor scrie în fişierul CNI.OUT

Exemplu:

CNI.IN                                                        CNI.OUT

10                                                               1747

0                                                                0

7                                                                1273

(CNI, clasa a 8-a,  Satu Mare, 2002)

3)  Se consideră următorul şir, construit astfel încât fiecare element al lui, cu excepţia primului, se obţine din cel precedent: 1, 11, 21, 1211, 111221, …Termenii din şir sunt numerotaţi începând cu 1. Cerinţă: Dat n, un număr natural, să se determine cel de-al n-lea termen din şirul dat. Date de intrare: Din fişierul text SIR.IN se citeşte numărul natural n. Date de ieşire: Pe prima linie a fişierului text SIR.OUT se va scrie al n-lea termen al sirului. Restricţii 4 ≤ n ≤ 35, numărul de cifre ale unui termen nu depăşeşte 17000.

Eemple

SIR.IN SIR.OUT
4 1211
SIR.IN SIR.OUT
5 111221

(OJI, 2002, clasa a 8-a)

4) Se dă un cuvânt format numai din litere mici. Numim anagramă un cuvânt format din literele cuvântului dat, schimbând eventual ordinea literelor. De exemplu o anagramă a cuvântului tamara este cuvântul armata. Evident, un cuvânt poate fi considerat o anagramă a lui însuşi.

      Cerinţă: Scrieţi un program care să genereze toate anagramele unui cuvânt dat, în ordine lexicografică. Date de intrare: Fişierul de intrare ANAG.IN conţine pe prima linie cuvântul dat.

      Date de ieşire: Fişierul de ieşire ANAG.OUT va conţine în ordine anagramele cuvântului dat, câte una pe linie.

      Restricţii şi precizări: Cuvântul dat are cel mult 10 de litere mici, cuvântul x=x1x2…xn precede cuvântul y=y1y2…yn dacă există un indice kÎ{1,2,…,n} astfel încât xi=yi, „iÎ{1,2,…,k-1}, iar litera xk precede în alfabet litera yk.

      Exemplu

ANAG.IN

ANAG.OUT

ana aanana

naa

(OJI, 2002, clasa a VIII-a)

5) Să ne imaginăm o reţea formată din noduri situate în punctele de coordonate întregi, fiecare nod fiind unit prin bare paralele cu axele de coordonate de cele 4 noduri vecine. Un păianjen este plasat iniţial în originea sistemului de coordonate. La fiecare secundă, păianjenul se poate deplasa din nodul în care se află în unul dintre cele 4 noduri vecine.

Cerinţă: Scrieţi un program care să determine în câte moduri se poate deplasa păianjenul din poziţia iniţială, într-o poziţie finală dată, în timpul cel mai scurt. Date de intrare: Fişierul de intrare SPIDER.IN conţine pe o singură linie abscisa şi ordonata punctului final, separate prin spaţiu: x y

Date de ieşire:În fişierul de ieşire SPIDER.OUT se va afişa pe prima linie numărul de moduri determinat Nr

Restricţii  0<x,y£80. Exemplul 1                                             Exemplul 2

SPIDER.IN SPIDER.OUT
1 2 3
SPIDER.IN SPIDER.OUT
2 3 10

 

(ONI. Clasele VII-VIII, 2001)

6) Lidorienii şi senopictii sunt în conflict pentru ronul fermecat, fiind arbitraţi de orintieni, aleşi de părţile beligerante drept judecători. Orintia a propus: „Ronul fermecat va fi ascuns printre alţi k roni cu acelaşi aspect, dar toţi realizaţi dintr-un material mai greu decât originalul, având masa, standard, diferită de cea a ronului femecat.  Pentru a-l descoperi, vă gandiţi că aveţi la dispoziţie o balanţă şi toţi cei k+1 roni. Lidorienii, apoi senopictii vor spune un singur număr, reprezentând numărul maxim de cântăriri admis (numărul acesta nu se obţine cântărind un ron de mai multe ori şi nici cântărind de cât mai multe ori ronii; cântărirea presupune să existe, pe fiecare braţ al balanţei, un număr egal de roni (1-1, 2-2, etc.)    pentru descoperirea ronului fermecat. Dacă nici una dintre părţi nu spune numărul corect, atunci ronul fermecat va rămâne în Orintia. Dacă ambele părţi spun numărul corect, ronul va rămâne tot la orintieni.”. Cerinţă  Sarcina voastră este să indicaţi ţara care câştigă ronul fermecat: Lidoria -L, Senopictia –S, Orintia –O. Date de intrare Fisierul ron.in are pe prima linie numărul k, iar pe linia a doua două numere RL, respectiv RS separate printr-un spaţiu. RL reprezintă răspunsul lidorienilor, iar RS răspunsul senopictilor.Date de ieşire Fisierul ron.out contine una din literele L, S şi O.Restricţii 1 < k < 10000 RL, RL sunt numere naturale cel mult egale cu k

 

ron.in7

1 3

ron.outO Explicaţie: maximul admis este 2, deci ronul fermecat rămâne în Orintia
ron.in4

2 2

ron.outO Explicaţie: maximul admis este 2, dar fiind egalitate, ronul rămâne în Orintia

Exemple

 

 

 

(OJI, clasa VIII-a, 2004)

  • Se consideră n dreptunghiuri având laturile paralele cu axele de coordonate. Fiecare dreptunghi este specificat prin coordonatele extremităţilor unei diagonale. Toate coordonatele sunt numere naturale. Să se calculeze aria suprafeţei comune tuturor celor n dreptunghiuri (intersecţia) şi perimetrul suprafeţei acoperite de dreptunghiurile considerate. Date de intrare: numărul n şi 2*n perechi de numere naturale mai mici decât 100 Date de ieşire: aria intersecţiei, coordonatele vârfurilor figurii rezultate prin intersecţie, peerimetrul figurii rezultate prin reuniune.

(CNI, Năvodari, clasa a VIII-a, 1992)

 

 

 

Bibliografie:

Doru Popescu Anastasiu        Culegere de probleme de informatică, All Educaţional, 2000

Marinel Şerban                        Qbasic, Petrion

Mihai Mocanu                          333 probleme de programare, Teora

Dan Negreanu                        Probleme de matematică rezolvate cu calculatorul, Teora

http://www.contaminare.ro

Lasă un răspuns

Completează mai jos detaliile despre tine sau dă clic pe un icon pentru autentificare:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s

%d blogeri au apreciat asta: