IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> ошибка
Yurka
сообщение 9.12.2005 16:09
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 143
Пол: Мужской

Репутация: -  0  +


выдаёт программа ошибку
invalid floating point operation
Код
Program nomer10;
  uses crt;
      Type
       mas=array [1..5,1..5] of real;
       mas1=array [1..5] of real;

     Procedure Matrix( var a:mas);
     var
     i,j,y:integer;

      Begin
       for i:=1 to 5 do
       begin
       for j:=1 to 5 do
        begin
    a[i,j]:=exp((-i+1)*ln(2))*(j-3.8)*(j*abs(2-3/j));
           write('a[',i,',',j,']=',a[i,j]:2:2,'   ');
         end;
         writeln;
       end;
      End;

   Procedure Vector(var a:mas; var x:mas1);

var

 i, j: integer;

 Dv: real;

begin

 Dv:=1;
 for i:=1 to 5 do

 begin

    for j:=1 to 5 do
     begin
     if a[i,j]<0 then Dv:=Dv*a[i,j];
     x[i]:=Dv;
     end;
 end;

 for i := 1 to 5 do
   writeln('x[',i,']=',x[i]);

end;


  Function G (x:mas1):real;
 var
        i,k:integer;
        S,d:real;
        Begin
        d:=1;
        S:=0;
        for i:=1 to 5 do
        begin
           begin
             for k:=1 to i do
      d:=d*x[k];
    end;
   S:=S+(sqr(x[i])+exp((1/3)*ln(d)));{вот здесь ошибка}
        end;
        G:=S;
        End;


         VAR
         b:mas;
         x1:mas1;
         i,j:integer;

         BEGIN
         clrscr;
         matrix(b);
         writeln;
         vector(b,x1);
         writeln;
         writeln('G=',G(x1):2:4);
         readkey;
         END.

пробовал менять тип на extended не помогает... unsure.gif в чём может быть проблема?

Сообщение отредактировано: volvo - 9.12.2005 16:14
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 6)
volvo
сообщение 9.12.2005 16:18
Сообщение #2


Гость






Ln от отрицательного числа нельзя брать... Возводи в степень по другому...
 К началу страницы 
+ Ответить 
Yurka
сообщение 12.12.2005 18:59
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 143
Пол: Мужской

Репутация: -  0  +


снова у меня ошибка в программе и Ln - положительный

Program nomer4;
uses crt;
Type
mas=array [1..5,1..5] of real;
mas1=array [1..5] of real;

Procedure Matrix( var a:mas);
var
i,j:integer;

Begin
for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
a[i,j]:=exp((j)*ln(2))*(i-3.4)*(ln(abs(1-(i+j)/3))/ln(10)); {здесь ошибочка}
write('a[',i,',',j,']=',a[i,j]:2:2,' ');
end;
writeln;
end;
End;

Procedure Vector(var a:mas; var x:mas1);

var

i, j: integer;

Sv: real;

begin

Sv:=0;
for i:=1 to 5 do

begin

for j:=1 to 5 do
begin
if a[i,j]<0 then Sv:=Sv+a[i,j];
x[i]:=Sv;
end;
end;

for i := 1 to 5 do
writeln('x[',i,']=',x[i]);

end;


Function G (x:mas1):real;
var
i,k:integer;
S,d:real;
Begin
d:=1;
S:=0;
for i:=1 to 5 do
begin
begin
for k:=1 to i do
d:=d*x[k];
end;
S:=S+sin(d)/x[i];
end;
G:=S;
End;


VAR
b:mas;
x1:mas1;
i,j:integer;

BEGIN
clrscr;
matrix(b);
writeln;
vector(b,x1);
writeln;
writeln('G=',G(x1):2:4);
readkey;
END.


и ещё две проги с такими ошибками не буду пока выносить...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.12.2005 19:08
Сообщение #4


Гость






Цитата
нова у меня ошибка в программе и Ln - положительный
Или нулевой rolleyes.gif

Ln(0) тоже не существует blum.gif
 К началу страницы 
+ Ответить 
Yurka
сообщение 12.12.2005 19:50
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 143
Пол: Мужской

Репутация: -  0  +


спасибо!!!
очень хорошо - опять я показал свои знания математики :)
но самое интересное что всё ж по условию сделано
и как теперь такие задачи сдавать?
ну а вот тут что не так?

Program nomer14;
uses crt;
Type
mas=array [1..5,1..5] of real;
mas1=array [1..5] of real;

Procedure Matrix( var a:mas);
var
i,j,y:integer;

Begin
for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
a[i,j]:=2.5*(3*i-j)-(4*i+j)/(exp((1/3)*ln(abs(i+j))))+sqr(j);
write( 'a[',i,',',j,']=',a[i,j]:2:2,' ' );
end;
writeln;
end;
End;

Procedure Vector(var a:mas; var x:mas1);

var

i, j: integer;

Dd: real;

begin

Dd:=1;
for j:=1 to 5 do

begin

for i:=1 to 5 do
begin
if a[i,j]>0 then Dd:=Dd*a[i,j];
x[i]:=Dd;
end;
end;

for i := 1 to 5 do
writeln('x[',i,']=',x[i]);

end;


Function G (x:mas1):real;
var
i,k:integer;
S,d:real;
Begin
d:=1;
S:=0;
for i:=1 to 5 do
begin
begin
for k:=1 to i do
d:=d*(x[k]/k);{вот тут вот не хочет }
end;
S:=S+(exp((1/3)*ln(x[i]))+d);
end;
G:=S;
End;


VAR
b:mas;
x1:mas1;
i,j:integer;

BEGIN
clrscr;
matrix(b);
writeln;
vector(b,x1);
writeln;
writeln('G=',G(x1):2:4);
readkey;
END.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 12.12.2005 20:05
Сообщение #6


Гость






Ну, а это уже, извините, переполнение... У тебя просто каждый x[k] очень большой, и результат перемножения просто не помещается в D...
Цитата(Console)
debug >> x[k] 1.3540954470781296E+0023
debug >> d 2.570248833416124E+070
debug >> x[k] 2.8035390563460222E+0024
debug >> d 3.480362243186647E+093
debug >> x[k] 7.4293784993169591E+0025
debug >> d 4.878665739502909E+117
debug >> x[k] 1.3540954470781296E+0023
debug >> d 1.208181811680573E+143
debug >> x[k] 2.8035390563460222E+0024
debug >> d 1.635993490439270E+166
debug >> x[k] 7.4293784993169591E+0025
debug >> d 2.293285823187173E+190
debug >> x[k] 2.4074346058293388E+0027
debug >> d 5.679229462525060E+215
debug >> x[k] 1.3540954470781296E+0023
debug >> d 3.418093385632096E+242
debug >> x[k] 2.8035390563460222E+0024
debug >> d 4.628424691172291E+265
debug >> x[k] 7.4293784993169591E+0025
debug >> d 6.487984695528897E+289
Runtime error 205 at $00401411
 К началу страницы 
+ Ответить 
Yurka
сообщение 12.12.2005 20:15
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 143
Пол: Мужской

Репутация: -  0  +


Цитата(volvo @ 12.12.2005 21:05) *

Ну, а это уже, извините, переполнение... У тебя просто каждый x[k] очень большой, и результат перемножения просто не помещается в D...

спасибо 4.gif дружище!!!
я поменял на своё усмотрение

d:=d*(x[k]/(k+x[k]));


теперь нормально...
но как можно такие формулы давать? в задании...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 14:38
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"