Page 125 - MATINF Nr. 1
P. 125

˘
            PROBLEME DE INFORMATICA PENTRU EXAMENE                                                       125


                                          x[j][i] = c;
                                          a = b; b = c;}

               5. Scriet , i un program ˆın C/C++ care cites , te un text de maxim 250 de caractere litere ale
                  alfabetului englez sau spat , ii s , i determin˘a s , i afis , eaz˘a pe ecran num˘arul total de cuvinte din
                  text, iar pe urm˘atorul rˆand, separate prin cˆate un spat , iu, cuvintele din text ˆın care primul
                  s , i ultimul caracter sunt ambele vocale sau ambele consoane.                      (10p.)

                  Exemplu: pentru textul La bacalaureat la proba de Informatica a fost un su-
                  biect cu un sir de caractere
                  se va afis , a:
                  15
                  bacalaureat Informatica a fost subiect sir

                SUBIECTUL al III-lea (30 de puncte)


               1. Utilizˆand metoda backtracking, sunt generate ˆın ordine lexicografic˘a toate anagramele
                  cuvˆantului ecran. S˘a se precizeze care sunt cuvintele generate imediat ˆınainte s , i dup˘a
                  secvent , a urm˘atoare: ernac, ernca, nacer.                                         (4p.)

                    a) ercan,              b) ercna,              c) ercna,             d) ercan,
                       nacre                  narce                  nacre                 narce
               2. Fie urm˘atorul subprogram recursiv:

                        void bac (int x, int d)
                        {     if(d<=x/d)
                              {
                                    if(x%d==0) cout <<d<<" ";
                                    bac(x, d+1);
                                    if(x%d==0) cout <<x/d<<" ";
                              }
                        }

                  Ce va afis , a subprogramul ˆın urma apelurilor bac(13, 1) s , i bac(56, 1)?          (6p.)
               3.   a) Scriet , i definit , ia complet˘a a subprogramului bac cu doi parametri, care primes , te prin
                       intermediul primului parametru x un num˘ar natural nenul de minim 2 cifre s , i maxim
                       9 cifre nenule s , i returneaz˘a prin intermediul celui de-al doilea parametru, y, num˘arul
                       obt , inut din x prin eliminarea primei s , i a ultimei cifre. Subprogramul returneaz˘a
                       valoarea 1 dac˘a num˘arul x ˆıncepe s , i se termin˘a cu aceeas , i cifr˘a.     (6p.)
                       Exemplu: dac˘a x=12341, subprogramul returneaz˘a valoarea 1 deoarece num˘arul x
                       ˆıncepe s , i se termin˘a cu aceeas , i cifr˘a, iar y=234.
                    b) Scriet , i un program C/C++ care cites , te de la tastatur˘a n numere naturale nenule
                       (1≤n≤100) de minim 2 cifre s , i maxim 9 cifre nenule s , i folosind apeluri utile ale
                       subprogramului de la punctul a) determin˘a s , i afis , eaz˘a pe ecran cˆate dintre cele n
                                                  ˆ
                       numere sunt palindrom. In cazul ˆın care nu exist˘a ˆın s , ir numere palindrom se va
                       afis , a un mesaj corespunz˘ator.                                                (4p.)
                       Exemplu: pentru n=5 s , i numerele 12341, 454, 11, 89, 4567, se va afis , a 2
                       (numerele 454 s , i 11).
               4. Fis , ierul text bac.in cont , ine cel mult 100000 de numere naturale.
                    a) Folosind un algoritm eficient din punct de vedere al memoriei utilizate s , i al timpului
   120   121   122   123   124   125   126   127   128   129   130