Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Перевод на Borland C++  (Прочитано 10233 раз)
0 Пользователей и 1 Гость смотрят эту тему.
M31
Помогающий

ua
Offline Offline

« : 21-05-2006 11:50 » 

Помогите перевести с обычного С++ на Borland C++.
Вот текст прогу:

Код:
#include<graphics.h>
#include<math.h>
#include<iostream.h>

double func (double v,double t)
{return  (((8*t)/(3*v-1))-(3/(v*v)));}
double hord (double p,double a, double b, double t)
{ double c;
  c=(a+b)/2;
  while ((b-a)>0.00001)
   { if (p-func(c,t)>0)
     b=c;
     else a=c;
     c=(a+b)/2;}
return (c);}
double simpson (double vk1, double vk2,double t)
   { double del,s;
     int r;
     s=0;
     del=(vk2-vk1)/100;
     for (r=2; r<100; r=r+2)
     s=s+2*func(vk1+r*del,t);
     for (r=1; r<100; r=r+2)
     s=s+4*func(vk1+r*del,t);
     s=s+func(vk1,t)+func(vk2,t);
     s=s*del/3;
     return (s);}
void main()
{ int grd,grm,v0,y0;
  const int n = 200,numx=600,numy=400;
  double v[n],f[n],vmax=6,vmin=0.35,tmin,t,dt,dv,pmax=5,pmin=-3;
  double d1[10],d2[10],d3[10],d4[10];
  detectgraph (&grd,&grm);
  initgraph(&grd,&grm,"C:\\bgi");
  setbkcolor(1);
  line(20,20,20,460);
  line(20,460,620,460);

  dv=(vmax-vmin)/(n-1);
  v0=20; y0=460;
  tmin=0.55;
  dt=0.05;
  for (int j=1;j<((1-tmin)/dt)+1;j++)
   { t=tmin+dt*j;
     if (t<1)
      { for(int i=0;i<n;i++)
      {v[i]=vmin+i*dv;
          f[i]=func(v[i],t);}
          {
          setcolor(RED);
          for(int i=0;i<n-1;i++)
          line(v0+numx*(v[i]-vmin)/(vmax-vmin),(y0-numy*(f[i]-pmin)/(pmax-pmin)),v0+numx*(v[i+1]-vmin)/(vmax-vmin),(y0-numy*(f[i+1]-pmin)/(pmax-pmin)));}
          int k;
          double p1,p2,min,max,v1,v2;
          min=f[0];
          for (int i=1;i<n;i++)
             { if (min>f[i])
                {k=i,v1=v[i];min=func(v1,t);}
               else  break;}
          max=min;
          for (int j=0;j<n;)
            { j=k+1+j;
              if (max<f[j])
                {v2=v[j];max=func(v2,t);}
              else  break;}
          double P1,Pl, P2, vk1, vk2, S1, S2;
          P1=func(v1,t);
          P2=func(v2,t);
          Pl=(P1+P2)/2;
          vk1=hord(Pl,vmin,v1,t);
          vk2=hord(Pl,v2,vmax,t);
          S1=simpson(vk1, vk2, t);
          S2=Pl*(vk2-vk1);
          while (fabs(S1-S2)>0.0001)
            { Pl=(P1+P2)/2;
              vk1=hord(Pl,vmin,v1,t);
              vk2=hord(Pl,v2,vmax,t);
              S1=simpson(vk1, vk2, t);
              S2=Pl*(vk2-vk1);
              if (S1<S2)
          P2=Pl;
              else P1=Pl;}
          Pl=(P1+P2)/2;
          p1=hord(Pl,vmin,v1,t);
  p2=hord(Pl,v2,vmax,t);
          d1[j]=p1;d2[j]=p2;
          d3[j]=P1;d4[j]=P2;
  setcolor(WHITE);
          line((v0+numx*(p1-vmin)/(vmax-vmin)),(y0-numy*(Pl-pmin)/(pmax-pmin)),(v0+numx*(p2-vmin)/(vmax-vmin)),(y0-numy*(Pl-pmin)/(pmax-pmin)));}
          else
          {for(int i=0;i<n;i++)
            { t=1;
              v[i]=vmin+i*dv;
              f[i]=func(v[i],t); }
              {
                         setcolor(RED);
           for(int i=0;i<n;i++)
           lineto((v0+numx*(v[i]-vmin)/(vmax-vmin)),(y0-numy*(f[i]-pmin)/(pmax-pmin)));}
          double P1;
          P1=func(1,t);
          d1[j]=1;d2[j]=1;
    d3[j]=P1;d4[j]=P1;}}
  for (int i=1;i<((1-tmin)/dt);i++)
{ setcolor(10);
line((v0+numx*(d1[i]-vmin)/(vmax-vmin)),(y0-numy*(d3[i]-pmin)/(pmax-pmin)),(v0+numx*(d1[i+1]-vmin)/(vmax-vmin)),(y0-numy*(d3[i+1]-pmin)/(pmax-pmin)));
     line((v0+numx*(d2[i]-vmin)/(vmax-vmin)),(y0-numy*(d4[i]-pmin)/(pmax-pmin)),(v0+numx*(d2[i+1]-vmin)/(vmax-vmin)),(y0-numy*(d4[i+1]-pmin)/(pmax-pmin)));}
      setcolor(1);
  char a;
  cin>>a;
  }
У меня вроде всё как получается но вот с выводом графики полный тупик. Не как не могу нормально вывести график:(
Заранее огромное спасибо
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 21-05-2006 14:24 » 

Судя по коду, это уже Borland C++, а не просто С++ - графическая библиотека точно Borland, наверно исходник Borland C++ 3.1.

Проблема решена - сделан вывод, что проблемы не существует. Ага
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
M31
Помогающий

ua
Offline Offline

« Ответ #2 : 21-05-2006 14:33 » 

Я имел немножко другое в виду. Да это на писано на Borland C++3.1 , а мне нужно чтобы эти графики выводило на форму в Borland C++ 6. Вот у меня все части графиков раскиданы по тимаге и у меня ни чего не получаеться сделать:((((
Записан
Sands
Помогающий

ua
Offline Offline

« Ответ #3 : 21-05-2006 17:12 » 

А ты попробуй рисовать не в TImage, а в TChart. Намного удобнее скажу я тебе. Если согласишся и будут траблы с реализацией, пиши - рассмотрим.
Записан
M31
Помогающий

ua
Offline Offline

« Ответ #4 : 21-05-2006 17:47 » 

мне запритили использовать Тчар:(
Записан
Sands
Помогающий

ua
Offline Offline

« Ответ #5 : 21-05-2006 18:12 » 

А в Borland 3.1 графики рисовались?
Если да, то дело решаемое.Тогда возьми TImage и установи ему высоту в 480, а длинну в 640(если я правильно понял то под ДОСом в ращетный режим именно такой) потом делай следующее:
Для установки цвета линии - Image1->Canvas->Pen->Color=<нужный_цвет>;
а все свои line(x0,y0,x1,y1) замени на
Image1->Canvas->MoveTo(x0,y0);
Image1->Canvas->LineTo(x1,y1);
По идее длжно сработать
Записан
M31
Помогающий

ua
Offline Offline

« Ответ #6 : 21-05-2006 18:55 » new

Ура всё вышло:)))) моя ошибка была в том что я использовал только LineTo:)
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines