Problema Turbo pascal: Help!
salve, non riesco a capire questo problema: dato un lato di un quadrato trovare l'area e il perimetro di questi e sapendo che il risultato deve essere un numero positivo.
ecco come ho fatto io:
uses crt;
var x,area,perimetro:integer;
begin
clrscr;
write('introduci misura lato: ');
readln(x);
writeln;
area:= x*x;
perimetro:= x*4;
writeln('l''area è: ',area);
writeln('il perimetro è: ',perimetro);
readln
end.
la stringa appena scritta va bene?
ecco come ho fatto io:
uses crt;
var x,area,perimetro:integer;
begin
clrscr;
write('introduci misura lato: ');
readln(x);
writeln;
area:= x*x;
perimetro:= x*4;
writeln('l''area è: ',area);
writeln('il perimetro è: ',perimetro);
readln
end.
la stringa appena scritta va bene?
Risposte
mi sembra un po' restrittivo dichiararle integer quelle variabili
per quanto riguarda la sintassi... non vedo tp da 10 anni
"luca.barletta":
mi sembra un po' restrittivo dichiararle integer quelle variabili
e come le dovrei dichiararle?
tipo real, cioè reali, con un controllo che non venga immesso un numero negativo
mo ci provo
la penultima riga dovrebbe essere
readln();
niente!

perchè metti una writeln a vuoto?
per far uscire un pò più di spazio.
qual è l'errore che ti ritorna?
nessuno, ma se nella stringa dove sta scritto writeln('introduci numero'),se io immetto un numero negativo dovrebbe bloccarsi mentre se non lo immetto dovrebbe fare il suo ciclo normale. ho provato a fare con If ma non dà risultati.
il controllo che devi fare non è un banale if, ogni volta che immetti un numero negativo dovrebbe richiederti di inserire il numero, quindi devi usare un ciclo iterativo condizionato
me lo puoi spiegare perpiacere? il prof non c'è ne ha mai parlato.

devi usare una stuttura del genere:
in pratica ripeti le n istruzioni finchè non diventa vera la condizione specificata dopo until (condizione di uscita)
Repeat istruzione 1; istruzione 2; ... istruzione n; Until condizione;
in pratica ripeti le n istruzioni finchè non diventa vera la condizione specificata dopo until (condizione di uscita)
riproviamo!

niente ora si blocca
te lo faccio vedere:
uses crt;
var x,area,perimetro:real;
continue:integer;
begin
repeat
writeln('introduci misura lato: ');
readln(x);
readln(continue);
writeln;
area:=x*x;
perimetro:=x*4;
writeln('area = ',area:6:2,' cm quadrati');
writeln('perimetro= ',perimetro:6:2,' cm');
readln;
until (continue= -x);
writeln('non è possibile continuare');
readln
end.

uses crt;
var x,area,perimetro:real;
continue:integer;
begin
repeat
writeln('introduci misura lato: ');
readln(x);
readln(continue);
writeln;
area:=x*x;
perimetro:=x*4;
writeln('area = ',area:6:2,' cm quadrati');
writeln('perimetro= ',perimetro:6:2,' cm');
readln;
until (continue= -x);
writeln('non è possibile continuare');
readln
end.
No, l'istruzione che devi ripetere è la lettura del lato e basta, la condizione di uscita è x>0