Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: multipli

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    12

    multipli

    Questo programma dovrebbe determinare e visualizzare dopo aver letto 2 numeri, se il primo sia un multiplo del secondo o viceversa. Immettendo 2 numeri di cui il primo multiplo del secondo o viceversa il programma funziona es. (2,4) o (4,2) .Immettendo (5,3) funziona ma se inserisco (3,5) non si fa niente...Dove sbaglio??







    #include<stdio.h>
    int main()
    {
    int x,y;
    scanf("%d%d",&x,&y);
    if(x >= y)
    {
    if(x%y==0)
    {
    printf("%d e' un multiplo di %d",x,y);
    }
    if (x%y!=0)
    {
    printf("%d non e' un multiplo di %d",x,y);
    }
    }
    if(x<y)
    {
    if(y%x==0);
    {
    printf("%d e' un multiplo di %d",y,x);
    }
    if (y%x!=0)
    {
    printf("%d non e' un multiplo di %d",y,x);
    }
    }
    getchar();
    getchar();
    return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: multipli

    Originariamente inviato da pasco78
    if(x<y)
    {
    if(y%x==0);
    {
    printf("%d e' un multiplo di %d",y,x);
    }
    if (y%x!=0)
    {
    printf("%d non e' un multiplo di %d",y,x);
    }
    }
    Togli quel ;

    Il codice che hai scritto inoltre è piuttosto prolisso: prima controlli se x >= y ed in caso contrario controlli se x < y... Ma non serve, il ramo else non ha altre alternative!

    codice:
    #include <stdio.h>
    
    int main(int argc, char **argv) {
        int x, y;
        
        printf("Inserisci due numeri interi e premi [INVIO]: ");
        scanf("%d%d", &x, &y);
        
        if(x >= y) {
            if(x % y == 0) {
                printf("%d e' un multiplo di %d\n", x, y);
            } else {
                printf("%d non e' un multiplo di %d\n", x, y);
            }
        } else {
            if(y % x == 0) {
                printf("%d e' un multiplo di %d\n", y, x);
            } else {
                printf("%d non e' un multiplo di %d\n", y, x);
            }
        }
    
        return 0;
    }
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    hai un ; dopo if(y%x==0)

    codice:
    #include<stdio.h>
    int main()
    {
    int x,y;
    scanf("%d%d",&x,&y);
    
        if(x%y==0 || y%x==0)
                printf("%d e' un multiplo di %d",x,y);
        else
            printf("%d non e' un multiplo di %d",x,y);
    getchar();
    getchar();
    return 0;
    }
    inoltre osserva bene come è possibile ridurre il tuo programma, osserva l'utilizzo (non) delle parentesi

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    12
    Grazie !!!

    [QUOTE]Originariamente inviato da ant_alt
    hai un ; dopo if(y%x==0)

    codice:
    #include<stdio.h>
    int main()
    {
    int x,y;
    scanf("%d%d",&x,&y);
    
        if(x%y==0 || y%x==0)
                printf("%d e' un multiplo di %d",x,y);
        else
            printf("%d non e' un multiplo di %d",x,y);
    getchar();
    getchar();
    return 0;
    }
    inoltre osserva bene come è possibile ridurre il tuo programma, osserva l'utilizzo (non) delle parentesi [/QUOT

    Wow! || stanno per o??
    Però in questo modo il programma dice che 2 e' multiplo di 8 e non il contrario...

  5. #5
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    Originariamente inviato da pasco78
    Wow! || stanno per o??
    http://programmazione.html.it/guide/...tori-booleani/

    ora però nota che dovresti cambiare il messaggio con uno più generale , se inserisci 2 e 4 nel programma il messaggio è "2 è multiplo di 4"

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    12
    non avevo letto il tuo messaggio.. sorry

  7. #7
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    codice:
    #include<stdio.h>
    #define MIN(a,b) ((a<b) ? (a) : (b))
    #define MAX(a,b) ((a>b) ? (a) : (b))
    int main()
    {
    int x,y;
    scanf("%d%d",&x,&y);
    
        if(x%y==0 || y%x==0)
                printf("%d e' un multiplo di %d",MAX(x,y),MIN(x,y));
        else
            printf("%d non e' un multiplo di %d",MAX(x,y),MIN(x,y));
    getchar();
    getchar();
    return 0;
    }

    puoi usare l'escamotage delle macro, un pò macchinoso ma almeno fai vedere al prof che sai fare qualcosa
    se non le avete studiate ancora puoi usare le funzioni min e max

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    12
    Sto studiano d'autodidatta... sono proprio all'inizio ,non ho fatto nè la ''macro'' ,nè min e max..
    Ora me li vado a vedere sul libro.Grazie.

  9. #9
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    Originariamente inviato da pasco78
    Sto studiano d'autodidatta... sono proprio all'inizio ,non ho fatto nè la ''macro'' ,nè min e max..
    per min e max intendevo che ti definisci due funzioni che restituiscono minimo e massimo..ma vai per gradi, credo sia un pò presto per questo
    buon studio

  10. #10
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da ant_alt
    inoltre osserva bene come è possibile ridurre il tuo programma, osserva l'utilizzo (non) delle parentesi
    Questo si può fare solo se il blocco di codice consiste in un'unica istruzione! Ad ogni modo sarebbe buona programmazione usare sempre le parentesi, in modo da rendere più chiaro il codice...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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.