Sunteți pe pagina 1din 5

Fisa 17 – pseudocod

1. Se consideră algoritmul alăturat descris în pseudocod.


S-a notat cu y|x faptul că x este divizibil cu y.
a) Scrieţi care sunt valorile ce se vor afişa pentru a=10, b=20 şi c=6.
b) Scrieţi un algoritm echivalent cu cel dat în care să se înlocuiască
structura cât timp...execută cu structură pentru...execută.
c) Scrieţi programul C/C++ corespunzător algoritmului
dat.
d) Scrieţi o formulă care să calculeze câte numere se afişează dacă
a≤b.
citeşte a,b,c citeşte a,b,c
(numere naturale nenule) (numere naturale nenule)
┌dacă a>b atunci ┌dacă a>b atunci
│ ta; ab; bt │ ta; ab; bt
└■ └■
┌cât timp a≤b execută ┌pentru ia,b execută
│ ┌dacă c|a atunci │ ┌dacă c|i atunci
│ │ scrie a │ │ scrie i
│ └■ │ └■
│ a<-a+1 └■
└■
#include <iostream> a<=k*c<=b
using namespace std; a/c <= k<= b/c
int main()
{ int a,b,t,c; 10/6 <=k<= 20/6
cin>>a>>b>>c; 1,…<=k<= 3,…
if(a>b) a%c==0 => v1=[a/c]
{ t=a; a=b; b=t;} altfel v1=[a/c]+1
while(a<=b) v2=[b/c]
{ if(a%c==0) cout<<a; nr de afisari= v2-v1+1
a++;
} C++
return 0; nr= (b/c)- (a/c+(a%c!=0))+1;
}
nr[b/c]-[a/c]+1
daca a%c!=0 atunci nrnr-1

a b c scrie
10 20 6
11
12 12
13
…18 18
19,20,21

2. S-a notat cu x%y restul împărţirii numărului natural x la


numărul natural nenul y.
a) Scrieţi valorile care se afişează pentru n=11.
b) Scrieţi programul C/C++ corespunzător algoritmului dat.
c) Scrieţi în pseudocod un algoritm echivalent cu cel dat, în
care să se înlocuiască structura pentru...execută cu
o structură repetitivă de un alt tip.
d) Scrieţi numărul de valori distincte, numere naturale nenule,
cu cel mult două cifre fiecare, care pot fi citite pentru n, astfel
încât cifra 1 să fie afişată de exact 3 ori.
citeste n (număr natural)
c<-0
┌pentru i=1,n execută
│ c<-(c+1)%10
│ scrie c
└■
n=11: 12345678901
i c citeste n (număr natural)
1 1 1 c0; i1
2 2 2 ┌cat timp i<=n execută
3 3 3 │ c(c+1)%10; scrie c; ii+1
└■
10 0 0
11 1 1
21 1 1234567890123456789012345678901
30 30-21+1=10 valori

3. S-a notat cu x%y restul împărţirii numărului natural x la


numărul natural nenul y şi cu [x] partea întreagă a numărului real
x.
a) Scrieţi valoarea care se afişează dacă se citesc numerele a= a=493
şi b=1836.
b) Scrieţi programulC++ corespunzător algoritmului dat.
c) Scrieţi în pseudocod un algoritm echivalent cu cel dat, în care să se
înlocuiască structura cât timp...execută cu o structură repetitivă de
un alt tip.
d) Scrieţi în pseudocod un algoritm echivalent cu cel dat, care să NU
folosească structuri repetitive sau recursive.
citeste a,b citeste a,b
(numere naturale) (numere naturale)
c<-0; d<-0; p<-1 c<-0; d<-0; p<-1
┌cât timp a+b+c>0 execută ┌daca a+b+c>0 atunci
│ ca%10+b%10+c │ ┌ repeta
│ dd+(c%10)*p │ │ ca%10+b%10+c
│ pp*10 │ │ dd+(c%10)*p
│ a[a/10] │ │ pp*10
│ b[b/10] │ │ a[a/10]
│ c[c/10] │ │ b[b/10]
└■ │ │ c[c/10]
scrie d │ └cât timp a+b+c>0
└■
scrie d
citeste a,b (numere naturale)
da+b
scrie d

a b c d p
493 1836 0 0 1
9 9
49 183 0 9 10
12 29 100
4 18 1 29 100
13 329 1000
0 1 1 329 1000
2 2329 10000
0 0 0 =493+1836.

4. S-a notat cu [x]partea întreagă a numărului real x.


a) Scrieţi valoarea afişată dacă se citeşte numărul 120.12. //2
b) Scrieţi programul C/C++ corespunzător algoritmului dat.
c) Scrieţi în pseudocod un algoritm echivalent cu cel dat, în care să se
înlocuiască structura cât timp...execută cu o structură repetitivă de un
alt tip.
d) Scrieţi un număr real, cu exact două cifre la partea întreagă, care
poate fi citit pentru x, astfel încât algoritmul să afişeze valoarea 1.
//12.12
citeste x (număr real pozitiv) #include <iostream>
using namespace std;
y[x] //y=120 int main()
x (x-y) //x=0.12 { int y;
float x; cin>>x;
┌cât timp x≠[x] execută y=x; x=x-y;
│ xx*10// x=1,2 , x=12 while(x!=int(x)) x=x*10;
if(x==y) cout<<1;
└■ else cout<<2;
┌dacă x=y atunci scrie 1 return 0;}

│altfel scrie 2
└■
citeste x (număr real pozitiv)
y[x] ; x (x-y
┌daca x≠[x] atunci
│ ┌repeta
│ │ xx*10
│ └ cât timp x≠[x]
└■
┌dacă x=y atunci scrie 1
│altfel scrie 2
└■
5. Se consideră algoritmul alăturat descris în pseudocod.
a) Scrieţi valoarea care se afişează dacă se citesc numerele n=6
şi m=12. //9
b) Scrieţi programul C/C++ corespunzător algoritmului dat.
c) Scrieţi două perechi distincte de numere ce pot fi introduse
pentru n şi m astfel încât să se afişeze valoarea 10, în
urma executării algoritmului, pentru fiecare dintre perechi.
d) Scrieţi în pseudocod un algoritm echivalent cu cel dat, care să
NU folosească structuri repetitive sau recursive.
citeste n,m citeste n,m
(numere naturale) (numere naturale)
┌cât timp n≤m execută n[(n+m)/2]
│ nn+1; mm-1 scrie n
└■
┌cât timp m<n execută
│ mm+1
│ nn-1
└■
scrie n

10 10
9 11
10 10
9 11
5 8
6 7
7 6
6 7