Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2009, 13:37   #1
Ветас
Пользователь
 
Регистрация: 09.11.2007
Сообщений: 45
По умолчанию Написание программы с использованием функции

Здравствуйте, уважаемые форумчане.
Решаю задачу: Для заданного одномерного массива X1,X2,...Xn написать программу с использованием функции.

Вот что пока на данный момент сделал:
Код:
program prim_3;
uses crt;
var a:array[1..50] of integer;
x,l,k,g,i,n:integer;
m,p1,p2:real;
 
function func:real;
var p:real;
k,j:integer;
begin
p:=0;
for i:=1 to n do begin
k:=i;
p:=1;
for j:=1 to k do begin
p:=p*j;
end;
p:=p*(abs(a[i])/p)
end;
func:=p;
end;
 
begin
clrscr;
write('Введите размерность массива: ');readln(n);
writeln;
randomize;
for i:=1 to n do begin
a[i]:=random(5);
write (a[i]:5);
end;
writeln;
p1:=func;
write('p1=',p1:0:0);
m:=0;
for i:=1 to n do begin
l:=i;
m:=1;
for x:=1 to l do begin
m:=m*g;
end;
p2:=(sqr(abs(a[i]-p1)))/m
end;
write('p2=',p2:0:0);
readln;
end.
Но почему-то вылетает ошибка "Division By Zero" в следующем выражении:

Код:
......
p2:=(sqr(abs(a[i]-p1)))/m
......
Условие задачи находится во вложении.

Большая просьба помочь.
Изображения
Тип файла: jpg Задание__3.JPG (7.0 Кб, 83 просмотров)
Ветас вне форума Ответить с цитированием
Старый 08.11.2009, 13:47   #2
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

потому что там и есть деление на 0
Код:
m:=m*g;
g -нигде не инициализирована
и по умолчанию=0;
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 08.11.2009, 14:05   #3
Ветас
Пользователь
 
Регистрация: 09.11.2007
Сообщений: 45
По умолчанию

Спасибо большое за подсказки!
Но не могу понять, у меня при любом вводе n значение p2 всегда равно нулю.

Код:
program prim_3;
uses crt;
var a:array[1..50] of integer;
x,l,k,g,i,n:integer;
m,p1,p2:real;

function func:real;
var p:real;
k,j:integer;
begin
p:=0;
for i:=1 to n do begin
k:=i;
p:=1;
for j:=1 to k do begin
p:=p*j;
end;
p:=p*(abs(a[i])/p)
end;
func:=p;
end;

begin
clrscr;
write('Введите размерность массива: ');readln(n);
writeln;
randomize;
for i:=1 to n do begin
a[i]:=random(5);
write (a[i]:5);
end;
writeln;
p1:=func;
write('p1=',p1:0:0);
m:=0;
for i:=1 to n do begin
l:=i;
m:=1;
for g:=1 to l do begin
m:=m*g;
end;
p2:=(sqr(abs(a[i]-p1)))/m
end;
write('p2=',p2:0:0);
readln;
end.
Подскажите, пожалуйста, где еще что не так в коде программы ?
Ветас вне форума Ответить с цитированием
Старый 08.11.2009, 14:15   #4
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

если хоть одно a[i]=0 то все верно!
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 08.11.2009, 14:22   #5
Ветас
Пользователь
 
Регистрация: 09.11.2007
Сообщений: 45
По умолчанию

А если у меня все a[i] не равны нулю а в результате работы программы значение p2=0 ?
Ветас вне форума Ответить с цитированием
Старый 08.11.2009, 14:31   #6
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Код:
var
p,p1:real;
i,n:integer;
a:array[1..100] of integer;
function Fac(n: Word): Longint; 
var 
f: LongInt; 
i: Integer; 
begin 
f := 1; 
for i := 2 to n do f := f * i; 
fac:= f; 
end;
begin
randomize;
writeln('n=');
readln(n);
p1:=1;
p2:=1;
for i:=1 to n do
begin
a[i]:=random(5)+1;
p1:=p1*abs(a[i])/fac(i);
end;
writeln('p1=',p1:6:3);
for i:=1 to n do
p2:=p2* sqr(abs(a[i]-p1))/fac(i);
writeln('p2=',p2:6:3);
redaln;
end.
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написание пользовательской функции. GoreProgrammist Microsoft Office Excel 9 15.07.2009 15:28
Написание программы Ky3Heu, Общие вопросы Delphi 1 10.04.2009 14:32
Программа с использованием функции Cartman18 Помощь студентам 1 10.12.2007 16:29
Вопрос про правильное написание функции AndreichSB Microsoft Office Excel 6 25.12.2006 19:27