Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.10.18;
Скачать: [xml.tar.bz2];

Вниз

Помогите решить проблему   Найти похожие ветки 

 
Lex_okha ©   (2009-08-19 20:41) [0]

Проблема в следующем.
Имеется рабочая программа на паскале.
копирую и вставляю в делфи, графику и выводы переобозначиваю как надо. Проблема только в дном месте в программе при входе в одну из процедур переобозначаюся переменные! совершенно произвольными цифрами типа 1.4е-314 или типа такого числа близкие к нулю при выходе изпроцедуры значения цифр возвращается в нормальное(предположительно), так как первые две част использующие эту процедуру работаю вроде бы как надо, а когда дело доходит до более больших цифр и дальнейшего времени то комп зависает с ошибкой нехвтки памяти!!! после того как он загребает 1 гиг файла подкачки.
В чем может быть причина?

процедур описана так

procedure Mersonhi(
 n,rt:integer;
 var y:vector;
 var mstb:vector;
 var hc:real;
 hmin:real;
 eps:real;
 var t:real;
 var flag:integer;
 var hp:real);
  label 2;
var i,iter:integer;
 y1,y2,f0,f1,f2:vector;
 err,temp,h:real;
 ok:boolean;

убирал "lable 2" некоторые цифры стали нормальные, но переменные:  err,eps,hmin  все равно меняются!

Заранее спасибо.


 
Palladin ©   (2009-08-19 20:44) [1]

у тебя ошибка в программе


 
Сергей М. ©   (2009-08-19 20:50) [2]


> переобозначаюся переменные! совершенно произвольными цифрами
> типа 1.4е-314


Что за ахинея ?
Как это "переобозначаются" ?
Что вообще ты понимаешь под этим термином ?

И в каком букваре написано что символ "e" - это цифра ?


> переменные:  err,eps,hmin  все равно меняются


Сами по себе что ли ? Не пори чушь.


 
Lex_okha ©   (2009-08-19 20:54) [3]

Уважаемый Сергей М.
типа 1.4е-314
Это если расписать словами ПРИМЕР:
переменной err присваивается значение 1,4 умножить на 10 в -314 степени

я так понимаю это число приравненное к нулю!
почему так сам не понимаю на паскале этот вариант работает как часы. вот и спрашиаю совет сожет кто чего знает?

Palladin
в программе ошибок не вдел... хотя это и немоя пога мне в ней надо разобраться. на паскале её копия как я говорил работает.


 
Lex_okha ©   (2009-08-19 20:58) [4]

Сергей М.
могу выложить скрины пошагового запуска программы. при входе в эту процедуру происходит такая Чушь!

я не знаю но если убрать метку (lable 2 ) то 3 или 4  величины не меняются как жто может быть связано?? может метка описывается как то по другому? я с ними не работал незнаю.


 
Сергей М. ©   (2009-08-19 20:58) [5]


> переменной err присваивается значение 1,4 умножить на 10
> в -314 степени


Это не цифра, число.
Разницу между цифрой и числом вдалбливают еще В 1-м классе церковно-приходской школы.

Само по себе что ли присваивается ?


 
Lex_okha ©   (2009-08-19 21:01) [6]

Да само по себе.
и только в этой процедуре.

P.s. мозги малость закипают...


 
Palladin ©   (2009-08-19 21:04) [7]


> в программе ошибок не вдел... хотя это и немоя пога мне
> в ней надо разобраться. на паскале её копия как я говорил
> работает.

а суслика ты видел?


 
Lex_okha ©   (2009-08-19 21:08) [8]

Palladin
Если умный помоги советом буду признателен, если поговориь не с кем включи радио или телевизор и поговори с ним, как один "дядя" из Таганрога!!!
;)
P.s. Сусликов уж давно не видал, покажешь?


 
Palladin ©   (2009-08-19 21:12) [9]


> [8] Lex_okha ©   (19.08.09 21:08)

совет: лопата в руки и искать суслика, я тебе не кашпировский, да и врядли кто то тут им является...


 
Palladin ©   (2009-08-19 21:13) [10]

нота бене: лопату прекрасно заменит отладчик и клавиши F7, F8


 
Lex_okha ©   (2009-08-19 21:16) [11]

Palladin
В отладчике как раз таки это  и было замечено! ;)
А какую инфу надо для того чтоб кто либо мог помочь в этом вопросе?


 
Lex_okha ©   (2009-08-19 21:32) [12]

procedure Mersonhi(
 n,rt:integer;
 var y:vector;
 var mstb:vector;
 var hc:real;
 hmin:real;
 eps:real;
 var t:real;
 var flag:integer;
 var hp:real);
 { label 2; }
var i,iter:integer;
 y1,y2,f0,f1,f2:vector;
 err,temp,h:real;
 ok:boolean;

begin
iter:=0;
 flag:=0;h:=hc;

 repeat
      iter:=iter+1;
   prav(t,y,f0);
   for i:=1 to n do y1[i]:=y[i]+h*f0[i]/3.0;
   prav(t+h/3,y1,f1);
   for i:=1 to n do y1[i]:=y[i]+(f0[i]+f1[i])*h/6;
   prav(t+h/3,y1,f1);
   for i:=1 to n do y1[i]:=y[i]+(f0[i]+3*f1[i])*h/8;
   prav(t+h/2,y1,f2);
   for i:=1 to n do y1[i]:=y[i]+(f0[i]-3*f1[i]+4*f2[i])*h/2;
   prav(t+h,y1,f1);
   err:=1e-30;
   for i:=1 to n do begin
     y2[i]:=y[i]+(f0[i]+4*f2[i]+f1[i])*h/6;
     temp:=abs(0.2*(y1[i]-y2[i])/mstb[i]);
     if temp>err then err:=temp;
   end{for};
   ok:=err<eps;
   if ok then begin
     t:=t+h;      y:=y2
   end{if};

   if ok or (iter<2) then begin h:=h*exp(ln(0.8*eps/err)/5.0);
   end;
     if (h>hp) then begin
                     h:=hp;       { goto 2  }
                    end;
     if (h<hp) then
       begin
         h:=h/2;
            if h<hmin then begin
                            flag:=13;        exit
            end{if};
      end;
{2:}until ok;
   hc:=h;
end;



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.10.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.005 c
11-1175699064
!Pharaon!
2007-04-04 19:04
2009.10.18
Пару вопросов по KOL


2-1249639107
Бисовецкий Андрей
2009-08-07 13:58
2009.10.18
Проблема со скоростью


2-1250832350
GlTech
2009-08-21 09:25
2009.10.18
Указатели


2-1250248366
Dymok
2009-08-14 15:12
2009.10.18
Как автоматически ставить пробел после запятой


2-1250608683
sanx
2009-08-18 19:18
2009.10.18
Заставить memo воспринимать разделитель строки не только #13#10





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский