Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
23/11/10 19:45
DarkFelix
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.

program Radice;
var x:real;
rad:real;
begin;
write('Scrivi il numero di cui vuoi calcolare la radice quadrata');
readln(x);
rad:=sqrt(x);
if (rad>0) or (rad=0) then
write('La radice quadrata di ,x, è uguale a ,rad,');
else
write('Il numero deve essere maggiore o uguale a 0')
end.


Se ci sono altri errori commentate
aaa
23/11/10 19:57
falaskhouse
Postato originariamente da DarkFelix:

program Radice;
var x:real;
rad:real;
begin;
write('Scrivi il numero di cui vuoi calcolare la radice quadrata');
readln(x);
rad:=sqrt(x);
if (rad>0) or (rad=0) then
write('La radice quadrata di ,x, è uguale a ,rad,');
else
write('Il numero deve essere maggiore o uguale a 0')
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 23/11/10 19:58
aaa
23/11/10 19:59
XBarboX
Questo è il mio codice, ci ho messo un bel po' di cose:
program Radice;
uses crt, dos;
var
   x:     real;
   rad:   real;
begin;
write('Scrivi il numero di cui vuoi calcolare la radice quadrata ');
readln(x);
if x>=0 then
   begin
   rad:=sqrt(x);
   write('La radice quadrata di ',x:10:4,' è uguale a ',rad:10:4);
   end
else
write('Il numero deve essere maggiore o uguale a 0');
repeat until keypressed;
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
aaa
23/11/10 20:00
Giarados
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:

write('La radice quadrata di ,x, è uguale a ',rad)
aaa
23/11/10 20:02
bruno.demarini
Ciao, concordo con quanto ha detto falaskhouse (tranne per quanto riguarda il ; prima dell'end finale... non è necessario).
Inoltre, direi che il rigo

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


dovrebbe essere così:
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 23/11/10 20:03
aaa
23/11/10 20:04
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
aaa
23/11/10 20:08
bruno.demarini
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:
pierotofy.it/pages/guide/Guida_Pascal/La_struttura_IfdotdotdotThendotdotdotElse/
" Prima di else, che si può anche tralasciare, non ci vuole mai il punto e virgola.", alla nona riga sotto il listato .
aaa
23/11/10 20:12
DarkFelix
Scusate, un'ultima cosa

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