1. Pentru care dintre perechile de valori de mai jos expresia C/C++ alăturată
are valoarea 1? (a%100==b%100) && (a>99) || (b>99)
a. a=1003 şi b=3
b. a=35 şi b=35.
c. a=1100 şi b=10
d. a=1234 şi b=12
Am ales c. pentru ca daca inlocuim valorile avem rezultatul:
(1100%100==10%100) && (1100>99) || (10>99)
0==1
2. Se consideră algoritmul alăturat, descris în pseudocod.
citeşte x
(număr natural)
n←0
┌cât timp x≠0 execută
│ y←x; c←0
│ ┌cât timp y>0 execută
│ │ ┌dacă y%10>c atunci
│ │ │ c←y%10
│ │ └■
│ │ y←[y/10]
│ └■
│ n←n*10+c
│ citeşte x
└■
scrie n
S-a notat cu x%y restul împărţirii numărului natural x la numărul natural nenul y şi cu [z] partea întreagă a
numărului real z.
a) Scrieţi valoarea ce se va afişa dacă se citesc, în această ordine, numerele 12, 7, 354, 9, 1630, 0.
b) Scrieţi un set de date de intrare care să determine, în urma executării algoritmului, afişarea valorii 752.
c) Scrieţi programul C/C++ corespunzător algoritmului dat.
d) Scrieţi în pseudocod un algoritm echivalent cu cel dat,în care să se înlocuiască fiecare structură cât
timp...execută, cu câte o structură repetitivă cu test final.
Rezolvare:
a). pt 12:
n ← 0;
cat timp 12!=0 executa
y ←12;
c ← 0;
cat timp 12>0 executa
daca 12%10>c;
c ←12%10=2;
y←[12/10]=1;
n←0*10+2=2;
citeste 12;
scrie 2;
pt 7:
citeste 7;
n ←0;
cat timp 7!=0 executa
y ←7;
c ←0;
cat timp 7>0 executa
daca 7%10>c atunci
c ← 7%10=7;
y ← [7/10]=0;
n ←0*10+7=7;
citeste 7;
scrie 7;
pt 354:
n ←0;
cat timp 354!=0 executa;
y ←354;
c ←0;
cat timp 354 >0 executa;
daca 354%10 >c atunci;
c←354%10=4;
y ←[354/10]=35;
n← 0*10+4=4;
citeste 354;
scrie 4;
pt 9;
citeste 9;
n ←0;
cat timp 9!=0 executa
y←9;
c ←0;
cat timp 9>0 executa
daca 9%10>c atunci
c ← 9%10=9;
y ←[9/10]=0;
n ← 0*10+9=9;
citeste 9;
scrie 9;
pt 1630;
citeste 1630;
n←0;
cat timp 1630!=0 executa
y←1630;
c←0;
cat timp 1630>0 executa
daca 1630%10>c atunci
c←1630%10=0;
y←[1630/10]=163;
n←0*10+0=0;
citeste 1630;
scrie 0;
pt 0;
citeste 0;
n←0;
cat timp 0!=0; este fals
pentru x=0 nu se afiseaza nimic.
Concluzie:pentru x=12 afiseaza 2,pentru x=7 afiseaza 7,pentru x=354 afiseaza 4,pentru x=9 afiseaza 9,pentru x=1630 afiseaza 0.
b).
c). #include
#include
int main()
{int x,n,c;
cout<<"x=";cin>>x;
n=0;
while(x!=0)
{y=x;
c=0;
while(y>0)
{if(y%10>c)
c=y%10;
y=y/10;}
n=n*10+c;
cout<<"x=";cin>>x;}
cout<<"n="<<n;
return 0;}
d). citeste x
(numar natural)
n←0;
executa
y←x;
c←0;
cat timp x!=0;
executa
daca y%10>c; atunci
c←y%10;
y←[y/10];
n←n*10+c;
cat timp y>0;
citeste x;
scrie n;
Varianta 44
1. Care este instructiunea prin care variabilei x i se atribuie valoarea cifrei sutelor numărului
natural cu cel puţin 4 cifre memorat în variabila y?
a. x=y/100%10;
b. x=y/10/10;
c. x=y%100;
d. x=y%10/10;
Rezolvare:
Am ales a). deoarece daca luam un numar cu 4 cifre (ex.1234) trebuie sa scoatem cifra sutelor,adica cifra 2,din acel numar.
x=1234/100%10=12%10=2
Deci am scos cifra 2 care este cifra sutelor a acelui numar.
2. Se consideră algoritmul alăturat, descris în pseudocod.
citeşte x (număr natural)
y←0
┌cât timp x>y executã
│ y←y*10+9-x%10;
└■
scrie yS-a notat cu x%y restul împarţirii numărului natural x la numărul natural nenul y.
a) Scrieţi numărul care se afişează dacă se citeşte valoarea 274.
b) Scrieţi toate numerele naturale de câte 3 cifre care pot fi citite pentru variabila x, astfel încât, la finalul executării algoritmului să se afişeze valoarea 1111.
c) Scrieţi în pseudocod un algoritm echivalent cu cel dat în care structura cât timp...execută să fie înlocuită
cu o structură repetitivă cu test final.
d) Scrieţi programul C/C++ corespunzător algoritmului dat.
a).citeste 274
y←0;
cat timp 274>0 executa
y=0*10+9-274%10=0+9-4=5;
scrie 5;
b). 128,148,168,198;
citeste 128;
y←0;
cat timp 128>0 executa
y←0*10+9-128%10=0+9-8=1;
scrie 1;
citeste 148;
y←0;
cat timp 148>0 executa
y←0*10+9-148%10=0+9-8=1;
scrie 1;
citeste 168;
y←0;
cat timp 168>0 executa
y←0*10+9-168%10=0+9-8=1;
scrie 1;
scrie 198;
y←0;
cat timp 198>0 executa
y←0*10+9-198%10=0+9-8=1;
scrie 1;
c).citeste x (numar natural)
y←0;
executa
y←y*10+9-x%10;
cat timp x>y;
scrie y;
d). #include
#include
int main ()
{int x,y;
cout<<"x=";cin>>x;
while(x>y)
y=y*10+9-x%10;
cout<<"y="<<y;
return 0;}