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

Discussione: [C] Numero intero

  1. #1
    Utente bannato
    Registrato dal
    Jan 2003
    Messaggi
    1,414

    [C] Numero intero

    Uella

    Ho pure fatto un paio di ricerche ma nulla

    E' possibile, preso in variabile un numero, stabilire se esso è o meno un int?

    Faccio un esempio ipotetico per chiarire in uno pseudo-pseudocodice molto approssimativo:

    ...
    double Z = 10
    X = ( Z / numeri da 1 a 10, che faccio scorrere con un for)
    If > X = effettivamente un intero
    blabla

    Quell'if non mi quaglia: come faccio a dirgli 'se è un numero di tipo int' ?

    La funzione dovrebbe in sostanza considerare differentemente il risultato di 10 / 2 (numero intero) e 10 / 3 (numero non intero).

    Qualche idea?

    Grazie

  2. #2
    Forse è una banalità, ma la prima cosa che mi viene in mente è la seguente:
    se la parte intera del numero Z sottratta dal numero Z (completo di parte decimale) è = a ZERO, vuol dire che il numero è effettivamente intero. If (Z - Int(Z)) = 0 Then "il numero è intero"
    Può essere una risposta valida?
    Se si, sono contento di averti aiutato, se no scusa e ciao.
    Riccardo (RNarducci)

  3. #3
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    + precisamente:

    codice:
    int intero(double x)
    {
    if(x == int(x)) return 1;
    else return 0;
    }

  4. #4
    Utente bannato
    Registrato dal
    Jan 2003
    Messaggi
    1,414
    Quello che ha detto riccardo è giusto, ma in pratica in non sapevo come applicarlo (e credo me lo abbia detto iguana)

    Solo che non ho mai visto quella struttura (sul libro che sto leggendo sono arrivato solo ai vettori) e non ho capito bene come si applica (e cosa fa)

    Non è che me lo puoi spiegare brevemente, o rimandare a un testo che lo faccia?

    Grazie

  5. #5
    E una semplice funzione che restituisce 1 (VERO) se è vero che il numero è intero oppure zero (FALSO) se il numero non è intero.
    AD esempio
    IF intero (9,5) restituisce 0 cioè FALSO
    IF intero (8,000) restituisce 1 cioè VERO

    Ciao
    RNarducci

  6. #6
    Utente bannato
    Registrato dal
    Jan 2003
    Messaggi
    1,414


    Allora, sui return ok

    Ho provato col metodo suggerito da iguana, e mi è venuta una cosa del tipo:

    codice:
    #include <stdio.h>
    main() {
                                                                                             
            int intero(double x)
                    //indicizza all'interno della fun intero una var x di tipo double
            {
                    scanf ("%f" ,&x);
                    if (x == int(x))
                            //significa: 'se x è uguale alla parte intera di x'?
                            printf ("intero\n");
                    else printf ("non intero\n");
                    return 0;
            }
    }

    Il compilatore mi segnala però un errore

    [maiosyet@localhost ops]$ gcc -o interi interi.c
    interi.c: In function `intero':
    interi.c:7: parse error before "int"

    La linea 7 è appunto quella dell'if, che ho sbagliato?

    Thanks

  7. #7
    :gren:

    Le funzioni vanno dichiarate fuori dal main().
    Dichiara quella funzione fuori dalla funzione main(), e poi richiamala da dentro il main con:

    codice:
    intero (x);
    Ciao!

  8. #8
    Ecco lo schizzo:

    codice:
    #include <stdio.h>
    
    int intero (float a) {
            long l;
            l = (long) (a * 10000);
            if (!(l % 10000))
                    return (1);
            else
                    return (0);
    }
    
    int main (void) {
            float x;
            scanf ("%f", &x);
            if (intero (x)) 
                    printf ("? intero..\n");
            else
                    printf ("non ? intero..\n");
            return (0);
    }

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    13

    intero in c

    ciao!!!devi usare l'operatore sizeof..scrivi
    if(sizeo(x)==sizeof(int))
    //il numero è un intero.


    l'operatore sizeof restituisce la dimensione in byte di una variabile oppure di un tipo di dato.
    se la dimensione della variabile è uguale a quella del tipo di dato int, allora sicuramente tale variabile è un int. un int occupa la dimensione di un registro della macchina, e tale dimensione può variare da macchina a macchina...ciao!
    tripallico c

  10. #10
    Utente bannato
    Registrato dal
    Jan 2003
    Messaggi
    1,414
    Originariamente inviato da Michele Facchin
    Ecco lo schizzo:

    codice:
    #include <stdio.h>
    
    int intero (float a) {
            long l;
            l = (long) (a * 10000);
            if (!(l % 10000))
                    return (1);
            else
                    return (0);
    }
    
    int main (void) {
            float x;
            scanf ("%f", &x);
            if (intero (x)) 
                    printf ("? intero..\n");
            else
                    printf ("non ? intero..\n");
            return (0);
    }
    Chiaro e preciso, e ho pure imparato un mucchio di cose nuove :adhone:

    Grazie mille (soprattutto per la delucidazione su IRC)


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 © 2024 vBulletin Solutions, Inc. All rights reserved.