Расчет факториалов с использованием QBasic - PullRequest
1 голос
/ 08 мая 2019

Я пишу программу, которая вычисляет факториал из 5 чисел и выводит результаты в виде таблицы, но я продолжаю получать Нули .

Факторная формула: . п! = n × (n-1)!

Я пытался:

CLS
DIM arr(5) AS INTEGER

FOR x = 1 TO 5
    INPUT "Enter Factors: ", n
NEXT x

f = 1
FOR i = 1 TO arr(n)
    f = f * i
NEXT i

PRINT
PRINT "The factorial of input numbers are:";
PRINT

FOR x = 1 TO n
    PRINT f(x)
NEXT x
END

и я ожидаю:

Numbers    Factorrials
5          120
3          6
6          720
8          40320
4          24

Ответы [ 4 ]

1 голос
/ 08 мая 2019

У меня нет переводчика бейсика прямо передо мной, но я думаю, это то, что вы ищете:

CLS
DIM arr(5) AS INTEGER
DIM ans(5) AS LONG        'You need a separate array to store results in. 

FOR x = 1 TO 5
    INPUT "Enter Factors: ", arr(x)
NEXT x

FOR x = 1 to 5
    f& = 1
    FOR i = 1 TO arr(x)
        f& = f& * i
    NEXT i
    ans(x) = f&
NEXT x

PRINT
PRINT "The factorial of input numbers are:";
PRINT

PRINT "Numbers", "Factorials"
FOR x = 1 TO 5
    PRINT STR$(arr(x)), ans(x)
NEXT x
END

Просто комментарий: в программировании вы должны избегать повторного использования переменных, если у вас мало памяти. Это может быть сделано правильно, но это создает много возможностей для трудного поиска ошибок в больших программах.

1 голос
/ 09 мая 2019

Возможное решение для расчета массивов факториалов:

CLS
DIM arr(5) AS INTEGER
DIM ans(5) AS LONG

FOR x = 1 TO 5
    INPUT "Enter Factors: ", arr(x)
    f& = 1
    FOR i = 1 TO arr(x)
        f& = f& * i
    NEXT i
    ans(x) = f&
NEXT x

PRINT
PRINT "The factorial of input numbers are:";
PRINT

PRINT "Numbers", "Factorials"
FOR x = 1 TO 5
    PRINT arr(x), ans(x)
NEXT x
END
1 голос
/ 08 мая 2019

Вы сделали несколько ошибок

FOR i = 1 TO arr(n)

где n определено вы также никогда не сохраняли фактические значения в arr

PRINT f(x)

здесь вы берете из массива f, который также не определен в вашем коде

0 голосов
/ 09 мая 2019

Возможное решение для расчета массивов факториалов и квадратных корней:

CLS
PRINT "Number of values";: INPUT n
DIM arr(n) AS INTEGER
DIM ans(n) AS LONG

FOR x = 1 TO n
    PRINT "Enter value"; x;: INPUT arr(x)
    f& = 1
    FOR i = 1 TO arr(x)
        f& = f& * i
    NEXT i
    ans(x) = f&
NEXT x

PRINT
PRINT "The factorial/square root of input numbers are:";
PRINT

PRINT "Number", "Factorial", "Squareroot"
FOR x = 1 TO n
    PRINT arr(x), ans(x), SQR(arr(x))
NEXT x
END
...