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.

È stato utile?

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
scroll top