Sunteți pe pagina 1din 70

https://infogenius.

ro/operatori-expresii-cpp/
Elementele de bază ale limbajului de programare C++
Un limbaj de programare reprezintă un mijloc de comunicare între programator şi calculator.
Informaţia ce trebuie comunicată este codificată printr-un program pe baza a trei componente:
• un set de acţiuni
• set de date într-o anumită
• secvenţă de acţionare.

Limbajul de programare C++


La începutul anilor 70 a apărut limbajul C – creaţia lui Dennis Ritchie şi Brain Kernighan.
Limbajul C++ este creaţia lui Bjarne Stroustrup şi reprezintă o extensie a limbajului C care Repere istorice în evoluţia
permite limbajelor de programare:
programarea pe obiecte. • 1955 – FORTRAN
Realizarea unui program scris în C++ necesită parcurgerea a patru etape: (FORmula TRANslation)
• editare – scrierea programului sursă, prin crearea unui fişier cu extensia .cpp; • 1960 – ALGOL
• compilare – se aduce în memoria internă programul sursă, se verifică erorile şi se converteşte (ALGOrithmic Language)
acest program în program obiect, având extensia .obj; • 1960 – COBOL (COmmon
• link-editare – se leagă programul obiect cu bibliotecile de sistem şi se transformă într-un Business Oriented Language)
program • 1971 – Pascal (Blaise
executabil având extensia .exe; PASCAL)
• execuţie – se lansează în execuţie programul obiect: se efectuează citirea datelor, calculele şi • 1972 – C
scrierea rezultatelor, formându-se fişierul. • 1980 – C++
• 1995 – Java
Limbajul de programare C++

La începutul anilor 70 a apărut limbajul C – creaţia lui Dennis Ritchie şi Brain Kernighan.

Limbajul C++ este creaţia lui Bjarne Stroustrup şi reprezintă o extensie a limbajului C care permite programarea pe obiecte.

Realizarea unui program scris în C++ necesită parcurgerea a patru etape:

1. editare – scrierea programului sursă, prin crearea unui fişier cu extensia .cpp;

2. compilare – se aduce în memoria internă programul sursă, se verifică erorile şi se converteşte

acest program în program obiect, având extensia .obj;

3 link-editare – se leagă programul obiect cu bibliotecile de sistem şi se transformă într-un program

executabil având extensia .exe;

4 execuţie – se lansează în execuţie programul obiect: se efectuează citirea datelor, calculele şi

scrierea rezultatelor, formându-se fişierul.


Orice program C++ trebuie să conţină în mod
obligatoriu o funcţie specială numită main()
Funcţia main() mai este numită şi funcţia principală
sau programul principal.
Directivele preprocesor sunt fişiere librării memorate separat şi care au extensia .h

