Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [C]Interi

  1. #1
    Utente di HTML.it L'avatar di unicorn
    Registrato dal
    Aug 2004
    Messaggi
    176

    [C]Interi

    Ciao a tutti avrei bisogno di sapere:
    - dato int x,y; come faccio ad avere un risultato x/y che si avvici all'intero più grande? Es se x/y=8,3333 il ris deve essere 9

    - se ho 2 interi e voglio sapere qual'è il rapporto minore, cioè in input ho scanf(%d%d,a,b)
    voglio una funzione che mi restituisca il minore tra (a/b) e (b/a)
    potrebbe essere di questo tipo?

    int min(a,b)
    x=a/b
    y=b/a
    if (x<=y)
    return x
    else
    return y

    Grazie :master:

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Per il primo problema questo codice dovrebbe risolverlo:
    codice:
    int arrotonda(int x, int y) {
       int rapporto = (int) x / y;
       return ((rapporto * y) < x) ? rapporto + 1 : rapporto;
    }
    Per il secondo la funzione da te definita dovrebbe andare bene (attenzione, però, che facendo tornare un int otterrai sempre 0 come valore di ritorno: se, infatti, x/y è maggiore di 0, y/x sarà sicuramente compreso fra 0 e 1, ma non ammettendo i decimali verrà restituoto 0).
    In alternativa si può scrivere tutta in una istruzione:
    codice:
    float minore(int x, int y) {
       return ((x/y) < (y/x)) ? (x/y) : (y/x);
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di unicorn
    Registrato dal
    Aug 2004
    Messaggi
    176
    Originariamente inviato da LeleFT
    Per il primo problema questo codice dovrebbe risolverlo:
    codice:
    int arrotonda(int x, int y) {
       int rapporto = (int) x / y;
       return ((rapporto * y) < x) ? rapporto + 1 : rapporto;
    }
    Per il secondo la funzione da te definita dovrebbe andare bene (attenzione, però, che facendo tornare un int otterrai sempre 0 come valore di ritorno: se, infatti, x/y è maggiore di 0, y/x sarà sicuramente compreso fra 0 e 1, ma non ammettendo i decimali verrà restituoto 0).
    In alternativa si può scrivere tutta in una istruzione:
    codice:
    float minore(int x, int y) {
       return ((x/y) < (y/x)) ? (x/y) : (y/x);
    }
    Ciao.

    Grazie, adesso faccio delle prove

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ho scritto una cavolata:
    Se x/y è maggiore di 1 (e non di 0), allora y/x sarà compreso fra 0 e 1.

    Ovviamente intendevo nei Naturali (quindi numeri senza segno, o, comunque, positivi), se c'è il segno bisogna stare attenti anche con il segno...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di unicorn
    Registrato dal
    Aug 2004
    Messaggi
    176
    Originariamente inviato da LeleFT
    Ho scritto una cavolata:
    Se x/y è maggiore di 1 (e non di 0), allora y/x sarà compreso fra 0 e 1.

    Ovviamente intendevo nei Naturali (quindi numeri senza segno, o, comunque, positivi), se c'è il segno bisogna stare attenti anche con il segno...


    Ciao.
    I valori di input a e b sono compresi tra 0 e N (naturali)

  6. #6
    Utente di HTML.it L'avatar di unicorn
    Registrato dal
    Aug 2004
    Messaggi
    176
    Altro problema ho un oggetto quadrato di cui conosco k cioè la lunghezza del lato, tale oggetto è costituito da k*k celle unidimensionali, poichè ho definito una struttuta in cui memorizzo la coordinata in basso a sinistra del quadrato voglio definire una funzione che dato in ingresso 2 valori interi e positivi mi restituisca il quadrato di apparteneza, ad es. l'utente inserisce 4, 3 e k=3 la funzione deve restituire la cella (3,0), la mia idea è quella di fare tutti i confronti, altra idea?

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Non ho capito nulla di quello che intendi fare...
    Cosa vuol dire "memorizzo la coordinata in basso a sinistra del quadrato"? Poi... l'utente passa alla funzione i valori 4, 3... cosa rappresentano? :master:
    Prova ad essere più chiaro.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it L'avatar di unicorn
    Registrato dal
    Aug 2004
    Messaggi
    176
    Allora devo gestire un campo da gioco, il piano è costituito da una griglia di oggetti quadrati di lato k, ora quando comincia il gioco l'utente indica il valore di k.
    Ogni quadrato è mem. in una struttura dati secondo la coordinata del vertice in basso a sinistra.
    Ogni quadrato, inoltre è costituito da k*k quadrati di lato unitario (es. k=5 allora il numero di celle unitarie è 25)
    Poichè l'utente può modificare il parametro k, di conseguenza viene modificata anche la struttura dati.
    L'utente inserisce delle coordinate ma non sa a quale quadrato appartengono, ilproblema è propro questo, devo scrivere una funzione del tipo:

    quadrato *trova(int k,int a, int b)
    if (a<k) && (b<k)
    return (0,0)
    ........


    Quindi se k=5 a=2 b=2 allora il quadrato (0,0)

    Spero di essere stato più chiaro

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.