Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int main(void){
- int numero_1, numero_2, max, min, i = 0;
- int resto, massimo_comun_divisore;
- puts("Inserisci una coppia di numeri interi");
- puts("ne verra' calcolato il massimo comun divisore:");
- do {
- scanf("%d", &numero_1);
- } while (numero_1 < 0);
- do {
- scanf("%d", &numero_2);
- } while (numero_2 <0);
- /* ho inserito due istruzioni do facendo in modo che, una volta inserito un numero esso venga verificato,
- se minore di 0 il programma farà reinserire solo il primo; se maggiore di zero il programma verificherà il secondo numero,
- se minore di 0 il programma farà reinserire solo il secondo; se maggiore di zero il programma proseguirà*/
- /*non ho inserito gli scanf in un solo do-while poichè nel caso in cui un solo numero fosse stato minore
- di zero, l'utente avrebbe dovuto inserire di nuovo anche il primo, e la cosa non risultava corretta poichè il primo numero
- rispettava la richiesta del programma (cioè un numero positivo)*/
- if (numero_1>numero_2) {
- max = numero_1; min = numero_2;
- }
- else if (numero_1 == numero_2){
- printf("%s\t%d\n","Il massimo comun divisore e':", numero_1);
- return 0; //non serve proseguire poichè per la regola, il MCD è gia stato trovato
- }
- else {
- max = numero_2; min = numero_1;
- }
- resto = max % min;
- for(;;){
- if (resto == 0){
- printf("%s\t%d\n","Il massimo comun divisore e':", min);
- break;
- }
- /*l'istruzione if alla prima esecuzione del ciclo è inutile, poichè il programma ha gia verificato
- la possibilità che il resto sia uguale a zero (opzione scartata se arrivati a questo punto), quindi
- è ovvio che alla prima esecuzione il programma sostanzialmente cominci dall'else; di conseguenza l'if servira'
- solo dalla seconda esecuzione del ciclo*/
- else {
- max = min;
- min = resto;
- }
- resto = max % min;
- }
- getchar();
- }
Advertisement
Add Comment
Please, Sign In to add comment