• iostream este un fişier antet (header) care este utilizat pentru a gestiona intrările şi ieşirile implicite de date
(datele de intrare se vor prelua implicit de la tastatură şi datele de ieşire vor fi afişate în mod implicit pe monitor).
Librăria iostream face parte din biblioteca implicită a limbajului C++.
În funcţie de alte opţiuni ale utilizatorului se vor insera în codul sursă şi alte fişiere antet cum ar fi:
• cmath – este un fişier care face parte din biblioteca standard a limbajului C, unde sunt definite funcţiile
matematice (cum ar fi radical din x –sqrt(x), ridicare la putere pow(a,b), modulul unui număr abs(a),funcţiile
trigonometrice, etc.
• fstream - este un fişier în care sunt definite funcţiile de bază pentru lucru cu fişiere text.
Stream-urile implicite tastaura şi monitorul se vor schimba în fişiere text de intrare sau de ieşire.
!! Directivele nu se încheie cu ;
• Std – este o prescurtare a cuvântului standard. În cadrul spațiului de nume std găsim funcții simple pentru citirea
și afișarea textului pe ecran, raportarea unor erori de logică ce apar în timpul execuției programului. (pachet ce
conține date utilizate de program)
După includerea în program a fişierelor header urmează o secţiune rezervată definirii de tipuri de date şi variabile
globale.
Cuvântul-cheie int reprezintă o variabilă de tip număr întreg, parentezele rotunde arată faptul că main este o funcție,
toate funcțiile deosebindu-se de variabile și clase prin parantezele rotunde.

return 0; Determină funcția main să se finalizeze. Este cel mai utilizat mod de încheiere a unui program în consolă.

Funcția main fiind de tip int, aceasta trebuie să returneze o variabilă de tip întreg după executarea ei. În cazul în care
codul a fost executat corect, fără erori, funcția main va returna valoarea 0.
Acoladele sunt separatori ai funcției main, iar ce se află în interiorul lor este codul pe care funcțiamain îl va executa la
rularea programului.

Un program poate să conțină comentarii:

/* comentariu pe
//comentariu doar pe un rand, explica o actiune
mai multe rânduri
Daca exista un bloc de actiuni
Si dorim sa nu fie compilate
*/
Elementele de limbaj Limbajul C++ este caracterizat de:
1. • sintaxă – formată din totalitatea regulilor de scriere corectă a programelor;
2. • semantică – reprezintă semnificaţia construcţiilor corecte din punct de vedere sintactic;
3. • vocabular – este format din totalitatea cuvintelor care pot fi folosite într-un program.
Vocabularul limbajului C++ este format din:
1. • setul de caractere;
2. • identificatori;
3. • cuvinte cheie;
4. • comentarii;
5. • separatori.
Setul de caractere utilizat pentru scrierea programelor este setul de caractere al codului ASCII:
1. litere mari şi mici ale alfabetului englez
2. cifrele sistemului zecimal
3. semnele matematice şi de punctuaţie şi separatori: +,-,*,/,%,<,>,=,#,!,&,|,?,^,(,),[,],{,},;
Identificatori

Definiţie:

Identificatorii sunt acele construcții care au rolul de a denumi elemente ale programului şi reprezintă nume de:

constante, variabile, funcţii, etc.

Din punct de vedere sintactic un identificator este constituit dintr-o succesiune de litere mari sau mici ale alfabetului

englez, cifrele sistemului zecimal şi caracterul “_”, cu condiţia ca primul caracter să nu fie o cifră.
Separatori şi comentarii
Separatorii au rolul de a delimita unităţile lexicale dintr-un program.
Lista separatorilor admişi în limbajul C++ este:
* (,) parantezele rotunde încadrează lista de parametrii a unei funcţii, sau precizează ordinea de efectuare a
operaţiilor pentru evaluarea unei expresii.
* { } acoladele încadrează instrucţiunile compuse, care se mai numesc şi blocuri.
* [ ] parantezele drepte încadrează dimensiunile tablourilor
* " " ghilimelele încadrează şirurile de caractere
* ' ' apostrofii încadrează un singur caracter
* ; fiecare instrucţiune se încheie cu caracterul ;
• /* comentariile sunt încadrate de caracterele */
• // dacă dorim ca un singur rând din codul sursă sa fie comentat,
• Comentariile sunt texte care vor fi ignorate în momentul execuţiei programelor, dar au rolul de a clarifica si a face un
cod sursă mai clar pentru cel care citeşte acel cod.
Tipuri de date C/C++
• Tipul de date reprezintă un concept foarte important în C/C++.
• Orice dată (constantă sau variabilă) este de un numit tip.
• Tipul datei precizează ce valori poate avea acea dată și ce operații se pot face cu ea.

În C/C++ tipurile de date sunt:


1. Tipuri simple
2. Tipuri întregi
3. Tipuri reale
4. Tipul pointer
5. Tipul bool

Tipul void
Tipuri derivate
Tipul tablou (vectori si matrici)
Tipul structură ( structura de date, grupeaza mai multe tipuri de date in descriere)
Tipul enumerare
Tipul void permite explicitarea faptului că o funcţie nu returnează nimic sau nu are nici un parametru. Este tipul de
dată vidă (fără tip specificat), utilizat în general pentru mărirea clarităţii programelor.

Exemplu:
void salut(void)
{
cout<<“ SALUTAM PROGRAMATORII IN LIMBAJUL C++!!! ”<<endl;
}

Tipul pointer

O dată de tip pointer memorează o adresă de memorie – de exemplu adresa unei variabile. Vom reveni asupra tipului
pointer mai târziu (clasa a X-a)

Tipul bool

Anumite operații care se fac cu datele au ca rezultat valori de adevăr: adevărat sau false. În anumite limbaje de
programare există un tip de date care memorează exact aceste două valori.

În limbajul C++ există tipul bool. Acest tip conține două valori: true și false. De fapt, acestea sunt redenumiri ale
valorilor 1 și 0.
http://www.cplusplus.com/reference/clibrary/
Citirea/scrierea datelor
Citirea datelor reprezintă operaţia prin care una sau mai multe variabile primesc valori prin introducerea lor de la tastatură
sau prin extragerea lor de pe un suport extern (adică dintr-un fişier text)
În fişierul antet iostream este definit acest stream (flux) de intrare a datelor de la tastatură, denumit cin (console input).
Atunci când dorim să citim datelele de la tastatură le vom extrage din fluxul de intrare, folosind operatorul de extragere
”>>”. Din acest punct de vedere forma general a operaţiei de citire este:

cin>>nume_variabilă;

Dacă dorim să citim succesiv mai multe variabile, atunci putem utiliza operatorul de extragereînlănţuit, adică:
cin>>nume_variabilă_1>>nume_variabilă_2>>...>>nume_variabilă_n;
Ex. cin>>x;
Prin afişarea sau scrierea datelor vom întelege operaţia prin care rezultatele obţinute prin prelucrarea datelor de intrare vor
fi afişate pe ecranul monitorului, fie vor fi memorate într-un fişier text pe un suport extern de memorare.

În fişierul antet iostream este definit acest stream de ieşire a datelor de la tastatură, denumit cout (console output). Atunci
când dorim să afişăm datelele le vom extrage din fluxul de ieşire, folosind operatorul de ieşire ”<<”. Din acest punct de
vedere forma generală a operaţiei de afişare este:

cout<<expresie; sau pentru afisare corecta: cout<<“ text ”<<variabila<<endl;


Ca efect, se evalueză expresia, iar valoarea ei este convertită într-o succesiune de caractere care vor fi afişate pe ecran.
Şi operatorul de ieşire poate fi utilizat înlănţuit atunci cand dorim sa afişăm mai multe date pe ecran:
cout<<expresie_1<<expresie_2<<expresie_3<<...<<expresie_n;
Ex. cout<<” s-a citit numărul ”<<x;
• Pentru afişarea unui text pe mai multe rânduri se foloseşte secvența Escape “\n” care are ca efect mutarea cursorului
la începutul rândului următor pe ecran. (salt la un rând nou).
• Se poate utiliza şi manipulatorul numit endl (end line).
La scrierea în streamuri, datele de ieşire se acumulează într-un buffer (stream) care se goleşte periodic, nefiind nevoie
de accesarea discului la fiecare operaţie de scriere.
Manipulatorul de format endl, face flush stream-ului de ieşire, ceea ce forţează scrierea pe disc. Dacă aceasta se
întamplă într-un ciclu, atunci viteza scade catastrofal. (din Sfaturi de bună practică pentru concurenţii OJI / ONI 2020)
#include <iostream> //directiva de includere a fisierului

using namespace std;

int main()
{
cout << "un exemplu "<<endl ;
cout <<"foarte simplu"<<endl;
cin.ignore();
cin.get();
return 0;
}
Se citesc trei valori , sa se afiseze media lor

#include <iostream>
using namespace std;
int main()
{
float a,b,c,s,m;
cout<<"a="; cin>>a; //a citit valoarea lui a
cout<<"b="; cin>>b; //a citit valoarea lui b
cout<<"c="; cin>>c; //a citit valoarea lui c

s=a+b+c; //calcuzeaza media a trei variabile


m=s/3;
cout<<"media = "<<m<<endl;
return 0;
}
Instrucţiunile limbajului C++

Limbajul C++ consideră instrucţiunile ca fiind instrucţiuni simple şi instrucţiunicompuse:


• O instrucţiune simplă este de fapt o singură instrucţiune, cum ar fi aceea de atribuire sau de apel a unei funcţii standard (de
exemplu funcţia cout).
• O instrucţiune compusă este alcătuită din două sau mai multe instrucţiuni incluse între acolade.
Instrucţiunea expresie: Are 3 forme:
1. instrucţiunea de atribuire
2. instrucţiunea de apel de funcţie
3. instrucţiunea de incrementare / decrementare

Instrucţiunea de atribuire: variabila = expresie; sau variabila operator = expresie;

Exemplu de atribuire:
z = x + 5 * y;
x + = 10; // (semnificație: x = x + 10; )
b) instrucţiunea de apel de funcţie
nume_functie(pa1, pa2, . . . ,pan); //unde pa1, pa2, . . ., pan sunt parametrii actuali ai funcţiei (adică valorile cu care se
va lucra în funcţia respectivă la apelul funcţiei).
Exemplu:
maxim (int a, int b); // apelul functiei maxim care are doi parametri actuali de tip întreg
c) instrucţiunea de incrementare/decrementare
variabila ++;
++ variabila;
variabila --;
-- variabila;
Stă la baza celor mai mulți algoritmi. Forma cea mai des folosită este var++ sau var- - , în traducere însemnând var+1,
respectiv var -1.
Exemplu:
int i, j, k;
i++;
--j;
k++ + --i;

