Sunteți pe pagina 1din 8

Structuri de programare

Structura de Pseudocod C++


programare

Instructiune1 Instructiune1;
Instructiune2 Instructiune2;
Liniara Instructiune3 Instructiune3;
.............. ..............
Instructiune n Instructiune n ;

┌ dacă expresie atunci


| instructiuni 1
Decizionala | altfel
| instructiuni 2
└▄

Repetitiva cu
numar
┌ cat timp expresie executa
necunoscut | instructiuni
de pasi si └■
test initial

Repetitiva cu
numar ┌ executa
necunoscut | instructiuni
de pasi si └■ cat timp expresie
test final

Repetitiva cu
┌ pentru
numar i←vi,vf[,pas]executa
cunoscut de | instructiuni
pasi └■
- Algoritmi elementari

1. Divizibilitate

Se citesc două numere întregi a şi b. Să se realizeze un algoritm care să verifice dacă cele
două numere sunt divizibile (a divizibil cu b sau b divizibil cu a).
De exemplu dacă se citesc numerele a = 25 şi b = 5 atunci algoritmul va afişa „DA”, iar în cazul în
care se citesc a = 25 şi b = 10 se va afişa „NU”.
Pseudocod Program C++
a, b întregi #include <iostream>
citeşte a, b
dacă (a % b = 0 sau b % a = 0) using namespace std;
atunci int main()
| scrie ”DA” {
| altfel int a, b;
| scrie ”NU” cin >> a >> b;
|▄ if(a % b == 0 || b % a == 0)
{
cout << "DA";
}
else
{
cout << "NU";
}
}

Explicarea algoritmului: Se foloseşte o structură alternativă, în care se verifică a este divizibil cu b


(dacă restul împarţirii lui a la b = 0) sau invers.

2. Paritate

Se citeşte un număr întreg a. Să se realizeze un algoritm care să verifice dacă numărul a este
par, afişandu-se un mesaj corespunzator.
De exemplu dacă se citeşte pentru a valoarea 88 atunci algoritmul va afişa „PAR”, iar în cazul în care
se citeşte a = 15 se va afişa „IMPAR”.
Pseudocod Program C++
a întreg
citeşte a #include<iostream>
dacă (a % 2 = 0) atunci using namespace std;
| scrie ”PAR” int main()
| altfel { int n;
| scrie ”IMPAR” cin>>n;
|▄ if(n%2==0)
cout<< “par";
else
cout<<"impar";
return 0;
}

Explicarea algoritmului: Se foloseste o structură alternativa, în care se verifică dacă a este divizibil
cu 2 (daca restul împărţirii lui a la 2 = 0).

3. Interschimbare

Se citesc două numere întregi a şi b. Să se realizeze un algoritm care să interschimbe valorile


celor două variabile și apoi afișează pe ecran valorea variabilei a, respectiv a variabilei b cu
spațiu între valori.
De exemplu dacă se citesc numerele a = 25 şi b = 5 atunci algoritmul va afişa 5 25, iar în cazul în
care se citesc a = 8 şi b = 10 se va afişa 10 8.
Pseudocod Program C++
a, b, aux întregi #include <iostream>
citeşte a, b
aux ← a using namespace std;
a←b int main()
b ← aux {
scrie a, ” ”, b int a, b, aux;
cin >> a >> b;
aux = a;
a = b;
b = aux;
cout << a << " " << b;
return 0;
}
In pseudocod interschimbarea valorilor a doua
variabile se reprezinta si astfel:
a ↔ b

Explicarea algoritmului: Se foloseşte o variabilă auxiliară aux, care va reține valoarea variabilei
a(aux←a),varibilei a i se va putea atribui astfel valoarea variabilei b, fără să se piardă valoarea inițială a
acesteia(ea fiind reținută în aux), apoi variabilei b i se va putea atribui valoarea variabilei aux.

4. Aranjarea in ordine crescatoare a trei numere

Se citesc trei numere întregi a, b şi c. Să se realizeze un algoritm care să interschimbe valorile


celor trei variabile astfel încat să fie ordonate crescător. Se afișează pe ecran cele trei numere
cu spațiu între ele.
De exemplu dacă se citesc numerele a = 25 , b = 5 si c = 10 atunci algoritmul va afişa 5 10 25 .

Pseudocod Program C++


a, b, c întregi #include <iostream>
citeşte a, b, c
┌ dacă a > b atunci using namespace std;
| a ↔ b
└■ int main()
┌ dacă b > c atunci {
int a, b, c;
| b ↔ c cin>>a>>b>>c;
└■ if(a<=b && b<=c)
┌ dacă a > b atunci cout<<a<<" "<<b<<" "<<c;
| a ↔ b else
└■ if(a<=b && c<=b)
Scrie a, ’ ’, b, ’ ’, c cout<<a<<" "<<c<<" "<<b;
else
if(b<=a && a<=c)
cout<<b<<" "<<a<<" "<<c;
else
if(b<=c && c<=a)
cout<<b<<" "<<c<<" "<<a;
else
if(c<=a && a<=b)
cout<<c<<" "<<a<<" "<<b;
else
if(c<=a && b<=a)
cout<<c<<" "<<b<<" "<<a;
}

5. Maximul / minimul într-un şir de numere


