Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it L'avatar di Cranfi
    Registrato dal
    Feb 2011
    Messaggi
    22

    [C] Funzione floor

    Ciao,
    Ho qualche problema a realizzare la funzione floor, dovrei arrotondare per difetto o eccesso (a seconda del valore decimale) dei numeri in decimale..potete darmi qualche suggerimento?E' esatto compilare la funzione così: y= floor (x+.5)?Se lo scrivo così ho un errore di colflicting type for function floor..
    Grazie in anticipo.
    Cri

  2. #2
    Cosa dovresti rappresentare con quel .5 ?

    Se vuoi scrivere un numero, usa 0.5

  3. #3
    Utente di HTML.it L'avatar di Cranfi
    Registrato dal
    Feb 2011
    Messaggi
    22
    Non lo so neanche io
    L'esercizio chiede:
    Un’applicazione della funzione floor è l’arrotondamento di un valore all’intero più
    vicino. L’istruzione:
    y= floor (x + .5 );
    arrotonderà il numero x all’intero più vicino e assegnerà il risultato a y.

    E' presente anche sui libri di programmazione..ma non riesco a creare una funzione che arrotondi i numeri!
    Cri

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    93
    Ciao!

    Non vorrei dire cavolate ma:

    la funzione floor arrotonda all'intero più basso (floor=pavimento), ciò vuol dire:

    a) floor di 2,3 -> 2
    b) floor 2,8 -> 2

    Se vuoi arrotondare all'intero più vicino (2 per il caso a e 3 per il caso b) aggiungi 0,5 così da avere:

    a) floor di 2,3+0,5=2,8 -> 2
    b) floor di 2,8+0,5=3,3 -> 3

    Almeno, credo

  5. #5
    Utente di HTML.it L'avatar di Cranfi
    Registrato dal
    Feb 2011
    Messaggi
    22
    Dovrebbe essere così...però ho un errore:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    double floor(double a));
    int main()
    {
    double x;
    printf("Introduci numero: ");
    scanf("%lf", &x);
    printf("%.2f  %.2f\n", x,floor(x));
    return EXIT_SUCCESS;
    }
    double floor(double a)
    {
    floor(a+0.5);
    }
    Cri

  6. #6
    Originariamente inviato da Cranfi
    Dovrebbe essere così...però ho un errore:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    double floor(double a));
    int main()
    {
    double x;
    printf("Introduci numero: ");
    scanf("%lf", &x);
    printf("%.2f  %.2f\n", x,floor(x));
    return EXIT_SUCCESS;
    }
    double floor(double a)
    {
    floor(a+0.5);
    }
    Nel prototipo c'è una parentesi di troppo e poi che funzione è
    double floor(double a)
    {
    floor(a+0.5);
    }[/CODE]

    richiami te stesso ?
    Succedono 3 cose:
    - stack overflow;
    - non servirà a niente;
    - non ritorna valori;

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da lolide
    Cosa dovresti rappresentare con quel .5 ?

    Se vuoi scrivere un numero, usa 0.5
    È correttismo invece, scritture tipo double d = .5; sono permesse.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    La funzione floor fa parte della libreria math.h, non devi ridefinirla...
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  9. #9
    Utente di HTML.it L'avatar di Cranfi
    Registrato dal
    Feb 2011
    Messaggi
    22
    Se volessi arrotondare un vettore..questo potrebbe ssere un codice da cui partire?
    ovviamente ci sono degli errori..
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #define N 5
    double floor(double* a double* b);
    int main()
    {
    int i;
    double x[i],y[i];
    for (i=0;i<N;i++)
    {
        floor(&x[i],&y[i]);
        printf("Introduci numero: ");
        scanf("%lf", &x[i]);
    }
    for (i=0;i<N;i++)
    {
        printf("%.2f  %.2f\n", x[i],y[i]));
        return EXIT_SUCCESS;
    }
    double floor(double* a double* b)
    {
    *(b)=floor(*(a)+0.5);
    return 0;
    }
    Cri

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    La funzione floor fa parte dell'header math.h, perchè la ridefinisci?

    Perchè la tua funzione floor (che andrebbe piuttosto chiamata qualcosa come round, o arrotonda) ha come argomento due double* e ritorna sempre 0?
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

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.