Instrucţiunea if (instrucţiune de decizie sau condiţională)


Are două forme:
if (expresie) actiune;
if (expresie)
actiune1;
else
actiune2;
Aplicații - Instrucțiunea if
1. Se dau trei numere întregi a,b,c. Să se afişeze numerele în ordine crescătoare.
Exemplu: Dacă a = 12, b = 2, c = 9, atunci obţinem a = 2, b = 9, c = 12
Pasii de realizare algoritm:
Pas 1 Analiza problemei ( ce stim si ce nu stim?)

Pas 2 : Declararea datelor de intrare si iesire // se creeaza locatii de memorie pentru variabilele declarate
Date de intrare: a, b, c numere întregi
Date de iesire: a, b, c în ordine crescătoare
Pas 3: Solicitare valori pentru datele de intrare
scrie “valoare pentru a ”; memoreaza a
scrie “valoare pentru b ”; memoreaza b
scrie “valoare pentru c ”; memoreaza c
Pas 4: rezolvarea problemei
1) Comparăm primele două numere a şi b, dacă a este mai mare decât b atunci vom interschimba cele două valori.
2) Comparăm următoarele două numere b şi c, dacă b este mai mare decât c atunci vom interschimba cele două valori.
3) Comparăm din nou cele două numere a şi b, dacă a este mai mare decât b atunci vom interschimba cele două valori.
Pas 5 afisarea rezultatului
Afiseaza a,b,c a=4
b=7
c=2
247
Se citesc laturile pentru trei patrate Se citesc varstele pentru trei copii
Sa se afiseze patratul cu latura cea mai mica Sa se afiseze cine este cel mai mare?

