Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Algoritmo euclideo in C

    Ciao.
    Ho scritto questo sorgente per il calcolo del massimo comun divisore con l’algortimo euclideo.
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    int main(void)
    {
        int a, b;
        int r;
        /* LEGGI i coefficienti */
        printf("Inserisci il numero a: ") ;
        scanf("%d", &a) ;
        printf("Inserisci il numero b: ") ;
        scanf("%d", &b) ;
        if (a=0)
            printf("Il massimo comun divisore è %d\n", 0);
        else
        {
            r=1;
            while(r>0)
            {
                r=a%b;
                a=b;
                b=r;
            }
            printf("Il massimo comun divisore è %d\n", a);
        }
        system("pause");
        exit(0);
    }
    Il problema è che fintanto che c’è il controllo condizionale if il programma ritorna il secondo numero b come output. Se cancello la parte del controllo condizionale, il programma funziona correttamente.

    Suggerimenti?

    Grazie,
    Ciao.
    Ultima modifica di MItaly; 15-02-2015 a 15:59 Motivo: Tag CODE, indentazione

  2. #2
    codice:
        if (a=0)
    Qui stai assegnando 0 ad a, e l'intera espressione vale 0. Probabilmente intendevi:
    codice:
        if (a==0)
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    ok. risolto.
    grazie mille.
    ciao.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.