Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal - cast...of...else problema con una calcolatrice
Forum - Pascal - cast...of...else problema con una calcolatrice

Avatar
tullio1995 (Normal User)
Rookie


Messaggi: 59
Iscritto: 20/03/2011

Segnala al moderatore
Postato alle 19:04
Lunedì, 21/03/2011
Codice sorgente - presumibilmente Delphi

  1. program calcolatrice;
  2. uses crt;
  3. var a,b,c,o,d:INTEGER;
  4. begin
  5. repeat
  6. writeln ('INSERISCI IL NUMERO DELL''OPERAZIONE DA FARE');
  7. writeln ('1.  ADDIZIONE');
  8. writeln ('2.  SOTTRAZIONE');
  9. writeln ('3.  MOLTIPLICAZIONE');
  10. writeln ('4.  DIVISIONE');
  11. writeln ('5.  N. ALLA SECONDA');
  12. writeln ('6.  N. ALLA TERZA');
  13. writeln ('7.  N. ALLA QUARTA');
  14. writeln ('8.  N. ALLA QUINTA ');
  15. readln (o);
  16. if o=5 or 6 or 7 or 8 then
  17. begin
  18. writeln ('Inserisci il numero: ');
  19. readln(d);
  20. case o of
  21. 5:d:=d*d;
  22. 6:d:=d*d*d;
  23. 7:d:=d*d*d*d;
  24. 8:d:=d*d*d*d*d;
  25. writeln('Il risultato e ',d);
  26. readln;
  27. end;
  28. end
  29. else
  30. begin
  31. clrscr;
  32. writeln ('Inserisci il primo numero intero: ');
  33. readln (a);
  34. writeln ('Inserisci il secondo numero intero: ');
  35. readln (b);
  36. if o=1 then
  37. begin
  38. c:=a+b;
  39. end;
  40. if o=2 then
  41. begin
  42. c:=a-b;
  43. end;
  44. if o=3 then
  45. begin
  46. c:=a*b;
  47. end;
  48. if o=4 then
  49. begin
  50. c:=a div b;
  51. end;
  52. writeln ('Il risultato e' ,c);
  53. readln;
  54. end;
  55. until o=6;
  56. repeat
  57. until keypressed;
  58. end.



Qui mi viene dato un errore alla riga 25,29. Non so quale è il problema...:( Mi potreste aiutare?

Ultima modifica effettuata da tullio1995 il 21/03/2011 alle 20:38


L’uomo ha scoperto la bomba atomica, però nessun topo al mondo costruirebbe una trappola per topi.
PM
Avatar
crash outside control (Normal User)
Expert


Messaggi: 217
Iscritto: 12/02/2008

Up
1
Down
V
Segnala al moderatore
Postato alle 19:36
Lunedì, 21/03/2011
Semplicemente hai messo l'end del case nel punto sbagliato.
Devi metterlo prima di:
Codice sorgente - presumibilmente Plain Text

  1. writeln('Il risultato e ',d);



O se volessi stampare il risultato solo per o=8, dovresti utilizzare "begin" ed "end" per delimitare un blocco di istruzioni. Altrimenti ti da un'errore come ora.

Ti consiglio di prestare attenzione all'indentazione. Può sembrare banale, ma fidati, aiuta molto.

ora lo compila però quando vado a fare le operazioni dalla 5 alla 8 m dice di inserire due numeri e non calcola il numero elevato - tullio1995 - 21/03/11 20:34


Anche un orologio fermo segna l'ora giusta due volte al giorno.
Hermann Hesse
PM
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Up
4
Down
V
Segnala al moderatore
Postato alle 21:17
Lunedì, 21/03/2011
Ma prima di postare domande a nastro, perché non leggere l'errore che il compilatore ti fornisce e ragionarci su?
Cosa ti dice il compilatore? Avrà scritto qualcosa oltre al fatto che c'è qualcosa alla riga 25, 29. Posta gli errori del compilatore se non riesci a capirli e da lì partiremo.

PS: mi riferisco anche al tuo post sulla radice quadrata SQRT: se il compilatore ti avrà tirato fuori un errore del genere type real incompatible with integer, qualcosa ti farà riflettere :D

quoto - TheKaneB - 22/03/11 20:21


PM