Documente Academic
Documente Profesional
Documente Cultură
111
1ALGORITMI ELEMENTARI
Cuprins:
Reprezentarea algoritmilor:.........................................................................................................................4
I.Principiile programarii structurate.............................................................................................................4
PSEUDOCODUL:...........................................................................................................................................5
SCHEMA LOGICA..........................................................................................................................................6
MECANISM DE FUNCTIONARE.....................................................................................................................7
SELECTIA MULTIPLA.....................................................................................................................................7
cu cifreleunui numar:...................................................................................................................................9
a) Extragerea cifrelor unui numar................................................................................................................9
b) Inversul unui numar:.............................................................................................................................10
Aflarea cifrei maxime dintr-un număr n:...................................................................................................11
Aflarea cifrei minime dintr-un număr n:....................................................................................................12
număr cu cifre distincte:............................................................................................................................12
numere de tip palindrome:........................................................................................................................13
Determinarea divizorilor unui numar........................................................................................................15
Determinarea unui numar prim.................................................................................................................15
descompunerea in factori primi:...............................................................................................................16
Descompunerea în factori primi................................................................................................................18
Algoritmul lui Euclid (cel mai mare divizor comun a doua numere)..........................................................18
3
1ALGORITMI ELEMENTARI
Exemplu :
Presupunand ca dispunem de un aragaz ,o tigaie ,2 oua ,sare si 200
ml ulei ,sa pregatim ochiuri .
4
1ALGORITMI ELEMENTARI
Reprezentarea algoritmilor:
.
II. Descrierea algoritmilor:
PSEUDOCODUL:
reprezinta un set restrans de cuvinte in romana sau engleza asociate
unor operanti.Astfel , cuvintele utilizate sunt : intreg , real , citeste ,
scrie , daca , atunci , altfel , sfarsit daca , pentru , cat timp ,
6
1ALGORITMI ELEMENTARI
Exemplu:
Intreg
, b , c
citeste a , b
c= a + b
scrie c
STRUCTURA SECVENTIALA(LINIARĂ)
7
1ALGORITMI ELEMENTARI
{ p1
.
.
} pn
STRUCTURA ALTERNATIVA
MECANISM DE FUNCTIONARE:
8
1ALGORITMI ELEMENTARI
altfel
instr2
sfarsit_daca
Mecanism de functionare : se evalueaza conditia la o valoare logica.Daca
este adevarat se executa instr1 , daca nu , se executa instr2.
SELECTIA MULTIPLA
9
1ALGORITMI ELEMENTARI
cu cifreleunui numar:
intreg a, s;
inceput
citeste a;
s <- 0;
cat_timp a 0 executa
sfarsit_cat_timp;
scrie s;
sfarsit.
10
1ALGORITMI ELEMENTARI
intreg a, inv;
inceput
citeste a;
inv <- 0;
cat_timp a 0 executa
sfarsit_cat_timp;
scrie inv;
sfarsit.
11
1ALGORITMI ELEMENTARI
while(n > 0) { pc = n / p;
n = n % p;
p = p /10;
cout<<pc<
Exemple:
dacă n=5428 el are 3 cifre pare (4, 2 și 8), dacă n=49285640 el are 6 cifre pare (4,
2, 8, 6, 4, 0).
#include
cin>>n;
nrp = 0;
if ( c % 2 == 0 ) { nrp = nrp + 1; }
n = n / 10; }
#include
12
1ALGORITMI ELEMENTARI
n = n /10;
0 } cout<
#include
n = n /10;
cout<< cmin;
return 0;}
Exemplu:
13
1ALGORITMI ELEMENTARI
#include
cin>>n;
c n= 0;
{ c = n % 10;
cn = n / 10;
cn = cn/ 10;
n = n / 10; }
if (cn==0)
cout<<
#include
#include
using namespace std;
int main() { long long p, r;
cin>>p;
r = 0;
while ( p > r ) { r = r * 10 + p % 10;
p = p / 10; }
// când numărul are un număr par de cifre testăm dacă
p == r //
când numărul are un număr impar de cifre testăm dacă
p == r / 10 if ( p == r || p == (r / 10) )
cout<<"DA" ;
else cout<<"NU" ;
return 0; }
15
1ALGORITMI ELEMENTARI
intreg a, i;
inceput
citeste a;
atunci scrie i;
sfarsit_daca;
sfarsit_pentru;
sfarsit.
Pentru verificarea unui numar prim se vor utiliza variabilele: a (numarul citit
de la tastatura), i (contor) si sw.
16
1ALGORITMI ELEMENTARI
intreg a, i,sw;
inceput
citeste a;
sw <- 1;
atunci sw <- 0;
sfarsit_daca;
sfarsit_pentru;
daca sw = 1
sfarsit.
Număr prim
17
1ALGORITMI ELEMENTARI
Se citește un număr n. Să se spună dacă n este prim. Un număr este prim dacă nu
se împarte decât la 1 și la el însuși. Vom proceda similar cu afişarea divizorilor:
vom căuta primul divizor al lui n, începând cu 2.
Dacă găsim un divizor, numărul nu este prim. Dacă, în schimb, primul divizor găsit
este chiar n, numărul este prim. Putem face mai puține iterații dacă observăm că
dacă un număr nu are nici un divizor strict mai mare ca 1 dar mai mic sau egal cu
radical din n atunci el nu va avea nici alți divizori mai mari decât radical din n dar
mai mici decât n. Putem, deci, înlocui condiția d <= n/2 cu d * d <= n. În acest caz
va trebui să modificăm condiția finală de test de primalitate în d * d > n.
#include
cin>>n ;
d = 2;
) cout<
#include
18
1ALGORITMI ELEMENTARI
int main()
{ int n, pc, p;
p = 1;
while(n > 0)
{ pc = n / p; n = n % p; p = p /10;
cout<<pc<” “;}
return 0;}
Observație: nu este nevoie să testăm dacă un divizor este prim, putem testa toți
divizorii.
#include
while ( n > 1 ) { p = 0;
19
1ALGORITMI ELEMENTARI
Algoritmul lui Euclid (cel mai mare divizor comun a doua numere)
Cel mai mare divizor comun al două numere naturale n și m poate fi determinat
folosind descompunerea în factori primi a celor două numere.
Algoritmul lui Euclid cu împărțiri se bazează pe ideea că cel mai mare divizor a
două numere a, b divide și restul împărțirii acestora, r, conform teoremei
împărțirii cu rest.
Algoritmul este:
· Cât timp b != 0: o
· Valoarea actuală a lui a este cel mai mare divizor comun a valorilor inițiale.
#include
cin>>a>>b; p=a*b;
while ( b > 0 ) { r = a % b; a = b; b = r; }
cout<<a<<
Observație:
20
1ALGORITMI ELEMENTARI
Pentru a determina cel mai mic multiplu comun a două numere naturale folosim
următoarea teoremă: Produsul a două numere naturale este egal cu produsul
dintre cel mai mare divizor comun al lor și cel mai mic multiplu comun al lor:
n * m = cmmdc * cmmmc
Exemplu
Răspuns:
după cum se vede și din figură, broscuța și iepurele vor sări o lungime egală cu
CMMMC(m, n).
21