Newsgroup: it.comp.lang.delphi
Titolo: Come capire se il risultato di un'operazione matematica ritorna un intero?

Salve a tutti mi sto scervellando su come capire se il risultato di
una operazione è un intero.
Mi spiego meglio:
Se ho due interi, diciamo X e Y e faccio l'operazione X/Y=Z, mi serve
capire se Z è nu numero intero o se ha decimali (es. 1 oppure 1,3).
Come potrei fare?
Grazie a tutti per eventuali suggerimenti.

 Grazie a tutti per eventuali suggerimenti.
Potresti forse usare l'operatore mod che restituisce il resto della
divisione. Se č zero significa che il quoziente č un numero intero.
Marco / iw2nzm

 capire se Z è nu numero intero o se ha decimali (es. 1 oppure 1,3).
Se è solo per la divisione puoi usare mod, come ha suggerito Marco 
Trapanese, altrimenti puoi usare
if Trunc(z) = z then    // z è un'intero
Non ci metto la mano sul fuoco però, ho avuto brutte esperienze con i 
decimali.
-- 
Jax

Io uso sempre mod, che ovviamente restituisce i decimali... Quindi
if Y mod X = 0 then RISULTATOINTERO
--- posted by geoForum on 
http://www.delphiedintorni.it

 Io uso sempre mod, che ovviamente restituisce i decimali...
Ossignore!
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 if Y mod X = 0 then RISULTATOINTERO
E questo l'avevo già detto. Ma se devi controllare se X * Y genera un 
intero come fai utilizzando il mod?
-- 
Jax

 una operazione è un intero.
If Frac(Risultato) <> 0.0
  then // numero reale
  else // numero intero
Ciao
ACSH
-- 
Il più grande sbaglio nel progettare software
a prova di stupido è sottostimare l'enorme
ingegnosità degli stupidi. 

intero come fai utilizzando il mod?
if (Cosa Cazzo Vuoi) mod 1 = 0 then INTERO
Nell'esempio:
if X * Y mod 1 = 0 ....
Scusa l'ironia matematica...
CIAO !!!


Scherzavo ovviamente.... ;-)


Propongo allora ROUND come strada alternativa
H:=[Mia espressione];
if H-Round(H) = 0 then Intero;


if (Cosa Cazzo Vuoi) mod 1 = 0 then INTERO
HAhahaha  .... GRANDE !!!
Jax te la sei proprio cercata, basta dividere per 1.


 Jax te la sei proprio cercata, basta dividere per 1.
ROTFL!
Dopo un sabato pomeriggio di lavoro (perdipiù con un caldo micidiale) mi 
ci voleva proprio :)
-- 
Jax

 Scherzavo ovviamente.... ;-)
Ovviamente! Ci hai messo ben 4 minuti per renderti conto che scherzavi :)
Ora però levati dai coglioni, hai veramente rotto.
-- 
Jax

>Ora però levati dai coglioni, hai veramente rotto.
Mi sa che quello che si deve levare dai coglioni sei TU...
Infatti...
La domanda recita:
Se ho due interi, diciamo X e Y e faccio l'operazione X/Y=Z, mi serve
capire se Z è un numero intero....
RIPETO se ho due INTERI !!!
Poi tu mi chiedi come faccio a usare mod...
SEMPLICE:
if (Operazione che CAZZO vuoi TU senza scassare) mod 1 = 0 then INTERO
Magari in matematica avevi 4 ?


Ripeto che scherzo, non volevo infierire vista anche la amabilitą dei 
tuoi post. Non era immediato dividere per uno, ma sicuramente ti sarebbe 
venuta l'illuminazione post lavoro bevendo una BIRRA...
Buon SABATO, vedrai che la serata sarą meglio...
Ci sia all'orizzonte una bella TIPA... ? ;-)
Ciao


 Magari in matematica avevi 4 ?
