Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal - Error: Incompatible types: got
Forum - Pascal - Error: Incompatible types: got "Extended" expected "SmallInt"

Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 16:44
Venerdì, 16/10/2009
Salve a tutti sto studiano il pascal mi sembra un'ottimo linguaggio di programmazione e voglio impararlo al meglio...Veniamo al dunque, io sto creando una semplice calcolatrice che dati due numeri con questo codice:
Codice sorgente - presumibilmente Plain Text

  1. readln(numero1, numero2);


e dato l'operatore cioè +,-,*,/ e fin qui tutto bene ma adesso ho un problema per sapere se l'utente ha digitato +,-,*,/ utilizzo gli IF così:
Codice sorgente - presumibilmente Pascal

  1. if(operatore='+') then risultato:= numero1+numero2;
  2. {*etc.*}


e alla fine metto l'if per la divisione ma appena provo a compilarlo mi esce questo errore: calc.pas(24,43) Error: Incompatible types: got "Extended" expected "SmallInt"
nella riga dove c'è l'if per la divisaione, ho provato a dichiarare sia numero1, sia numero2 e sia risultato, con real ma mi esce un numero stratoscopico cioè se faccio la divisione tra 4 e 2 mi esce il 4 scritto come 4.000000000+e02 e il 2 nello stesso modo del 4 e il risultato = 2.00, mi dà l'errore quando dichiaro con Integer, Word e Char(Word e Char x fare una prova) potreste consigliarmi il metodo migliore? vorrei andare avanti con questo bellissimo linguaggio di programmazione ciao ciao a presto e grazie...
PS: Prima di postare ho letto il sorgente di un programma scritto in pascal di program92 una calcolatrice e dice che quando scrivo a schermo il risultato poi devo fare questo: risultato:2:0...ho provato ma non funziona...:k:

PM Quote
Avatar
Anonymous (Member)
Guru


Messaggi: 1059
Iscritto: 30/07/2006

Segnala al moderatore
Postato alle 17:07
Venerdì, 16/10/2009
devi mettere cosi:

Codice sorgente - presumibilmente Plain Text

  1. risultato:= dividendo / divisore;
  2. writeln('il risultato è:', risultato:8:2);




dove risultato deve essere per forza un real o double ma di sicuro non integer

al posto dell'8 puoi anche mettere un valore più basso... e se ti dovessero servire più cifre decimali potresti aumentare il valore al posto del 2

PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 17:51
Venerdì, 16/10/2009
cioè, quel :8:2 cosa fa?:k:

Edit:
Altro "Errore": il risultato mi esce ancora 2.00...

Ultima modifica effettuata da LittleHacker il 16/10/2009 alle 17:53
PM Quote
Avatar
Anonymous (Member)
Guru


Messaggi: 1059
Iscritto: 30/07/2006

Segnala al moderatore
Postato alle 18:34
Venerdì, 16/10/2009
ah... quindi non vuoi i decimali per niente??? prova a mettere 0 al posto del 2

però dopo ti troncherà anche su tutti gli altri numeri...


per esempio 9 / 2 ti darà 4  invece che 4.5

in pratica il primo numero dice quante cifre in totale deve avere al massimo il tuo risultato, e il secondo numero invece dice quanti decimali vuoi che appaia.....

PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 18:36
Venerdì, 16/10/2009
Ma.. non stavi studiando il C++!?

Testo quotato

Postato originariamente da LittleHacker:

cioè, quel :8:2 cosa fa?:k:

Edit:
Altro "Errore": il risultato mi esce ancora 2.00...



Alla tua domanda ti ha risposto anonymous:

Testo quotato

Postato originariamente da Anonymous:

devi mettere cosi:

Codice sorgente - presumibilmente Plain Text

  1. risultato:= dividendo / divisore;
  2. writeln('il risultato è:', risultato:8:2);




dove risultato deve essere per forza un real o double ma di sicuro non integer

al posto dell'8 puoi anche mettere un valore più basso... e se ti dovessero servire più cifre decimali potresti aumentare il valore al posto del 2



E 4:2 fa 2.00!!

PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 18:40
Venerdì, 16/10/2009
Postato originariamente da Lawliet:

Ma.. non stavi studiando il C++!?

Postato originariamente da LittleHacker:

cioè, quel :8:2 cosa fa?:k:

Edit:
Altro "Errore": il risultato mi esce ancora 2.00...

Certo solo che adesso voglio studiare il Pascal, mi sembra un'ottimo linguaggio...:D

PM Quote