Dati due numeri interi > 0 calcolare il MCD (algoritmo di Euclide)

Algoritmo numerico con struttura ciclica
Dati due numeri interi > 0 calcolare il MCD (algoritmo di Euclide)
Esempio con struttura ciclica postcondizionale
Start
A
I
B
I
V
A<B
C=A
A=B
B=C
Scambio delle
variabili in modo
che A diventi
maggiore di B
F
R = A Mod B
A=B
B=R
V
R≠0
F
MCD = A
MCD
O
End
Esempio di “Realizzazione di un flow-chart” a cura del Prof. Salvatore DE GIORGI
Pag. 1
Algoritmo numerico con struttura ciclica
 Analisi dei dati
Identificatore
Descrizione
Tipo
Input
A
primo numero
intero
si
B
secondo numero
intero
si
MCD
contiene il massimo
comune divisore (come
intero
variabile di output si può
usare anche la variabile A)
Output
Lavoro
si
R
comodo : resto della
divisione fra A e B
si
C
comodo : utilizzata per lo
scambio)
si
#include <iostream>
using namespace std;
// ricerca del MCD fra due numeri con l'algoritmo di EUCLIDE
// utilizzando un cliclo do...while
int main (int argc, char *argv[])
{
char quit;
quit = '\0';
int a,b,c,resto,MCD;
while (quit != 'q')
{
cout << "inserire il primo numero ......:" ;
cin >> a ;
cout << "inserire il secondo numero ....:" ;
cin >> b ;
if (b>a)
{
c=a;
a=b;
b=c;
}
do
{
resto = a%b;
a = b;
b = resto;
}while(resto !=0);
MCD = a;
cout << "il M.C.D. e' : " << MCD<<endl;
// ======================================================
// termine programma con richiesta di uscita
cout << "Premere q per uscire ";
cin >> quit;
}
return 0;
}
Esempio di “Realizzazione di un flow-chart” a cura del Prof. Salvatore DE GIORGI
Pag. 2
Algoritmo numerico con struttura ciclica
Esempio con struttura ciclica precondizionale
Start
A
I
B
I
C=A
A=B
B=C
V
A<B
F
R=1
F
R≠0
V
R = A Mod B
A=B
B=R
MCD = A
MCD
O
End
Esempio di “Realizzazione di un flow-chart” a cura del Prof. Salvatore DE GIORGI
Pag. 3
Algoritmo numerico con struttura ciclica
#include <iostream>
using namespace std;
// ricerca del MCD fra due numeri con l'algoritmo di EUCLIDE
// utilizzando un cliclo while
int main (int argc, char *argv[])
{
char quit;
quit = '\0';
int a,b,c,resto,MCD;
while (quit != 'q')
{
cout << "inserire il primo numero ......:" ;
cin >> a ;
cout << "inserire il secondo numero ....:" ;
cin >> b ;
if (b>a)
{
c=a;
a=b;
b=c;
}
resto=1;
while (resto!=0)
{
resto = a%b;
a = b;
b = resto;
}
MCD = a;
cout << "il M.C.D. e' : " << MCD<<endl;
// ======================================================
// termine programma con richiesta di uscita
cout << "Premere q per uscire ";
cin >> quit;
}
return 0;
}
Esempio di “Realizzazione di un flow-chart” a cura del Prof. Salvatore DE GIORGI
Pag. 4
Algoritmo numerico con struttura ciclica
#include <iostream>
using namespace std;
// ricerca del MCD fra due numeri con l'algoritmo di EUCLIDE
// utilizzando un cliclo while e visualizzando b
int main (int argc, char *argv[])
{
char quit;
quit = '\0';
int a,b,c,resto,MCD;
while (quit != 'q')
{
cout << "inserire il primo numero ......:" ;
cin >> a ;
cout << "inserire il secondo numero ....:" ;
cin >> b ;
if (b>a)
{
c=a;
a=b;
b=c;
}
while (a%b != 0)
{
resto = a%b;
a = b;
b = resto;
}
MCD = b;
cout << "il M.C.D. e' : " << MCD<<endl;
// ======================================================
// termine programma con richiesta di uscita
cout << "Premere q per uscire ";
cin >> quit;
}
return 0;
}
Esempio di “Realizzazione di un flow-chart” a cura del Prof. Salvatore DE GIORGI
Pag. 5