In effetti sì. E, nonostante ci sarebbero da dire alcune cose, non ho 
problemi a scusarmi, in questo caso, e a chiuderla qua, visto che ho 
altro da fare.
Tutte cose che, permettimi, dovresti imparare a fare anche tu.
-- 
Jax

 if (Operazione che CAZZO vuoi TU senza scassare) mod 1 = 0 then INTERO
E' invece l'ennesima dimostrazione di quanto tu sia ignorante e non
conosca una fava di quello di cui stiamo parlando.
Te lo spiego con parole semplici perchč il tuo cervellino sifilitico possa
comprendere il tutto:
Prendo un intero : 3.
Prendo un'altro intero : 2.
Li divido (3 / 2) e ottengo 1.5 (prova con la calcolatrice se non riesci a
fare un calcolo cosě complesso a mente).
Il risultato č un valore di tipo Real.
Come CAZZO puoi fare il MOD a 1 se l'operatore MOD in Delphi accetta solo
interi?


>In effetti sě. 
Se c'č qualche scusa da fare sono pronto a farla, ma stavo scherzando..
CMQ č ovvio sono le cose piů banali che possono sfuggire MA solo per 
qualche ora..
CIAO ! ;-)


Spero TU ti stia rendendo conto della FIGURACCIA che stai facendo e fai 
bene ad oscurare il nome....
la FUNZIONE Y = 1 è funzione SIMMETRICA INVERSA di Y che ha una sola 
SOLUZIONE !!!!
Y mod 1 stabilisce una funzione BIUNIVOCA e BICONTINUA termini di cui 
forse ignori anche l'esistenza e quindi comunque la risolvi non 
moltiplici mai le *RADICI*
Quindi per abbassarmi al tuo livello very low MATEMATICO te la risolvo, 
così magari ci pensi un attimo e CAPISCI chi è il PIRLA !!!
if (Cosa cazzo vuoi) mod 1 = 0 then INTERO
Nell'esempio:
if X*Y mod 1 = 0   -->   if X mod 1/Y = 0 then INTERO
Quindi tornando a quanto ho già detto io USO sempre il MOD per 
verificare un INTERO....







Nell'esempio:


--- posted by geoForum on 
http://www.delphiedintorni.it

Se non HAI ancora capito e ti salta fuori un ERRORE col compilatore 
allora SEI proprio lontano da qualsiasi concetto matematico....
Dammi una qualsiasi funzione con X e Y interi e vedrai che TROVO se è un 
intero con MOD....
Se riesco e soprattutto se RIESCI tu a fornirmela di regalo 50.000 EURO 
te lo giuro sulle mie palle...


Ti faccio un esempio per non infierire sulla FIGURACCIA che hai appena 
fatto, ripeto, hai atto bene ad oscurare il NOME...
Esercizio 1. Dire con if se č in intero la funzione: (X-Y)/(Y+1)
Risolvo con mod 1, ossia:
if (X-Y)/(Y+1) mod 1 = 0 
cioč
if (X-Y) mod (Y+1) = 0 then INTERO
Esercizio 2. piů difficile.. Dire con if se č in intero la funzione:
(3*X+4*Y-2*X*Y-3)/(5*X-32*Y) -3 
RISOLVO:
if (3*X+4*Y-2*X*Y-3)/(5*X-32*Y) -3 mod 1 = 0
che diventa
if (3*X+4*Y-2*X*Y-3) mod 4*(5*X-32*Y) = 0
e te ne do un paio da fare a CASA !!!!
ES.3 Dire con if se č un intero
(12*X+4*Y-8*X*Y-3)/(5*X-32*Y) - 19 
ES.4 Dire con if se č un intero
(8*Y+2*Y-8*X*Y)/(5*X-32*Y) - 1


solo interi?




cioč


(3*X+4*Y-2*X*Y-3)/(5*X-32*Y) -3 
RISOLVO:

che diventa



(12*X+4*Y-8*X*Y-3)/(5*X-32*Y) - 19 

(8*Y+2*Y-8*X*Y)/(5*X-32*Y) - 1
--- posted by geoForum on 
http://www.delphiedintorni.it

 Tutte cose che, permettimi, dovresti imparare a fare anche tu.
Lascia perdere il "troll", oppure lasci che se la suoni e se la canti 
con i suoi egregi amici o alter ego... tanto ormai non se li fila più 
nessuno, poiché sono riconoscibilissimi.
Quando poi ti capita in una discussione (vedi quella sulla 
"FileListBox") dove suggerisci qualcosa e chi ti risponde fa tutt'altro, 
quando hai a che fare con qualcuno e noti senza ombra di dubbio che non 
fa nulla d'altro che farti perdere tempo continuando a fare di testa 
sua, lascia perdere, non rispondere più e lascia che si faccia il suo 
botta e risposta da solo, a ritmo talmente frenetico che a volte 
individuare la "discussione trollata" e cestinarla è proprio questione 
di un attimo.
Questo lo dico solamente perché immagino che anche tu, come me e come 
molti altri suppongo, abbia di meglio da fare che "dare da mangiare" a 
questa gente, senza il bisogno di farti il sangue cattivo inutilmente.
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

 SOLUZIONE !!!!
Tutto molto bello e altisonante e giusto matematicamente (per quanto ne 
capisco io).
Solo che, come ti è stato detto, qui siamo in un newsgroup di 
programmazione, e non di matematica, e l'operatore mod in delphi accetta 
solo operandi interi. Quindi se:
a è intero
b è intero
1 è intero
(a/b) mod 1 = 0
non lo puoi fare perché (a/b) è un real.
Quindi, riassumendo, il mod non risolve il problema dell'op, che 
chiedeva... vattelo a rileggere.
Io la mia soluzione l'ho data (if Trunc(z) = z then    // z è 
un'intero), e funziona con ogni tipo di espressione e ogni tipo di dati.
Sono pronto ad accettare spezzoni di codice *funzionanti* della tua 
soluzione, visto che non ne abbiamo ancora visti.
Ciao bello, me ne torno a lavorare (anche oggi).
-- 
Jax

>(a/b) mod 1 = 0
ALLORA SEI PRORIO DURO D'ORECCHI....
Puoi fare tutto quello che VUOI con mod 1, è una funzione inversa 
UNIVOCA, la devi risolvere !
Esempio:
(A*B+32-A-B+15)/(A+B)-12A 
uso mod 1 diventa:
(A*B+32-A-B+15)/(A+B)-12A mod 1 --> (A*B+32-A-B+15) mod (1 + 12*A)*(A+B)
cioè 
if (A*B+32-A-B+15) mod (1 + 12*A)*(A+B) = 0 then INTERO
Chiaro se faccio tang(A) non posso perchè la funzione non è *BICONTINUA* 
ma è *COMPOSTA* e *DISCONTINUA* ma per tutto il resto SI ! 
Scusa poi ma l'esempo che fai è un po' stupido, si dice X e Y interi, 
ieri volevi sapere se X*Y è un INTERO ??? Il prodotto di due o più 
interi dà sempre un intero !


 interi dà sempre un intero !
Io proponevo una soluzione universale, sia che gli operandi fossero 
interi che fossero real.
Comunque sei indietro di 4 o 5 risposte. Leggi e rispondi all'ultima.
-- 
Jax

Comunque sei indietro di 4 o 5 risposte. Leggi e rispondi all'ultima.
Si chiedeva però con X e Y interi, mi avevi detto che con mod non si 
poteva, allora avevo chiarito con mod 1 tutto qui.
Ciao.


Faccio due esempio chiari: X e Y interi
________________________________________________________________________
ESEMPIO 1:
if Y*X mod 1 = 0 then INTERO
________________________________________________________________________
ESEMPIO 2:
(Y-X)/X+1
risolvo:
(Y-X)/X+1 = ((Y-X) + X )/X   -->  if ((Y-X) + X )/X mod 1 = 0 then INT
if ((Y-X) + X ) mod X = 0 then INT
________________________________________________________________________