#include <iostream> #include <iostream>


using namespace std; using namespace std;
int main() int main()
{int a,b,c,min; {int a,b,c,max;
cout << "ce latura are primul patrat" << endl; cout << "ce varsta are primul copil" << endl;
cin>>a; cin>>a;
cout << "ce latura are al doilea patrat" << endl; cout << "ce varsta are a doilea copil" << endl;
cin>>b; cin>>b;
cout << "ce latura al treilea patrat" << endl; cout << "ce varsta are al treilea copil" << endl;
cin>>c; cin>>c;
if(a<b && a<c )min=a; if(a>b && a>c )max=a;
if(b<c && b<a) min=b; if(b>c && b>a) max=b;
if(c<a && c<b)min=c; if(c>a && c>b)max=c;
cout<<"patratul cu latura cea mai mica este " <<min<<endl; cout<<"copilul cel mai in varsta are " <<max<<“ani”<<endl;
return 0; return 0;
} }
TEMA

4.Scrieți un program care va afişa calificativul obținut în urma examenului de compentențe digitale.
// se recomanda cu structura SWITCH

P <=10, fara punctaj


11 <=p<=30 incepator
31 <=p<=55 mediu
56 <=p<=74 avansat
p>=75 experimentat

5.Se citesc 4 numere de la tastatură. Să se determine dacă suma lor este pozitivă.
6. Se citesc 3 numere de la tastatură. Să se determine dacă produsul lor este pozitiv.
7. Se citeşte un număr de la tastatură, întreg şi pozitiv de maxim 5 cifre. Să se determine câte cifre are numărul.
Exemplu: n=123 are 3 cifre.
Instrucţiunea while (instrucţiune repetitivă cu test iniţial)

Are următoarea formă:


while (expresie)instructiune;
unde instrucţiune poate fi:
1. instrucţiunea vidă
2. instrucţiunea simplă
3. sau instrucţiunea compusă

Funcţionarea unei astfel de instrucţiuni se bazează pe evaluarea expresiei date şi executarea repetată a instrucţiunii cât
timp expresia este îndeplinită.

Aplicații instrucțiunea while


1. Se citeşte un număr n. Să se afişeze suma cifrelor numărului n.
TEMA

1. Se citeşte un număr natural n. Să se calculeze produsul cifrelor numărului n.


2. Scrieți un program care afişează cmmdc a două numere a şi b citite de la tastatură.(Algoritmul lui Euclid)
3. Scrieți un program care afişează cmmdc a două numere a şi b citite de la tastatură.(Algoritmul lui Nicomahus)
4. Scrieți un program care afişează cmmmc a două numere a şi b citite de la tastatură. (cmmmc=a*b/cmmdc)
5. Se citeşte un număr întreg a. Să se scrie un program 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 121
atunci algoritmul va afişa „este palindrom", iar dacă va citi 122 va afişa „nu este palindrom".
6. Să se scrie un program care citeşte un număr şi numără câte cifre pare şi câte impare are numărul.
7. Se citeşte un număr natural n. Să se calculeze suma cifrelor numărului n.
Instrucţiunea do while (instrucţiune repetitivă cu test final)
Are următoarea formă:

do {
Instructiuni;
}
while (expresie_logica);
unde instrucţiune poate fi:
* instrucţiunea vidă
* instrucţiunea simplă
* instrucţiunea compusă
Funcţionarea unei astfel de instrucţiuni se bazează pe executarea repetată a instrucţiunii cât timp condiţia este
îndeplinită.

Aplicații instrucțiunea do while


1. Fie un număr natural n de cinci cifre. Să se scrie un algoritm care să calculeze suma cifrelor numărului dat.
Exemplu:
Pentru n = 20178, se va afişa valoarea s = 2+0+1+7+8 = 18
Instrucţiunea for

Este una dintre cele mai “puternice” instrucţiuni ale limbajului C/C++, datorită formei sale.
Forma instrucțiunii este:
for(expresie1; expresie2; expresie3)
instructiune;
expresie1 – reprezintă secvenţa de iniţializarea a contoruluic i=1;
expresie2 – reprezintă condiţia de terminare a contorului i<=n;
expresie3 – reprezintă secvenţa de reiniţializare a contorului i++
instrucţiune - corpul ciclului

Funcţionarea instrucţiunii for are loc astfel:


• Se porneşte ciclul repetitiv prin iniţializarea sa, adică prin execuţia expresia1
• iar apoi se evaluează expresia2 şi dacă este adevărată se execută corpul ciclului, adică instrucţiune
• după aceea se execută expresia3, şi se reia evaluarea expresiei2.

Observaţie:
expresia1, expresia2, expresia3 pot să lipsească, dar este obligatorie prezenţa semnelor: “;”.
for( ; ; )
while(1) – buclă infinită
Forma echivalentă pentru FOR (transformarea lui FOR in WHILE)

Instrucţiunea for este de fapt o variantă particulară a instrucţiunii while


expresie1; //se initializeaza contorul
while(expresie2) //testeaza pana cand executainstructiunile
{
instructiune;
expresie3; //creste contorul
}

Aplicații instrucțiunea for


1. Fie un număr natural n. Să se scrie un algoritm care să calculeze factorialul numărului dat.
Exemplu:
Pentru n = 5, se va afişa valoarea p = 1*2*3*4*5=120.
Să se scrie un program care afişează tabla înmulţirii de la 1 la 10

#include <iostream>
using namespace std;
int main()
{
for(int i=0;i<=10;i++)
{
cout<<"Inmultirea cu "<<i<<"."<<endl;
for(int j=0; j<=10; j++)
{
cout<<j<< "*“ <<i<< "=“ << j * i <<endl;
}
cout<<endl; // se termina j si trece la urmatorul i
}
return 0;
}
2. Conversia unui număr natural din baza b în baza 10
Regula de reprezentare în orice bază de numeraţie: fiecărei poziţii în număr îi corespunde oputere a acelei baze de
numeraţie.
Putem genera valoarea unui număr din baza b în baza 10 - plecând de la dreapta spre stânga - astfel:
• primei poziţii din dreapta îi corespunde puterea 0 a lui b,
• următoarei poziţii îi corespunde puterea 1 a lui b,
• etc
Aplicaţii:
1. Se dă un număr natural n. Să se afişeze în ordine crescătoare, primii n termeni ai şirului lui Fibonacci. (problema
Fibonacci pe pbinfo.ro)
2. Se dau n numere naturale. Să se verifice despre fiecare dacă este termen al şirului lui Fibonacci. (problema FiboVerif pe
pbinfo.ro)

