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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2009, 10:46   #11
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
2)подскажите как поменять цвер второй функции.
Измените значение последнего параметра процедуры putpixel.
Цитата:
1)Не могу всё таки вставить никуда чтобы программа у меня спрашивала x(нач),x(кон),dx,eps(епсилон). куда не вставляю выдаёт ошибку.
Цитата:
Вывести на экран в графическом режиме графики двух функций на интервале от x(нач) до x(кон) с шагом dx.
Что-то не очень понимаю, что за шаг.
В общем, навскидку, добавьте условие туда, где вы выводите график (если >=x(нач) и <=x(кон), то выводим). Наверное, так.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 13.05.2009, 11:14   #12
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

x(нач),x(кон),dx - это интервал на котором надо строить графики, x начальное, x конечное, dx - расстояние между x1 и x2 соответственно.
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 13.05.2009, 11:31   #13
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от bpystep
x(нач),x(кон),dx - это интервал на котором надо строить графики, x начальное, x конечное, dx - расстояние между x1 и x2 соответственно.
В таком случае, как я и сказал, вы изначально неверно строите и оси координат и сами графики. Смените подход.
Уже сами оси (со своими отметками) должны строится на основе x1,x2,dx. А у вас они статичны.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 13.05.2009, 12:03   #14
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

можешь вот эту часть пояснить, каждое дейстив отдельно плиз
Код:
for i:=0 to 640 do
  begin
  ix2:=i/20-2;
  if abs(ix2)>1 then
   begin
   iy := round(400 - 25*y(ix2));
   putpixel(round(100 + 50*ix2),iy,4);
   end;
  end;
те проблемы решил, спс
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 13.05.2009, 12:15   #15
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
for i:=0 to 640 do  // это область экрана (по иксу), в которой будем рисовать
  begin
  ix2:=i/20-2;     // здесь координата в пикселях преобразуется в координату в декартовой системе
  if abs(ix2)>1 then  // если она по модулю больше 1 (см. условие)
   begin
   iy := round(400 - 25*y(ix2));  // то считаем для нее координату по y и преобразуем ее в координату в пикселях
   putpixel(round(100 + 50*ix2),iy,4);  // выводим пиксель
   end;
  end;
Знаете, проверьте все еще раз. Мне что-то не нравится, как это выглядит.
здесь преобразуем по одной формуле
Код:
ix2:=i/20-2;
а тут уже по другой
Код:
putpixel(round(100 + 50*ix2)
что-то не то...
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 13.05.2009, 12:32   #16
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

я немножко не понимаю, по каким законам выводятся пиксели=(
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 13.05.2009, 12:38   #17
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

остался последний прорыв, как сделать так чтобы программа строила на указанном участке от xn до xk??? а не на всей оси.

а остальное всё работает.
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 13.05.2009, 12:44   #18
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
остался последний прорыв, как сделать так чтобы программа строила на указанном участке от xn до xk??? а не на всей оси.
Добавьте проверку. Что-то вроде
Код:
if (x>=xn) and (x<=xk) then
 {  выводим пиксель }
где x - текущая координата
Цитата:
я немножко не понимаю, по каким законам выводятся пиксели=(
Законы вы задаете сами.
Есть левая граница экрана и есть правая. Также есть левая граница куска декартовой системы и правая. Эти величины вам известны.
И вот у вас есть некая координата в декартовой системе. Как получить координату в пикселях? Соотношением.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 19.05.2009, 00:04   #19
bpystep
Форумчанин
 
Регистрация: 25.02.2009
Сообщений: 180
По умолчанию

всё доделал программу. вот код:
Код:
uses graph,crt;

function y(x:real):real;
var rez,a,eps:real;
k:integer;
begin
a:=1/x;
k:=1;
rez:=0;
while a>=eps do
 begin
 rez:=rez + a;
 inc(k,2);
 a:=a/(k*sqr(x));
 end;
y:=rez;
end;

function z(x,b:real):real;
begin
 z:=ln((x+1)/(x-1)+b);
end;

var
 graphdriver,
 graphmode:integer;
 ix2,b,eps:real;
 ix,iy,ix1,iy2,xk,xn,i:integer;
 ErrorCode:integer;

procedure MyGraphInit;
begin
write(' x начальное       = ');readln(xn);
write(' x конечное        = ');readln(xk);
write(' Введите епсилон   = ');readln(eps);
write(' b                 = ');readln(b);
 GraphDriver:=Detect;
 InitGraph(GraphDriver,GraphMode, '');
 ErrorCode:=GraphResult;
 if ErrorCode <> grOk then
 begin
  writeln('InitGraph Error: ',GraphErrorMsg(ErrorCode));
  Writeln('Program is aborted!');
  Halt(1);
 end;
end;

begin
 clrscr;
 MyGraphInit;
{--------Вывод координатных осей----------}
 setlinestyle (solidln, 0, normwidth);
 line(100,450,100,50);
 line(50,400,600,400);
 line(100,50,95,65);
 line(100,50,105,65);
 line(600,400,580,395);
 line(600,400,580,405);

 outtextxy(90,410,'0');
 outtextxy(87,375,'1');
 outtextxy(87,275,'5');
 outtextxy(80,150,'10');
 outtextxy(80,60,'Y');

 line(95,375,105,375);
 line(95,350,105,350);
 line(95,325,105,325);
 line(95,300,105,300);
 line(95,275,105,275);
 line(95,250,105,250);
 line(95,225,105,225);
 line(95,200,105,200);
 line(95,175,105,175);
 line(95,150,105,150);

 outtextxy(150,405,'1');
 line(150,395,150,405);
 outtextxy(200,405,'2');
 line(200,395,200,405);
 outtextxy(250,405,'3');
 line(250,395,250,405);
 outtextxy(300,405,'4');
 line(300,395,300,405);
 outtextxy(350,405,'5');
 line(350,395,350,405);
 outtextxy(400,405,'6');
 line(400,395,400,405);
 outtextxy(450,405,'7');
 line(450,395,450,405);
 outtextxy(500,405,'8');
 line(500,395,500,405);
 outtextxy(550,405,'9');
 line(550,395,550,405);
 outtextxy(590,415,'X');

 ix :=0;
 iy :=0;
 iy2:=0;
{-------Вывод графика y ------------}
 for i:=0 to 640 do
  begin
  ix2:=i/20-2;
  if (abs(ix2)>1)and(ix2>xn)and(ix2<xk) then
   begin
   iy := round(400 - 25*y(ix2));
   putpixel(round(100 + 50*ix2),iy,20);
   end;
  end;
{-------Вывод графика z ------------}
 for i:=0 to 640 do
  begin
  ix2:=i/20-2;
  if (ix2>xn)and(ix2<xk) then
   begin
   iy:=round(400 - 25*z(ix2,b));
   putpixel(round(100 + 50*ix2),iy,15);
   end;
  end;
readln;
closegraph;
end.
Запомните, вы едете в Россию, поэтому когда компьютер попросит вас набрать пароль, наберите слово "Пароль"
bpystep вне форума Ответить с цитированием
Старый 19.05.2009, 00:18   #20
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Гуд. Хотя оси вы по-прежнему рисуете статически, без пересчета. Но если вас устраивает, то ладно.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
pascal графика world12_tk Помощь студентам 1 25.04.2009 18:56
[Pascal] Графика Рамик Помощь студентам 5 15.04.2009 03:06
Перевод кода из Pascal в Object Pascal zemskov77 Общие вопросы Delphi 1 03.01.2009 09:37
Графика V1rusPro Общие вопросы .NET 0 22.04.2008 08:25