RISOLTO come ottengo il resto di una divisione in C#?

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.

\_io_/

Utente Attivo
Messaggi
234
Reazioni
17
Punteggio
36
Ho da calcolare il resto di una divisione, per poi determinare se il primo numero è divisore del secondo.
Solo che non so come si calocla il resto.
so solo che necessito del "comando" %, solo che non so come scrivere il codice.
grazie dell' aiuto in anticipo
 
l'operatore % (si chiama modulo) calcola il resto di una divisione tra interi;
quindi ragiona
(a/b)*b = a solo b è un divisore esatto di a
esempio: a=25, b=5 --> (25/5)*5=25
quando b non è un divisore di a, la divisione viene troncata (sul computer ovviamente
esempio: a=27, b=5 --> (27/5)*5=5*5=25
NOTA BENE: ciò avviene perché così è definita la divisione tra tipi interi (è ovvio che matematicamente non sia corretto);
quindi se ora fai la sottrazione
a-(a/b)*b avrai che
se a=25, b=5 --> 25-(25/5)*5=25-5*5=0 corretto perché 5 divide 25 quindi il resto è 0
a=27, b=5 --> 27-(27/5)*5=27-25=2 che è il resto della divisione tra 27 e 5
 
l'operatore % (si chiama modulo) calcola il resto di una divisione tra interi;
quindi ragiona
(a/b)*b = a solo b è un divisore esatto di a
esempio: a=25, b=5 --> (25/5)*5=25
quando b non è un divisore di a, la divisione viene troncata (sul computer ovviamente
esempio: a=27, b=5 --> (27/5)*5=5*5=25
NOTA BENE: ciò avviene perché così è definita la divisione tra tipi interi (è ovvio che matematicamente non sia corretto);
quindi se ora fai la sottrazione
a-(a/b)*b avrai che
se a=25, b=5 --> 25-(25/5)*5=25-5*5=0 corretto perché 5 divide 25 quindi il resto è 0
a=27, b=5 --> 27-(27/5)*5=27-25=2 che è il resto della divisione tra 27 e 5

solo che nel sito c'era:

Console.WriteLine(5 % 4); // output: 1

e 5 - (5/4)*4 fa 0, e non 1 come riportato nel commento del codice sopra.
comunque grazie.
 
solo che nel sito c'era:

Console.WriteLine(5 % 4); // output: 1

e 5 - (5/4)*4 fa 0, e non 1 come riportato nel commento del codice sopra.
comunque grazie.
No, come ti è stato fatto notare.
In C, il compilatore quando si trova davanti una espressione matematica trasforma automaticamente tutti gli operatori secondo la “grandezza” dell’operatore maggiore. Se per esempio in una espressione c’è un double, tutti gli
operatori vengono trasformati in double e l’operazione viene eseguita in virgola mobile.
Così nell’espressione 5/4 i due numeri sono interi quindi vengono lasciati interi, l’operazione viene eseguita in intero e il risultato viene dato come un intero, quindi è uguale a 1.
Tale regola rimane in C++, mentre in linguaggi più moderni tipo C# il compilatore segnala errore se si mischiano operatori di tipo diverso nella stessa espressione, e occorre forzare il casting manualmente specificando il tipo che si desidera. Noioso certo, ma evita errori stupidi (e perfettamente evitabili)
 
O
No, come ti è stato fatto notare.
In C, il compilatore quando si trova davanti una espressione matematica trasforma automaticamente tutti gli operatori secondo la “grandezza” dell’operatore maggiore. Se per esempio in una espressione c’è un double, tutti gli
operatori vengono trasformati in double e l’operazione viene eseguita in virgola mobile.
Così nell’espressione 5/4 i due numeri sono interi quindi vengono lasciati interi, l’operazione viene eseguita in intero e il risultato viene dato come un intero, quindi è uguale a 1.
Tale regola rimane in C++, mentre in linguaggi più moderni tipo C# il compilatore segnala errore se si mischiano operatori di tipo diverso nella stessa espressione, e occorre forzare il casting manualmente specificando il tipo che si desidera. Noioso certo, ma evita errori stupidi (e perfettamente evitabili)
Ok, grazie
 
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top