Variante de bac

Varianta 7
 Subiectul I
1.Variabilele x si y sunt intregi.Care dintre expresiile c/c++ de mai jos are valoarea 1 daca si numai daca numarul memorat in x este strict mai mare decat 0 si numarul memorat in y este strict mai mare decat 5?
a.x*y-5!=0                                                  b.x*(y-5)!=0
c.x*(y-5)>=0                                               d.!(x*(y-5))<=0
2.Se considera algoritmul alaturat descris in pseudocod:
citeşte n (număr natural nenul)
nr<-0
┌pentru a<-9,0,-1 execută
│ m<-n
│┌cât timp m≠0 şi m%10≠a execută
││ m<-[m/10]
│└■
│┌dacă m≠0 atunci
││ nr<-nr*10+m%10
│└■
└■
scrie nr

 S-a notat cu [c] partea intreaga a numarului real c, iar cu a%b restul impartirii numarului intreg a la numarul intreg nenul b.
a)Scrieţi valoarea afişată, în urma executării algoritmului, dacă se citeşte  pentru n valoarea 232493.
b)Scrieţi două valori naturale distincte care pot fi citite pentru n astfel încât, în urma executării algoritmului să se afişeze numărul 9654.
R:4569,45690.
c)Scrieţi în pseudocod un algoritm echivalent cu cel dat în care să se înlocuiască structura pentru...execută cu o structură repetitivă cu test final.
citeste n (numar natural nenul)
nr←0; a←9
┌repeta
│ m←n
│ ┌cat timp m≠0 şi m%10≠a executa
│ │ m←m/10
│ └■
│ ┌daca m≠0 atunci
│ │ nr←nr*10+m%10
│ └■
│ a←a-1
└pana cand a<0
scrie nr
d)Scrieţi programul C/C++ corespunzător algoritmului dat. 
#include
#include
    void main()
{int n,a,nr,m;
  do 
     {cout<<"n="; cin>>n;
      }
   while(n<1)
   nr=0;
   for(a=9;a>=0;a--)
      {m=n;
       while(m!=0 && m%10!=a)
        { m=m/10;
        }
         if(m!=0)
          nr=nr*10+m%10;
      }
      cout<
      getch();}

Varianta 37

    Subiectul I
1. Care este valoarea pe care trebuie sa o aibe initial variabila intreaga x pentru ca, in urma executarii secventei alaturate, sa se afiseze sirul de mai jos:
    HHHHHH
    while(x!=3)
    {x=x-1;
      cout<<"HH";        |         printf("HH");
     }
a. 0                            b.4                          c. 6                          d.5
2.Se considera algoritmul alaturat descris in pseudocod:
citeşte n,k
(numere naturale, k≤9)
nr<-0; p<-1
┌cât timp n≠ 0 execută
│ c<-n%10
│ nr<- nr+c*p
│ p <- p*10
│ ┌dacă c=k atunci
│ │ nr<-nr+c*p
│ │ p<-p*10
│ └■
│ n<- [n/10]
└■
n<-nr
scrie n
   S-a notat  cu x%y restul impartirii numarul natural x la numarul natural nenul y si cu [z] partea intreaga a numarului real z.
 a) Scrieti numarul afisat daca se citesc valorile n=1232 si k=2.
 R:122322.
b) Scrieti o pereche de valori care pot fi citite pentru variabilele n si k astfel incat, in urma executarii algoritmului, valoarea finala a variabilei n sa fie egala cu valoarea initiala a acesteia.
 R:874 si 5.
c) Scrieti in pseudocod un algoritm echivalent cu cel dat, incat sa se inlocuiasca structura cat timp...executa cu o structura repetitiva de alt tip.
citeste n,k
 nr← 0; p←1
┌ executa
│ c←n%10
│ nr←nr+c*p
│ p←p*10
│ ┌daca c=k atunci
│ │ nr←nr+c*p
│ │ p←p*10
│ └▀
│ n←n/10
└pana cand n←0
    n←nr
    scrie n
d) Scrieti programul c/c++ corespunzator algoritmului dat.
#include
#include
void main()
{int n, p, k, nr;
cout<<"n="; cin>>n;
cout<<"k="; cin>>k;
nr=0; p=1;
while(n!=0)
{c=n%10;
 nr=nr+c*p;
 p=p*10;
if(c= k)
{ nr=nr+c*p;
   p=p*10;
}
n=n/10;
 }
n=nr;
cout<
getch();}