Помощь - Поиск - Пользователи - Календарь
Полная версия: пасиба темку мона удалит =) С НАСТУПАЮЩИМ!
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
andreybatka
Не сочтите за наглость но есть еще вопросик. Задача- Составить программу для вычисления факт. Вычисление факториала оформить в виде FUNCTION. N=8 M=3. Вот собссна мой код

Program FACTORIAL;
uses crt;
VAR c:longint; n,m:integer;
Function fact(n:integer):longint;
var N,M,i:integer;
f:longint;
Begin
clrscr;
f:=1
For i:=2 to n do f:=g*i;
fact:=f
end;
Begin writeln('vvedite N,M');
readln(N,M);
c:fact(n)/(fact(m)*fact(n-m));writeln('c=',c);
readln;
end.


ошибка Type mismatch в строчке
c:fact(n)/(fact(m)*fact(n-m));writeln('c=',c);

Помогите советом плизь unsure.gif
Айра
Цитата
ошибка Type mismatch в строчке
c:fact(n)/(fact(m)*fact(n-m));writeln('c=',c);

Во-первых, c:=fact(n)/(fact(m)*fact(n-m));writeln('c=',c).
Во-вторых, ты уверен, что c будет целым? smile.gif
В-третьих, вот мой вариант проги:
 
program Fakt(input,output);
uses wincrt;
var c: real;
n,m: integer;
function fact(n: integer): longint;
begin
if n=1 then fact:=1
else fact:=n*fact(n-1);
end;
begin
writeln ('введите число n >');
read (n);
while n<=0 do
begin
writeln ('Ошибка');
read (n);
end;
writeln ('введите число m >');
read (m);
while (m<=0) or (m>=n) do
begin
writeln ('Ошибка');
read (m);
end;
c:=fact(n)/(fact(m)*fact(n-m));writeln('c=',c:10:2);
end.


но он рекурсивный.
klem4
Айра , пробовала запускать свою программу с n = 0 или m = 0, ну или и то и другое ?
andreybatka
Цитата(Айра @ 28.12.2006 21:34) *

Во-первых, c:=fact(n)/(fact(m)*fact(n-m));writeln('c=',c).
Во-вторых, ты уверен, что c будет целым? smile.gif
но он рекурсивный.

БАААААААЛЬШОЕ ТЕБЕ СПАСИИИИБО!!! give_rose.gif give_rose.gif give_rose.gif ты мне очень помогла!
Айра
Цитата
Айра , пробовала запускать свою программу с n = 0 или m = 0, ну или и то и другое ?

Намек понят. Я как обычно расчитываю, что пользователь введет нормальные данные. unsure.gif
Щас исправлюсь.
Исправила. Так вроде все нормально.
Цитата
ты мне очень помогла!

Рада стараться smile.gif
Michael_Rybak
Не-не, це из 0 по 0 равно 1, что тут ненормального ;)

А вообще биноминальные коэффициенты, по-моему, лучше считать треугольником Паскаля:


...
for i := 0 to n do begin
c[i, 0] := 1;
c[i, i] := 1;
for j := 1 to i - 1 do
c[i, j] := c[i - 1, j - 1] + c[i - 1, j];
end;
writeln(c[n, m]);

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.