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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2014, 17:27   #1
Vaas
 
Регистрация: 01.07.2014
Сообщений: 4
По умолчанию перевод с Pascal в С++

Код:
uses crt,graphABC;
function y(x:real):real;
begin
if x<0 then y:=x*x
else if x<=2.5 then y:=1+3*ln(abs(1-x*x*x))
else y:=cos(2.3*x-1)
end;
var a,b,x,h,max,min,mx,my,dx:real;
    x0,y0,i,n:integer;
    s:string;
begin
a:=-pi/4;
b:=7*pi/4;
h:=pi/4;
x:=a;
while x<=b do
 begin
  writeln('x=',x:5:1,'  y=',y(x):7:3);
  x:=x+h
 end;
write('Нажмите Enter для просмотра графика');
readln;
hidecursor;
clrscr;
x0:=round(-windowwidth*a/(b-a));
y0:=windowheight div 2;
mx:=(windowwidth-50)/(b-a);{масштаб по Х}
x:=a;
max:=y(x);
min:=max;
while x<b do
 begin
  x:=x+0.01;
  if y(x)>max then max:=y(x);
  if y(x)<min then min:=y(x);
 end;
if max>abs(min) then my:=(y0+20)/max {масштаб по Y}
else my:=(y0+20)/abs(min);
n:=7;
if max>n then n:=trunc(max)+1;
if abs(min)>n then n:=trunc(abs(min))+1;
line(0,y0,windowwidth,y0);{оси}
line(x0,0,x0,windowheight);
for i:=1 to n do{максимальное количество засечек в одну сторону}
  begin
    line(x0+round(i*pi*mx/4),y0-3,x0+round(i*pi*mx/4),y0+3); {засечки на оси Х}
    line(x0-round(i*pi*mx/4),y0-3,x0-round(i*pi*mx/4),y0+3);
    line(x0+3,y0-round(i*my),x0-3,y0-round(i*my)); {засечки на оси Y}
    line(x0+3,y0+round(i*my),x0-3,y0+round(i*my));
    {подпись оси Х}
    if i=1 then
     begin
      textout(x0+round(mx*pi/4)-15,y0+10,'pi/4');
      textout(x0-round(mx*pi/4)-15,y0+10,'-pi/4');
     end
    else
     begin
      textout(x0+round(mx*i*pi/4)-15,y0+10,inttostr(i)+'pi/4');
      textout(x0-round(mx*i*pi/4),y0+10,inttostr(-i)+'pi/4');
     end;
    {подписи по оси Y}
    str(i,s);
    textout(x0-25,y0-round(i*my)-10,s);
    textout(x0-30,y0+round(i*my)-10,'-'+s);
  end;
{центр}
textout(x0+5,y0+10,'0');
{подписи концов осей}
textout(windowwidth-15,y0-25,'X');
textout(x0+5,8, 'Y');
{график}
x:=a;
dx:=0.001;
while x<=b do
 begin
  x:=x+dx;
  setpixel(x0+round(x*mx),y0-round(y(x)*my),clBlue);
 end;
setfontsize(12);
setfontcolor(clBlue);
textout(x0+250,10,'       x<0  y=x^2');
textout(x0+250,30,' 0<=x<=2.5  y=1+3*ln|1-x*x*x|');
textout(x0+250,50,'     x>2.5  y=cos(2.3*x-1)');
end.

Последний раз редактировалось Stilet; 03.07.2014 в 18:12.
Vaas вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевод Pascal - C++ spinogryz_ua Помощь студентам 0 12.11.2012 00:02
Перевод на С++ (Pascal) spinogryz_ua Помощь студентам 3 10.10.2012 17:34
перевод с pascal на с++ Balthazar Помощь студентам 0 08.12.2010 18:50
перевод из Pascal в С++ edise Помощь студентам 0 13.11.2010 16:01
Перевод кода из Pascal в Object Pascal zemskov77 Общие вопросы Delphi 1 03.01.2009 09:37