#include <iostream>
using namespace std;
short n,i;
int a,b,c,x;
int main() if(c==x)
{ cout << "DA, este termen Fibo"<<"\n";
cin >> n; else
for(i=1; i<=n; i++) cout << "NU, nu este termen Fibo"<<"\n";
{ cin >> x; }
if(x==1) }
cout << "DA"<<"\n"; return 0; }
else
{ a=1, b=1;
do {
c = a+b; a = b; b = c;
} while(c<x);
3. Se citește un număr natural n. Să se determine câte cifre 0 și câte cifre 1 are reprezentarea în baza 2 a acestui număr.
(problema FiboVerif pe pbinfo.ro)

#include <iostream>
using namespace std;
long int c1=0,c2=0,n,x;
int main()
{
cin>>n;
while(n>0)
{
x=n%2;
if(x==1)
c1++;
else
c2++;
n=n/2;
}
cout<<c2<<" "<<c1;
return 0;
}
Operatorul sizeof(tip_data) returneaza numarul de octetri ocupati de o variabila sau un tip de data
Structura repetitiva FOR - sa se afiseze literele alfabetului
Structura repetitiva FOR - sa se afiseze literele
alfabetului

*Tema de lucru
 1. Se citește un număr natural n. Să se calculeze : * realizati percurgerea programului
𝑛!={1,𝑑𝑎𝑐ă 𝑛=0 *transformati for in do si while
1∗2∗3∗…∗𝑛,𝑑𝑎𝑐ă 𝑛≥1 }
 2. Să se calculeze valoarea expresiei:
a. E=1*2 + 2*3 + 3*4 + ... + n*(n+1)
b. E=1+2+3+...+n
c. E=1*2 - 2*3 + 3*4+...+(-1) *n*(n+1)
n

d. E=11+12+13+⋯+1𝑛
e. E=11!+12!+13!+⋯+1𝑛!
3. Să se afișeze numerele mai mici sau egale cu n astfel: (1, n), (2,n-1), (3,n-2)...
Probleme cu cifrele unui număr
Frecvent se pune problema prelucrării cifrelor unui număr și pentru realizarea acestuia se pune
problema separării și analiza individuală a fiecărei cifre dintr-un număr dat.

int main()
{ cout<<”N=”;
cin>>N;
while (N!=0)
{ .......N%10; //prelucreaza ultima cifra a lui N
N=N/10; //stergem ultima cifra
}
cout<<”afiseaza cerinta ”<<rezultat;
}
• Se citeste un numar format din mai multe cifre.
1. Sa se afiseze cifrele separate prin spatii .
2. Sa se afiseze suma cifrelor pare a numarului
Se citesc mai multe numere pana se tasteaza cifra 0. Sa se afiseze cifrele pare al numerelor citite si suma lor
Sa se afiseze divizorii unui numar citit n
Se citesc n valori , sa se afiseze valoarea maxima
Se citesc mai multe valori pana se tasteaza 0. Sa se afiseze cifra valorilor pare, produsul cifrelor impare
Se citeste un numar. Sa se afiseze cate cifre sunt negative
Se citeste un numar. Sa se afiseze cate cifre are numarul
Se citesc doua numere. Sa se afiseze puterea n la m
CMMDC(a,b)
Problema. Fie doua numere naturale A si B. Sa se determine cel mai mare divizor comun a lui A si B.
Sa citim iar: Practic trebuie sa determinam un numar natural care sa fie divizor atat pentru A cat si pentru B. Daca sunt mai multe numere in aceasta situatie,
atunci il alegem pe cel mai mare.

Varianta 1 Varianta 2. Varianta 3. Varianta 4.


citeste A,B; citeste A,B citeste A,B; citeste A, B;
cat timp (B!=0) executa cat timp (A!=B) executa cat timp (A*B!=0) executa
cmmdc=0;
{R=A%B; daca (A>B) //daca nici unul nu e nul….
A=B; atunci A=A-B; daca (A>B) atunci A=A%B; pentru D=1 , A executa
B=R;} altfel B=B-A; altfel B=B%A; daca (A%D==0 si B%D==0 ) atunci
//se iese cand B este nul=> scrie A; scrie A+B; //afisez valoarea cmmdc=D;
scrie A; nenula
scrie cmmdc

Calculul CMMMC
Pentru calculul matematic a cmmdc pentru doua numere A si B, se realizeaza descompunerea in factori primi si apoi se
considera termenii comuni, la puterea cea mai mica.
Pentru calculul matematic a cmmmc pentru doua numere A si B, se realizeaza descompunerea in factori primi si apoi se
considera termenii comuni si necomuni, la puterea cea mai mare.
A*B=CMMDC(A,B)*CMMMC(A,B).
𝑎
b=10
𝑏

a= 8

Cmmdc=3 Cmmmc=18
CEL MAI MARE DIVIZOR COMUN
ALGORITMUL LUI NICOMAHUS ALGORITMUL LUI EUCLID
(metoda scaderilor repetate) (metoda impartirilor succesive)
#include <iostream> #include <iostream>
using namespace std; using namespace std;
int main() int main()
{ int a,b,r; { int a,b,r;
cout << "a=" ; cin>>a;
cout << "b=" ; cin>>b; cout << "a=" ; cin>>a;
while(b!=0) cout << "b=" ; cin>>b;
{ r=a%b; while (a!=b)
a=b; if(a>b) a=a-b;
b=r; else b=b-a;
} cout <<"cmmdc= "<<a;
cout<<"cmmdc="<<a;
return 0;
} CEL MAI MIC MULTIPLU COMUN

cmmmc * cmmdc =a*b;


Testarea unui numar prim
Afisarea numerelor prime pereche
Testarea unui numar palindrom

pentru a nu pierde numarul n dupa divizari, il retinem in x

Initializam numarul reconstruit din cifre


Ordinul de multiplicitate a divizorilor unui numar
Transformarea unui numar zecimal in numar binar
Testarea unui numar daca este patrat perfect

#include <iostream>
#include<cmath>

using namespace std;

int main()
{int n,a;
cout << "n=" << endl; cin>>n;
a=sqrt(n);
if(a==floor((sqrt(n))) cout<<"n patrat perfect";
else cout<<"nu este pp";
return 0;
}

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