Faccio due esempio chiari: X e Y interi
________________________________________________________________________
ESEMPIO 1:
if Y*X mod 1 = 0 then INTERO
________________________________________________________________________
ESEMPIO 2:
(Y-X)/X+1
risolvo:
(Y-X)/X+1 = ((Y-X) + X )/X   -->  if ((Y-X) + X )/X mod 1 = 0 then INT
if ((Y-X) + X ) mod X = 0 then INT
________________________________________________________________________


cioč tratto la MOD 1 come una normale equazione per la quale perň non 
vale la regola che posso spostare termini al di lŕ dell'uguale cambiando 
di segno....


 di segno....
Ok, sei bravo, hai ragione, il tuo metodo è molto migliore del mio.
(vediamo se così la pianti)
E un'altra cosa, non serve aprire altri thread, non ti risponderò più su 
questo argomento, anzi, mi pento di averti dato corda più del dovuto.
-- 
Jax

OK, non esiste comunque un metodo migliore in assoluto, dipende dal 
contesto.
spero almeno che tu abbia capito.
Ciao!


sua, lascia perdere, non rispondere piů e lascia che si faccia il suo 
Concordo. E' alla frutta, ragazzi ;-) Torno nel ng dopo una lunga
vacanza nella (splendida, andateci!!) Parigi e ho trovato un'incalzare
sempre maggiore di messaggi da parte del troll, nelle sue varie
incarnazioni. Ha uno stile inconfondibile (e che personalmente trovo
divertente). Penso che ormai sia facile individuarlo e killarlo.
Sospettate di chi scrive in questo gruppo da Delphi&Dintorni o che si
risponde piů volte da solo (o con nick diversi, ma stesso stile) e
avrete eliminato buona parte delle incarnazioni troll :-)
Ormai il mio kill-file conta 50 voci :-)... e cresce sempre piů!!

Heilà Andrew...
Bellissima Parigi, vorrei andarci per vedere il concerto dei Porcupine-
Tree che sono un gruppo splendido...
Per gli amanti dei Pink Floyd e dei Doors sono imperdibili...
www.porcupinetree.com/


CAPISCO...


 CAPISCO...
Non credo.
Sei cosě fesso che non sai nemmeno come funziona il Kill-File.


Sicuro che sia così difficile cambiare una e-mail ?


Senti questa massima...
Un automobilista va in autostrada ed entra in contromano...
Vede un automobile che gli viene incontro e dice deficiente sei in 
contromano...
Vede un'altra automobile che gli viene incontro e dice cretino sei in 
contromano...
Continua cosě....
Non č caro Andrew che dovresti metterti sulla giusta carreggiata ?
FORSE non hai capito che il TROLL č stato creato solo per TE, per darti 
la mazzata teorica.....? E che piů esperti mentali stanno lavorando 
dietro la TUA mente ? Hai visto il film the GAME ?
E' chiaro infine che sei DIPLOMATO e non LAURAETO, č come la differenza 
tra un vino normale del supermercato e il vino di origine controllata....


Hai già preso più smacchi sui POST ultimamente, per questo usi un nick 
nascosto ?


Abbiamo trasformato i tuoi programmi mentali in algoritmi DELPHI, per 
questo la nostra equipe è in ogni caso vincente, in quanto sappiamo dove 
ogni tua affermazione andrà a finire....
Quando la VANITA' sarà sparita dalla tua mente giungendo l'umiltà ti 
trasformerai in un verò professionista il TROLL sparirà..
Ti dico solo che google ha investito 100 milioni di dollari per togliere 
la vanità dai news group, sicuramente per un maggior ritorno 
pubblicitario in termini di adesioni reali....
Ti conviene convertirti presto e diventare un vero professionista e non 
uno spocchioso smanettone.
Alla fine guardandoti allo specchio ci ringrazierai...
51 come il numero del battitore dei LosAngeles ti salutano e ti danno il 
benvenuto nel gioco THE GAME.....
Aglio, finocchio, prezzemolo contro il pitocchio... ;-D


Scherzavo naturalmente....
SEMBRAVO uno psicopatico... ;-D
Porte aperte al buon Andrew....
