Probleme C++ Rezolvate

Previzualizare laborator:

Extras din laborator:

Problema 1: cmmdc(a, b)

#include<stdio.h>

#include<conio.h>

//algoritmul lui Euclid

//cel mai mare divizor comun pentru doua numere strict pozitive

void citire_cu_validare(int&, int&);

int cmmdc(int, int);

int cmmdc1(int x, int y);

int cmmdc_recursiv(int, int);

void main(void) {

int a, b;

clrscr();

citire_cu_validare(a, b);

printf("n cmmdc(%d,%d)=%d",a, b, cmmdc(a, b));

printf("n cmmdc_recursiv(%d,%d)=%d",a, b, cmmdc_recursiv(a, b));

getch();

}

void citire_cu_validare(int& a, int& b) {

int aux; //folosita pentru interschimbare cand a < b

for(;;) {

printf("n Introduceti numerele:n");

if(scanf("%d%d",&a, &b) != 2) {

printf("nNumere introduse incorect");

continue;

}

//evit impartirea la 0

if(a <= 0 || b <= 0) {

printf("n Numerele nu sunt strict pozitive");

continue;

}

//interschimbare daca a < b

if(a < b) {

aux = a;

a = b;

b = aux;

}

break;

}

}

int cmmdc1(int x, int y) {

int rest;

while(y != 0) {

if(x%y == 0) break;

rest = x % y;

x = y;

y = rest;

}

return y;

}

int cmmdc(int x, int y) {

int cmmdc = 0, rest;

while(rest = (x % y)) {

x = y;

y = rest;

}

cmmdc = y;

return cmmdc;

}

int cmmdc_recursiv(int x, int y) {

if(y == 0) return x;

else

cmmdc_recursiv(y, x%y);

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Probleme L10.doc
  • Probleme L11.doc
  • Probleme L2.doc
  • Probleme L3.doc
  • Probleme L4.doc
  • Probleme L5.doc
  • Probleme L6.doc
  • Probleme L7.doc
  • Probleme L8.doc
  • Probleme L9 .doc
Alte informații:
Tipuri fișiere:
doc
Nota:
7.5/10 (2 voturi)
Nr fișiere:
10 fisiere
Pagini (total):
65 pagini
Imagini extrase:
65 imagini
Nr cuvinte:
12 379 cuvinte
Nr caractere:
79 090 caractere
Marime:
114.45KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Laborator
Domeniu:
Limbaje de Programare
Predat:
la facultate
Materie:
Limbaje de Programare
Sus!