Sunteți pe pagina 1din 4

Test 8

Sub 1

1.c  2. d     3. b 4.c 5.  d

a. 27596
b. 72  , 254,  100, 0
c. jknkjb

d. citește x (număr natural)


n=0
daca x!=0 atunci
repeta
│ y=x; =c0
│ ┌cât timp y>0 execută
│ │ ┌dacă y%10>c atunci
│ │ │ cy%10
│ │ └■
│ │ y [y/10]
│ └■
│ nn*10+c
│ citește x (număr natural)
└pana cand x=0
scrie n

2.
Variabila p memorează simultan numărul de elevi dintr-o clasă (număr natural din intervalul
[2,40]) și, pentru fiecare elev al clasei, media de pe primul semestru precum și media de pe
cel de-al doilea semestru (numere reale cu cel mult două zecimale) la disciplina informatică.
Știind că expresiile C/C++ de mai jos au ca valori numărul de elevi din clasă, respectiv
mediile pe primul și pe al doilea semestru pentru primul dintre elevii clasei, scrieți definiția
unei structuri cu eticheta clasa, care permite memorarea datelor despre elevii clasei, și
declarați corespunzător variabila p.
p.numar p.elev[0].sem1 p.elev[0].sem2
struct clasa{int numar;
                     struct{float sem1;
                               float sem2;
                               }elev[40];
                     }p;
3. Variabila i este de tip întreg, iar variabilele s și aux permit memorarea câte unui șir cu cel
mult 15 caractere. Scrieți ce se afișează pe ecran în urma executării secvenței de program
alăturate.

strcpy(s,"voalata");
cout<<strlen(s);
i=0;
while (i<strlen(s))
if (strchr("aeiou",s[i])!=NULL)
{ strcpy(aux,s+i+1);    strcpy(s+i,aux);  i=i+1; }
else i=i+2;
0 1 2 3 4 5 6 7

v o l t NULL

cout<<s; |
Subiectul III:
1.    Subprogramul nrfp are doi parametri:
• n, prin care primește un număr natural (n[2,10 ]); 5

• m, prin care furnizează numărul din intervalul închis [2,n] care are cei mai mulți factori primi;
dacă există mai multe numere cu această proprietate, subprogramul îl returnează pe cel mai
mare dintre ele.
Scrieți definiția completă a subprogramului.
Exemplu: dacă n=100 atunci, în urma apelului, m=90.

void nrfp(int n, int& m)


{ int i,ci, nr=0, nrmax=-1;
for(i=2;i<=n;i++)
{   ci=i;
nr=0;
d=2;
while(ci!=1)
{ p=0;
while(ci%d==0)
       { p++; ci/=d;}
if(p>0)
nr++;
d++;}
if(nr>=nrmax)
{  nrmax=nr;
    m=i;} 
}
}
2. Scrieți un program C/C++ care citește de la tastatură numărul natural n (n[5,50]) și
elementele unui tablou bidimensional cu n linii și n coloane, numere naturale din intervalul
[0,10 ]. Programul afișează pe ecran suma numerelor din zona delimitată de cele două
2
diagonale și ultima coloană a tabloului, ca în exemplu.

Exemplu: pentru n=7 și tabloul alăturat, se afișează pe ecran 12.


#include <iostream>
using namespace std;
int main()
{
int a[50][50],i,j,n,su=0;
cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
cin>>a[i][j];
for(i=1;i<=n;i++)
for(j=1;j<=n-1;j++)
if(i<j && i+j>n+1)
s=s+a[i][j];
cout<<s;
return 0;
}
3. Variabilele i și j sunt de tip întreg, iar variabilele s și t permit memorarea unui șir de
cel mult 20 de caractere. Scrieți șirul accesat prin variabila s în urma executării
secvenței de mai jos.

0 1 2 3 4 5 6 7 8 9

s: A B C D U E C D NULL NULL

B C D U E C D NULL NULL

B C D U E D NULL

B D U E D NULL

Raspuns: BDUED

strcpy(s,"ABCDUECDA "); // strlen(s) este 9


i=0; j=strlen(s)-1;
while (i<j)
if(s[i]==s[j])
{strcpy(t,s+j+1);  in t am D
strcpy(s+j,t);   
strcpy(t,s+i+1);
strcpy(s+i,t);
j=j-2;}
else 
     { i=i+1;
        j=j-1; }

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