Другие языки программирования и технологии
помощь в простенькой паскаль-программе)
мне нужно создать программу для вычисления факториала числа n!, если n=10. Нужно использовать оператор WHILE. Я сделал вот такую програмку http://codepaste.ru/11210/ , но результат в любом случае получается 0 http://gyazo.com/cb38acbcf188b27786e9b206be5218fc . подскажите, где ошибка
PROGRAM FAKTORIAL;
var
a[array[1..10] of real;
i, sum:integer;
d: real;
begin
while i<10 do begin
i:=i+1;
d:=d*(i);
a = d;
writeln(a);
end;
readln;
end.
Ох уж эта школа, уж эти задания =\ Интересно а учитель (ница) сам (а) знает зачем там массив? Я бы долго с ним (ей) спорил :D Всегда так делал :DD
var
a[array[1..10] of real;
i, sum:integer;
d: real;
begin
while i<10 do begin
i:=i+1;
d:=d*(i);
a = d;
writeln(a);
end;
readln;
end.
Ох уж эта школа, уж эти задания =\ Интересно а учитель (ница) сам (а) знает зачем там массив? Я бы долго с ним (ей) спорил :D Всегда так делал :DD
Твоя старая программа:
PROGRAM FAKTORIAL;
var a:array[1..10] of real; i:integer; d: real;
begin
d:=1;i:=1;
while i<10 do begin read (a[ i]);i:=i+1; d:=d*(a[ i]);
end;
writeln(d)
end.
На черта тебе массив? Да еще и чтение чего-то с клавиатуры?
var i:integer; d:longint;
begin
d:=1; i:=1; while i<=10 do begin d:=d*i; inc(i) end; writeln(d)
end.
P.S. "просто прохожу тему массивы и нужно именно через масив"
Хорошо, что не космонавтику проходите. А то бы еще через запуск космического корабля делали ;)
Извини, но такой абсурд делать у меня рука не поднимется. Хватит и того, что я согласился делать с while, который тут тоже по принципу "пришей кобыле хвост"...
PROGRAM FAKTORIAL;
var a:array[1..10] of real; i:integer; d: real;
begin
d:=1;i:=1;
while i<10 do begin read (a[ i]);i:=i+1; d:=d*(a[ i]);
end;
writeln(d)
end.
На черта тебе массив? Да еще и чтение чего-то с клавиатуры?
var i:integer; d:longint;
begin
d:=1; i:=1; while i<=10 do begin d:=d*i; inc(i) end; writeln(d)
end.
P.S. "просто прохожу тему массивы и нужно именно через масив"
Хорошо, что не космонавтику проходите. А то бы еще через запуск космического корабля делали ;)
Извини, но такой абсурд делать у меня рука не поднимется. Хватит и того, что я согласился делать с while, который тут тоже по принципу "пришей кобыле хвост"...
Видимо ты не знаешь, что такое факториал. Факториал числа n - это произведение всех натуральных чисел от единицы до числа n.
Т. е. массив тут не нужен и принимать никакие значения не нужно. Ты просто перебираешь все числа от 1 до n и умножаешь какую-то переменную, значение которой ты изначально принял за единицу, на эти числа.
Вот правильная программа (Если твой компилятор будет ругаться на "int64", то замени его на "integer", но при этом ты не сможешь вычислять факториалы больших чисел) .
function fact(n:integer):int64;
var r:int64; i:integer;
begin
r:=1; i:=2;
while (i<=n) do begin r:=r*i; inc(i); end; fact:=r;
end;
begin
writeln(fact(10));
end.
Т. е. массив тут не нужен и принимать никакие значения не нужно. Ты просто перебираешь все числа от 1 до n и умножаешь какую-то переменную, значение которой ты изначально принял за единицу, на эти числа.
Вот правильная программа (Если твой компилятор будет ругаться на "int64", то замени его на "integer", но при этом ты не сможешь вычислять факториалы больших чисел) .
function fact(n:integer):int64;
var r:int64; i:integer;
begin
r:=1; i:=2;
while (i<=n) do begin r:=r*i; inc(i); end; fact:=r;
end;
begin
writeln(fact(10));
end.
Можно ещё через рекурсию, если есть желание. Но через массив.. . =)
Похожие вопросы
- Паскаль!Программа Калькулятор
- Паскаль программа програмирование паскаль
- Есть ли учебники обучающие написанию простеньких реальных программ?
- нужно создать на паскале программу которая будет находить повторяющиеся слова в массиве
- Как составить в Паскале программу, выводящую на экран график?
- Паскаль! Программа Калькулятор самая простая программа, 9 кл
- паскаль программа
- помогите написать паскаль программу
- Паскаль, программа на определение возраста . Почему он показывает неправильно ((( ...
- Помогите написать в Паскале программу