Oppure

Loading
28/12/12 14:27
Distruttor
Ciao ragazzi sono nuovo del forum ed ho iniziato da pochissimo a programmare, e ho imparato qualcosa nelle guide online.Ora,ho deciso di fare una calcolatrice molto semplice, solo che non funziona bene la divisione perchè se metto un valore ad a<b mi da risultato 0, o se non sono uno multiplo dell'altro approssima il risultato all'unità... ho provato a inserire al posto di div l'operatore mod, ma è tutto uguale... Come risolvo?? Grazie ecco il codice.


program Calcolatrice;
uses crt;
var a,b,c,d,e,f:longint;
    g:real;
begin
writeln('Scrivi il primo numero');
readln(a);

writeln('Scrivi il secondo numero');
readln(b);

writeln('Premi 1 per eseguirne la somma');
writeln('Premi 2 per eseguirne la differenza');
writeln('Premi 3 per eseguirne il prodotto');
writeln('Premi 4 per eseguirne la divisione');

readln(c);

d:=a+b;
e:=a-b;
f:=a*b;
g:=a div b;

case c of

1: writeln(a,'+',b,'=',d);
2: writeln(a,'-',b,'=',e);
3: writeln(a,'*',b,'=',f);
4: writeln(a, '/',b,'=',g);


end;

readln;

end.
aaa
28/12/12 16:29
Poggi Marco
Ciao e benvenuto nel form!

La divisione ti da un risultato intero, o zero, perché hai dichiarato le variabili come longint. Ti basta cambiare tipo, ad esempio real. Inoltre dovresti controllare che b sia diverso da zero.
aaa
28/12/12 17:58
Distruttor
Ho provato a dichiarare tutte le variabili come real, ma mi da 8 di questi errori

29 / 2 calcol~1.pas
Error: Constant and CASE types do not match

Non capisco quale sia il problema...:-?
aaa
28/12/12 22:34
Poggi Marco
Per la sintassi del constructo case of, non sono ammesse variabili del tipo real.
Di conseguenza dichiari c come integer, o implementi delle condizioni if.
aaa
29/12/12 10:31
Distruttor
Grazie molte, ho capito =)
aaa