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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2010, 19:22   #1
Cyber
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 18
По умолчанию При выполнении программы ошибка.

Господа, программа при компелировании выдает:
Return value of function 'sum' might be undefined
Return value of function 'mult' might be undefined
Но программа компелируется, а вот когда программа выполняет процедуру по клику выдает ошибку:
Проект вызвал исключение класса EInvalidOp с сообщением 'Invalid floating point operation'

Помогите, голову сломал уже, что не так?

Вот собственно

Код:
var
  a: array [1..25] of Real;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure sort;
var
  i,k,m:integer;
  buf:real;
      begin
          for i:= 1 to 25 do
            begin
            m:=i;
              for k:=i+1 to 26 do
              if a[k]>a[m] then m:=k;
              buf:=a[i];
              a[i]:=a[m];
              a[m]:=buf;
            end;
        end;

function sum(s:real):real;
var
  i:integer;
begin
for i:=1 to 25 do
if a[i]>0 then s:=s+a[i]
end;

function mult(e:real):real;
var
  i:integer;
begin
e:=1;
for i:=1 to 25 do
if a[i]>0 then e:=e*a[i]
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
listbox1.Clear;
listbox2.Clear;
randomize;
for i:=1 to 25 do
a[i]:=random(-10);
sort;
for i:=1 to 25 do
listbox1.items.Add(FloatToStr(a[i]));
listbox2.items.Add('summa = '+FloatToStr(sum(0)));
listbox2.items.Add('proizvedenie = '+FloatToStr(mult(1)));
end;
end.

Последний раз редактировалось Stilet; 01.10.2010 в 20:01.
Cyber вне форума Ответить с цитированием
Старый 01.10.2010, 19:25   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

а кто результаты из функций забирать то буит?
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 01.10.2010, 19:56   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
а кто результаты из функций забирать то буит?
похоже, они никому не нужны

Cyber
Код:
function sum(s: real): real;
var
  i: integer;
begin
  for i := 1 to 25 do
    if a[i] > 0 then s := s + a[i];
  sum := s;
end;

function mult(e: real): real;
var
  i: integer;
begin
  e := 1;
  for i := 1 to 25 do
    if a[i] > 0 then e := e * a[i];
  mult := e;
end;
и, кстати, параметры в эти функции надо передавать другие!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.10.2010, 19:57   #4
Cyber
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 18
По умолчанию

listbox2.items.Add('summa = '+FloatToStr(sum(0)));
listbox2.items.Add('proizvedenie = '+FloatToStr(mult(1)));

А разве эти строчки не вытаскивают результат?
Cyber вне форума Ответить с цитированием
Старый 01.10.2010, 20:00   #5
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

вытаскивают но он как раз
Цитата:
undefined
вот так эт должно выглядеть
Код:
function sum(s:real):real;
var
i:integer;
begin
for i:=1 to 25 do
if a[i]>0 then s:=s+a[i];
result:=s;
end;

function mult(e:real):real;
var
i:integer;
begin
e:=1;
for i:=1 to 25 do
if a[i]>0 then e:=e*a[i];
result:=e;
end;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"

Последний раз редактировалось Mad_Cat; 01.10.2010 в 20:03.
Mad_Cat вне форума Ответить с цитированием
Старый 01.10.2010, 20:01   #6
Cyber
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 18
По умолчанию

И ещё после завершения программы выделяется вот эта строчка:
if a[k]>a[m] then m:=k;

тут тоже ступор. По не ввёл функции всё работало нормуль.
Cyber вне форума Ответить с цитированием
Старый 01.10.2010, 20:03   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А разве эти строчки не вытаскивают результат?
Вытаскивают ))))))))))))
Если есть что. А у тебя нечего ибо ты не написал:
Код:
function sum(s:real):real;
var
  i:integer;
begin
 for i:=1 to 25 do
  if a[i]>0 then s:=s+a[i]
 result:=s;
end;

function mult(e:real):real;
var
  i:integer;
begin
e:=1;
 for i:=1 to 25 do
  if a[i]>0 then e:=e*a[i] 
 Result:=e;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.10.2010, 20:07   #8
Cyber
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
похоже, они никому не нужны


> if a[i] > 0 then s := s + a[i];
> sum := s;
[/CODE]
и, кстати, параметры в эти функции надо передавать другие!!
Чо-то не работает.
Не подскажешь какие параметры надо передавать?

Спасибо большое, с функцией разобрались. Осталось одна проблема:
Проект вызвал исключение класса EInvalidOp с сообщением 'Invalid floating point operation'

Подскажите - спасете жизнь!

Последний раз редактировалось Stilet; 02.10.2010 в 11:44.
Cyber вне форума Ответить с цитированием
Старый 02.10.2010, 11:43   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Подскажем когда ты выложишь сюда свой проект в архиве полностью.
В указанной тобой строке криминала не вижу, так что по любому где-то около ошибка
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.10.2010, 11:58   #10
Cyber
Пользователь
 
Регистрация: 07.05.2008
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Подскажем когда ты выложишь сюда свой проект в архиве полностью.
В указанной тобой строке криминала не вижу, так что по любому где-то около ошибка
Вот собственно проект.
Вложения
Тип файла: rar Задание.rar (168.1 Кб, 8 просмотров)
Cyber вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибки при выполнении программы grustniy Общие вопросы Delphi 2 04.09.2010 07:19
Ошибка при выполнении макроса rlev Microsoft Office Excel 8 22.02.2010 12:41
критическая ошибка при выполнении программы Познающий Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 18.11.2009 16:51
Ошибка и падение (выход) Excel при выполнении сложной программы на VBA Serge_Bliznykov Microsoft Office Excel 6 13.08.2008 16:50
Ошибка при выполнении запроса Elena БД в Delphi 3 14.06.2007 15:13