Se citeşte un număr n întreg şi apoi n numere întregi. Să se realizeze un algoritm care să
afiseze cel mai mare si cel mai mic număr citit.
De exemplu dacă se citeşte pentru n valoarea 5 şi apoi valorile 12, 220, 23, 89, 146 atunci algoritmul
va afişa mesajul 220 si 12, deoarece 220 este valoarea maximă citită, iar 12 este valoarea minima.
Pseudocod Program C++
n, i, x, max, min întreg #include <iostream>
citeşte n
citeşte x //citesc primul număr din şir using namespace std;
max ← x //iniţial max=primul număr
min ← x //iniţial min=primul număr
int main()
┌pentru i ← 2, n execută
| // de la 2 pt ca primul a fost citit {
| citeşte x int n, x, MAX, MIN;
| ┌dacă (x > max) atunci cin >> n;
| | max ← x //max = noua valoare a lui x MAX = 1;
| |▄ MIN = 1000000;
| ┌dacă (x < min) atunci for(int i = 1; i <= n; i++)
| | min ← x //min = noua valoare a lui x {
| |▄
|▄ cin >> x;
scrie max,’ ’, min if(x > MAX)
MAX = x;
if(x < MIN)
MIN = x;
}
cout << MAX << " " << MIN;
}

Explicarea algoritmului: Algoritmul citeşte pe rând n numere de la tastatură şi afişează în final cel
mai mare / mic număr dintre ele.

Se citeşte primul număr din şir în afara structurii repetitive iar max se iniţializează cu acea valoare.
Apoi, în structura repetitivă, pe masură ce cititm în x alte valori, le comparăm cu variabila max. Dacă
găsim un număr mai mare decât max, atunci înlocuim valoarea lui cu numărul x. La fel se intampla si
cu min.

6. Contorizarea cifrelor unui numar natural

Se citeşte un număr întreg a. Să se realizeze un algoritm care să afiseze cate cifre are numărul citit.

De exemplu dacă se citeşte pentru a valoarea 3207 atunci algoritmul va afişa valoarea 4.

Pseudocod Program C++


a, k întreg #include <iostream>
citeşte a using namespace std;
k←0 //initial contorul este nul int n, nr;
┌ executa int main()
| k←k+1 {
| a ← a / 10 cout << " Numarul n: ";
└■ cat timp a ≠ 0 cin >> n;
if (n == 0)
scrie k nr = 1;
else
{
while (n)
{
nr++;
n = n / 10;
}
}
cout << "Numarul n are " << nr << " cifre.";
return 0;
}

7. Numărul invers (oglindit) - obtinut din cifrele lui n prin lipire

Se citeşte un număr întreg a. Să se realizeze un algoritm care să afiseze numărul invers. Numim număr
invers (sau oglindit) numărul format cu cifrele citite de la dreapta la stanga.

De exemplu dacă se citeşte pentru a valoarea 327 atunci algoritmul va afişa numărul invers (oglindit) 723.

Pseudocod Program C++


a, ogl întreg #include <iostream>
citeşte a using namespace std;
ogl ← 0 //initial ogl este nul int n, ogl;
┌cât timp a ≠ 0 execută int main()
| ogl ← ogl * 10 + a % 10 {
| a ← a / 10 cout<<"Introduceti numarul n: ";
└■ cin >> n;
scrie ogl while (n != 0)
{
ogl = ogl * 10 + n % 10;
n = n / 10;
}
cout << "Oglinditul numarului 'n' este: "<< ogl;
return 0;
}

Explicarea algoritmului: Algoritmul descompune în cifre numărul a şi adaugă fiecare cifră la numărul invers

8. Numărul obtinut din cifrele lui n prin inserare


Se citeşte un număr întreg a. Să se realizeze un algoritm care să afiseze numărul obtinut din cifrele pare
ale lui a.

De exemplu dacă se citeşte pentru a valoarea 320740 atunci algoritmul va afişa numărul 2040.

Pseudocod Program C++


a, nou, p întreg
citeşte a
nou ← 0 //initial nou este nul
p ← 1 //initial p=1, adica pozitia unitatilor din nou
┌cât timp a ≠ 0 executa
|
| ┌dacă a % 2 = 0 atunci
| | nou ← nou + a % 10 * p
| | p ← p * 10 //p trece la pozitia urmatoare
| |▄
|
| a ← a / 10
└■
scrie nou
Explicarea algoritmului: Algoritmul descompune în cifre numărul a şi insereaza fiecare cifră para in fata
numarului nou. Variabila p memoreaza pozitia pe care se va insera fiecare cifra (unitati, zeci, sute ... etc.)

9. Numărul palindrom

Se citeşte un număr întreg a. Să se realizeze un algoritm care să verifice dacă numărul citit este sau nu
palindrom. Numim palindrom un număr care este egal cu oglinditul său.

De exemplu dacă se citeşte pentru a valoarea 323 atunci algoritmul va afişa „PALINDROM”, iar dacă va citi
123 va afişa „NU”.

Pseudocod Program C++


a, ogl, clona întreg #include <iostream>
citeşte a using namespace std;
clona ← a //salvez valoarea initiala a lui a int main()
ogl ← 0 //initial ogl este nul {
┌cât timp clona ≠ 0 execută int x,ogl=0,x1;
| ogl ← ogl * 10 + clona % 10 cin>>x;
| clona ← clona / 10 x1=x;
└■ while(x1!=0)
┌dacă a = ogl atunci {
| scrie ”PALINDROM” ogl=ogl*10+x1%10;
| altfel x1=x1/10;
| scrie ”NU” }
└■ if(x==ogl)cout<<"Numarul este un palindrom";
else cout<<"Numarul nu este un palindrom";
return 0;
}

Explicarea algoritmului: Algoritmul se bazează pe problema anterioară, de calcul al numărului invers.


Un număr este palindrom dacă numărul iniţial citit este egal cu inversul sau.
De aceea algoritmul descompune în cifre numărul a şi formează numărul invers, dupa care compară acest
număr invers cu numărul iniţial citit.
Am descompus în cifre o copie a numărului „a” deoarece în structura repetitivă se modifică valoarea numărului
introdus, iar noi avem nevoie de valoarea iniţiala pentru verificare.

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