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 - Aiutatemi col mio codice
Forum - Pascal - Aiutatemi col mio codice

Avatar
DarkFelix (Normal User)
Newbie


Messaggi: 14
Iscritto: 18/10/2010

Segnala al moderatore
Postato alle 20:45
Martedì, 23/11/2010
Questo topic è stato chiuso dal moderatore

Il codice seguente mi da un errore durante la compilazione, un Fatal Error al rigo di "ELSE", dicendo che ci dovrebbe essere un ; mentre c'è ELSE.

Codice sorgente - presumibilmente Delphi

  1. program Radice;
  2. var x:real;
  3. rad:real;
  4. begin;
  5. write('Scrivi il numero di cui vuoi calcolare la radice quadrata');
  6. readln(x);
  7. rad:=sqrt(x);
  8. if (rad>0) or (rad=0) then
  9. write('La radice quadrata di ,x, è uguale a ,rad,');
  10. else
  11. write('Il numero deve essere maggiore o uguale a 0')
  12. end.



Se ci sono altri errori commentate

PM
Avatar
falaskhouse (Normal User)
Newbie


Messaggi: 14
Iscritto: 18/05/2010

Segnala al moderatore
Postato alle 20:57
Martedì, 23/11/2010
Testo quotato

Postato originariamente da DarkFelix:

Codice sorgente - presumibilmente Delphi

  1. program Radice;
  2. var x:real;
  3. rad:real;
  4. begin;
  5. write('Scrivi il numero di cui vuoi calcolare la radice quadrata');
  6. readln(x);
  7. rad:=sqrt(x);
  8. if (rad>0) or (rad=0) then
  9. write('La radice quadrata di ,x, è uguale a ,rad,');
  10. else
  11. write('Il numero deve essere maggiore o uguale a 0')
  12. end.




prima dell'else non ci va il punto e virgola e poi nel write dopo l'else ci va il punto e virgola e poi secondo me non ha molto senso la condizione
if (rad>0) or (rad=0) then
dovevi metterla perla variabile x... perché se no quando immetti il numero ti da subito l'errore se negativo...

Ultima modifica effettuata da falaskhouse il 23/11/2010 alle 20:58
PM
Avatar
XBarboX (Member)
Guru


Messaggi: 945
Iscritto: 31/12/2008

Segnala al moderatore
Postato alle 20:59
Martedì, 23/11/2010
Questo è il mio codice, ci ho messo un bel po' di cose:
Codice sorgente - presumibilmente Delphi

  1. program Radice;
  2. uses crt, dos;
  3. var
  4.    x:     real;
  5.    rad:   real;
  6. begin;
  7. write('Scrivi il numero di cui vuoi calcolare la radice quadrata ');
  8. readln(x);
  9. if x>=0 then
  10.    begin
  11.    rad:=sqrt(x);
  12.    write('La radice quadrata di ',x:10:4,' è uguale a ',rad:10:4);
  13.    end
  14. else
  15. write('Il numero deve essere maggiore o uguale a 0');
  16. repeat until keypressed;
  17. end.



Allora ecco più o meno gli errori che hai fatto:
1)prima di un else il ; non ci va mai
2)Non si scrive "write('La radice quadrata di ,x, è uguale a ,rad,');" ma write('La radice quadrata di ',x, 'è uguale a ',rad);
(biosgna primere chiuedere le virgolette e poi mettere una virgola per concatenare una variabile)
3)hai fatto la radice quadrato prima del controllo di x>=0
4)Ho aggiunto un repeat until keypressed al fondo per evitare la chiusura immediata del programma

Se hai dei dubbi chiedi

PM
Avatar
Giarados (Ex-Member)
Pro


Messaggi: 69
Iscritto: 25/07/2010

Segnala al moderatore
Postato alle 21:00
Martedì, 23/11/2010
La nona riga di codice non deve finire con un ;  e la variabile di cui si vuole stampare a video il valore deve stare fuori dalla stringa di testo che la precede.


Cambia come segue e ricompila:

Codice sorgente - presumibilmente Plain Text

  1. write('La radice quadrata di ,x, è uguale a ',rad)


PM
Avatar
bruno.demarini (Normal User)
Pro


Messaggi: 84
Iscritto: 22/03/2010

Segnala al moderatore
Postato alle 21:02
Martedì, 23/11/2010
Ciao, concordo con quanto ha detto falaskhouse (tranne per quanto riguarda il ; prima dell'end finale... non è necessario).
Inoltre, direi che il rigo

Codice sorgente - presumibilmente Plain Text

  1. write('La radice quadrata di ,x, è uguale a ,rad,');



dovrebbe essere così:
Codice sorgente - presumibilmente Plain Text

  1. write('La radice quadrata di ',x,' è uguale a ',rad);



se non sbaglio.
ciao :)

P.S: Un altro consiglio, fai un po' di indentazione, il codice ti risulterà più chiaro ;)

Ultima modifica effettuata da bruno.demarini il 23/11/2010 alle 21:03
PM
Avatar
DarkFelix (Normal User)
Newbie


Messaggi: 14
Iscritto: 18/10/2010

Segnala al moderatore
Postato alle 21:04
Martedì, 23/11/2010
Grazie a tutti.

Nella guida non mi pareva di aver letto la cosa del ; che non va prima dell'else.
Mentre l'errore nel rigo dopo lo sapevo già, ma ho dimenticato di correggerlo.
Infine, avete ragione tutti. :asd:

Grazie di tutto

PM
Avatar
bruno.demarini (Normal User)
Pro


Messaggi: 84
Iscritto: 22/03/2010

Segnala al moderatore
Postato alle 21:08
Martedì, 23/11/2010
Testo quotato

Postato originariamente da DarkFelix:

Grazie a tutti.

Nella guida non mi pareva di aver letto la cosa del ; che non va prima dell'else.
Mentre l'errore nel rigo dopo lo sapevo già, ma ho dimenticato di correggerlo.
Infine, avete ragione tutti. :asd:

Grazie di tutto



prego :) Nella guida è scritto qui:
http://www.pierotofy.it/pages/guide/Guida_Pascal/La_strutt ...
" Prima di else, che si può anche tralasciare, non ci vuole mai il punto e virgola.", alla nona riga sotto il listato .

PM
Avatar
DarkFelix (Normal User)
Newbie


Messaggi: 14
Iscritto: 18/10/2010

Segnala al moderatore
Postato alle 21:12
Martedì, 23/11/2010
Scusate, un'ultima cosa

Barbo, mi spiegheresti quei x:10:4 e rad:10:4?

PM
Avatar
DarkFelix (Normal User)
Newbie


Messaggi: 14
Iscritto: 18/10/2010

Segnala al moderatore
Postato alle 16:38
Mercoledì, 24/11/2010
Nono, l'ho capito. Grazie a tutti

PM