Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Sarò sintetico, anche perchè basta leggere gli errori del compilatore
Se bisogna dividere due interi ed ottenere un risultato di tipo integer, si può (deve ??) usare l'operatore DIV ... bene alla riga 16 non mi sembrano 2 interi, ma un real e un integer dunque l'operatore DIV si altera un po' ... detto ciò lascio a voi la soluzione
G.
Non ho capito bene cosa hai detto...?? - tullio1995 - 23/03/11 22:03
Semplicemente che non puoi dividere un Real con un DIV ed ottenere un integer come per magia. Però, Goblin, l'errore del compilatore non sembra proprio quello.... ?? - a_butta - 23/03/11 22:23
quindi dovrei mettere tutte le variabili ad real? - tullio1995 - 23/03/11 22:26
a_butta, l'errore è 'got EXTENDED expected SMALLINT' che tradotto in ita(g)liano suona come "mi hai dato un extended(real) ma io voglio un integer", e nella riga 16 cerchi di fare il DIV di un real (f) da qui l'errore. - Goblin - 24/03/11 11:21
Giusto!! :) :) Non avevo considerato che Extended era real e che il Freepascal non ti dà Integer ma SmallInt XD... Scusate per l'imprecisione, ma non sono molto abituato al fp :) - a_butta - 24/03/11 20:36
Credo che il problema sia alla riga 16,che ancora non ho capito a cosa serva, dove tu sommi un reale con un intero.
Codice sorgente - presumibilmente Pascal
g:=d+f div e;
con le dichiarazioni che hai fatto è sbagliata.
Se vuoi risolvere puoi arrotondare f con la funzione round,cioè
Codice sorgente - presumibilmente Pascal
g:=d+Round(f)div e;
O se no fare il cast ad Int64
Codice sorgente - presumibilmente Pascal
g:=d+Int64(f)div e;
anche se sicuramente è meglio usare round(è stata creata proprio per situazioni di questo tipo)
Infine,la cosa più importante e che il compilatore non segnala dando poi un runtime error,devi cambiare la variabile d in un tipo reale in modo tale che la sqrt funzioni.
devi assicurarti che d sia maggiore o uguale a 0, se no ti va in errore;
2) le soluzioni sono due, g1 e g2, che vanno dichiarate Real;
3) la formula corretta è:
Codice sorgente - presumibilmente Plain Text
g1 := (-b - f) / e
g2 := (-b + f) / e
;
4) nella writeln mostri il termine noto anziche' il risultato;
ciao.
Ultima modifica effettuata da gigisoft il 24/03/2011 alle 10:48
Hai ragione,non me ne sono che fosse un programma per risolvere equazioni,credevo che fosse di prova per testare qualcosa. Meno male che ci sei tu! - Saladino - 25/03/11 09:28