Quali sono le cause dei problemi con questo pezzo di codice?
-
06-09-2019 - |
Domanda
Mi stavo chiedendo il motivo per cui questa determinata problema succede a me. Se potete aiutarmi, io lo apprezzerei.
Program factorial;
uses crt;
var
f, i: Integer;
begin
f:=1;
for i:=1 to 5 do
f:= f * i;
write(f);
readkey;
end.
Ok, Che funziona bene e il risultato è 120. Ed è vero.
Ora, ecco il problema. Se ho chiesto all'utente di inserire il valore del numero, non funzionerà.
Program factorial;
uses crt;
var
i,r: Integer;
begin
write('Enter the number');
read(r);
for i:=1 to r do
r:= r * i;
write(r);
readkey;
end.
Se ho scritto 5, l'uscita sarà di 600.
Soluzione
Si utilizza il valore di R come la condizione di arresto del ciclo e modificando il valore nel ciclo.
Program factorial;
uses crt;
var
i,r, f: Integer;
begin
write('Enter the number');
read(r);
f := 1;
for i:=1 to r do
f:= f * i;
write(f);
readkey;
end.
Altri suggerimenti
È riutilizzare la variabile r
. Se 5
input per r
il programma sarà a tutti gli effetti uno a molte volte. Si dovrebbe iniziare con 1
come il primo f
.
Program factorial;
uses crt;
var
i,r, f: Integer;
begin
write('Enter the number');
read(r);
f:=1
for i:=1 to r do
f:= f * i;
write(r);
readkey;
end.
Prova:
Program factorial;
uses crt;
var
i,r,x: Integer;
begin
write('Enter the number');
read(x);
r:=1
for i:=1 to x do
r:= r * i;
write(r);
readkey;
end.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow