Sunteți pe pagina 1din 6

Algoritmi elementari

1.ALGORITMUL DE INTERSCHIMBARE
Interschimba valorile a doua variabile de memorie.

Exemplu: Presupunem ca avem 2 pahare: primul pahar (a) contine apa, al doilea pahar
(b) contine lapte. Cum putem interschimba continuturile celor doua pahare? Raspuns:
utilizand un alt pahar (aux).

Se vor utiliza 3 variabile: a si b (variabilele care isi interschimba valorile) si o


variabila aux.
#include <iostream>

int main() {
int a, b, aux;

cout << "Introduceti doua numere intregi: ";


cin >> a >> b;

// Schimba valorile folosind o variabila auxiliara


aux = a;
a = b;
b = aux;

cout << "Valorile schimbate sunt: " << a << " " << b << endl;

return 0;

}2.ALGORITMUL PENTRU DETERMINAREA MAXIMULUI


Sa se determine cea mai mare valoare dintr-un sir de n numere intregi citite de la
tastatura.

Algoritmul:

– se vor utiliza variabilele: n ( numarul de valori citite), i (contor), a ( valoarea citita),


max (maximul)

– se citeste primul numar si se considera ca fiind cel mai mare ( max <- a)

– se citesc pe rand valorile de la tastatura si se compara cu maximul curent. Daca


valoarea citita este mai mare decat maximul atunci se atribuie variabilei max acea
valoare.
#include <iostream>

int main() {

int n, i, a, max;

cout << "Introduceti valoarea lui n: ";

cin >> n;

// Se presupune că există cel puțin un element în secvență

cout << "Introduceti primul element: ";

cin >> a;

// Inițializăm max cu primul element

max = a;

for (i = 2; i <= n; ++i) {

cout << "Introduceti urmatorul element: ";

cin >> a;

// Verificăm dacă elementul curent este mai mare decât max

if (a > max) {

max = a;

cout << "Cel mai mare element din secventa este: " << max << endl;

return 0;}
Probleme rezolvate maxim/minim
3.ALGORITMI PENTRU PRELUCRAREA CIFRELOR UNUI NUMAR
a) Extragerea cifrelor unui numar
Ex: Se citeste de la tastatura un numar intreg a. Sa se determine suma cifrelor
numarului a.

Algoritmul presupune extragerea pe rand a cifrelor numarului a incepand de la ultima


cifra si adaugarea cifrei la suma prin operatia s <- s + a mod 10 unde a mod 10 este
ultima cifra a numarului, apoi eliminarea cifrei prin operatia a <- a div 10. Algoritmul
se incheie atunci cand s-au adunat toate cifrele numarului deci valoarea
variabilei a este 0.
#include <iostream>

int main()
{
int a, s;
cout << "Introduceti un numar intreg: ";
cin >> a;
s = 0;
while (a != 0) {
s += a % 10;
a /= 10;
}
cout << "Suma cifrelor este: " << s << endl;
return 0;
}

Exemple C++ prelucrarea cifrelor


b) Inversul unui numar
Pentru determinarea inversului (oglinditului) unui numar se vor utiliza
variabilele: a ( numarul citit de la tastatura) si inv (inversul). Initial valoarea
variabilei inv este 0. Inversul se va construi pas cu pas prin formula inv <- inv *10 +
a mod 10;
#include <iostream>

int main() {
int a, inv;

cout << "Introduceti un numar intreg: ";


cin >> a;

inv = 0;

while (a != 0) {
inv = inv * 10 + a % 10;
a /= 10;
}

cout << "Numarul inversat este: " << inv << endl;

return 0;
}

Probleme rezolvate prelucrarea cifrelor


4.Determinarea divizorilor unui numar
Pentru determinarea divizorilor unui numar se vor utiliza variabilele: a (numarul citit
de la tastatura), i (contor). Se vor cauta posibilii divizori in intervalul [2, a/2]. Daca a
mod i = 0 (a se divide la i) atunci se afiseaza divizorul (i).

#include <iostream>

int main() {

int a, i;

cout << "Introduceti un numar intreg: ";

cin >> a;

cout << "Factorii primi ai lui " << a << " sunt: ";

for (i = 2; i <= a / 2; ++i) {

if (a % i == 0) {

cout << i << " ";

cout << endl;


return 0; }

5.Determinarea unui numar prim


Un numar este prim daca se divide doar la 1 si la el insusi.
Pentru verificarea unui numar prim se vor utiliza variabilele: a (numarul citit de la
tastatura), i (contor) si sw. Vom considera ca numarul este prim deci variabila sw se
va initializa cu valoarea 1. Se vor cauta posibilii divizori in intervalul [2, a/2]. Daca a
mod i = 0 (a se divide la i) atunci rezulta ca numarul nu este prim deci schimbam
valoarea variabilei sw=0.
#include <iostream>

int main() {
int a, i, sw;

cout << "Introduceti un numar intreg: ";


cin >> a;

sw = 1; // presupunem că numărul este prim

for (i = 2; i <= a / 2; ++i) {


if (a % i == 0) {
sw = 0; // numărul nu este prim
break; // ieșim din buclă, nu mai este necesar să verificăm și alți factori
}
}

if (sw == 1) {
cout << "Numarul " << a << " este prim." << endl;
} else {
cout << "Numarul " << a << " nu este prim." << endl;
}

return 0;
}
6.Determinarea celui mai mare divizor comun
Algoritmul determina cel mai mare divizor comun pentru doua numere intregi a si b
citite de la tastatura.
Se vor utiliza variabilele: a,b (numerele citite de la tastatura), r (restul impartirii a mod
b) .

#include <iostream>

int main() {
int a, b, r;
cout << "Introduceti doua numere intregi: ";
cin >> a >> b;
while (b != 0) {
r = a % b;
a = b;
b = r;
}
cout << "Cel mai mare divizor comun (CMMD) al celor doua numere este: " << a << endl;
return 0;}

Exemplu:
a=30 b= 18
I. 18 0 se calculeaza r = 30 mod 18 = 12 a = 18 b = 12
II. 12 0 se calculeaza r = 18 mod 12 = 6 a = 12 b=6
III. 6 0 se calculeaza r = 12 mod 6 = 0 a=6 b=0
IV. 0 0 Fals
Se afiseaza 6 (cel mai mare divizor comun )

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