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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2014, 10:17   #21
Olecinia
Пользователь
 
Регистрация: 19.11.2014
Сообщений: 13
Вопрос

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
простым - перебором..
А не могли бы вы мне еще немного помочь, меня попросили закомментировать каждый цикл и действие, я немного не понимаю...
Olecinia вне форума Ответить с цитированием
Старый 07.12.2014, 00:19   #22
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
А не могли бы вы мне еще немного помочь, меня попросили закомментировать каждый цикл и действие, я немного не понимаю...
ну, не знаю.. наверное, мог бы..
а что Вам непонятно - спрашивайте.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.12.2014, 16:20   #23
Olecinia
Пользователь
 
Регистрация: 19.11.2014
Сообщений: 13
По умолчанию

Не понимаю, для чего нужны вот эти переменные
s,s1:string
Olecinia вне форума Ответить с цитированием
Старый 08.12.2014, 16:37   #24
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Olecinia Посмотреть сообщение
Не понимаю, для чего нужны вот эти переменные
s,s1:string
для того, чтобы вывести число на экран в графическом режиме.
функция outtextXY может выводить только текст.
поэтому, мы число преобразовываем в строку с помощью функции str() и полученную строку выводим в нужное место.

например:
Цитата:
Код:
    {подпись оси У}
    str(i*10,s);
    outtextXY(x0-25,y0-round(i*my*10),s);{соответственно засечкам}
    outtextXY(x0-30,y0+round(i*my*10),'-'+s);
    line(x0+round(i*mx),y0-3,x0+round(i*mx),Y0+3); {засечки на оси Х}
    line(x0-round(i*mx),y0-3,x0-round(i*mx),Y0+3);
    {подпись оси Х}
    str(i,s);
    outtextXY(x0+round(i*mx),y0+10,s);
    outtextXY(x0-round(i*mx),y0+10,'-'+s);
или вывод интервала корней:
Цитата:
Код:
outtextXY(50,y0,'intervaly kornej');  {Здесь показывает неправильный ответ}
for i:=1 to n do
 begin
  str(a[i,1],s);
  str(a[i,2],s1);
  outtextXY(50,y0+20*i,'['+s+';'+s1+']');
 end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.12.2014, 17:14   #25
Olecinia
Пользователь
 
Регистрация: 19.11.2014
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
для того, чтобы вывести число на экран в графическом режиме.
функция outtextXY может выводить только текст.
поэтому, мы число преобразовываем в строку с помощью функции str() и полученную строку выводим в нужное место.
Понятно, во все разобралась. Еще раз спасибо за помощь))

Ой нет "девушка блин", а как можно сделать график системы уравнения?

Последний раз редактировалось Stilet; 09.12.2014 в 19:56.
Olecinia вне форума Ответить с цитированием
Старый 08.12.2014, 23:22   #26
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
а как можно сделать график системы уравнения?
вывести график каждого из уравнений, входящих в систему.

Если не ошибаюсь. то тТочка (или точки) пересечения графиков и будут являтся решением данной системы.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.12.2014, 19:23   #27
Olecinia
Пользователь
 
Регистрация: 19.11.2014
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
вывести график каждого из уравнений, входящих в систему.

Если не ошибаюсь. то тТочка (или точки) пересечения графиков и будут являтся решением данной системы.
Так я это понимаю, а вот как запрограммировать пересечение двух графиков я не знаю
Olecinia вне форума Ответить с цитированием
Старый 10.12.2014, 11:35   #28
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Так я это понимаю, а вот как запрограммировать пересечение двух графиков я не знаю
вы, для начала, выведите два графика на одном чертеже. А потом уже поговорим про точку(точки) пересечения этих графиков!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.12.2014, 16:41   #29
Olecinia
Пользователь
 
Регистрация: 19.11.2014
Сообщений: 13
Плохо

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
вы, для начала, выведите два графика на одном чертеже. А потом уже поговорим про точку(точки) пересечения этих графиков!
Я совсем запуталась с построением графика...
uses graph;
function F(x:real):real;
function F2(x:real):real;
begin
F:=2*x*x-5-exp(ln(2)*x); {F(x)- исходная функция}
F2:=2*x+5-exp(ln(2));
end;
var xn,xk,max,min,mx,my,dx:real;
x:real;
x0,y0,i,c,n:integer;
s,s1:string;
a:array[1..20,1..2] of integer;
begin

x0:=0;
initgraph(x0,y0,''); {Графический модуль}
xn:=-7;xk:=7;{Интервал по оси Х}
x0:=getmaxX div 2;
mx:=(x0-30)/xk;{Масштаб по оси Х}
y0:=getmaxY div 2;
max:=F(xn);
min:=F(xn);
x:=xn;
while x<=xk do
begin
if F(x)>max then max:=F(x);
if F(x)<min then min:=F(x);
x:=x+0.05;
end;
while x<=xk do
begin
if F2(x)>max then max:=F2(x);
if F2(x)<min then min:=F2(x);
x:=x+0.05;
end;
if max>abs(min) then my:=(y0-30)/max
else my:=(y0-30)/abs(min);
setbkcolor(15); {Цвет фона}
setcolor(8); {Цвет линий функции}
line(0,y0,getmaxX,y0); {Ось x}
line(x0,0,X0,getmaxY); {Ось y}

for i:=1 to 10 do {максимальное количество делений в одну сторону}
begin
line(x0-3,y0-round(i*my*10),x0+3,y0-round(i*my*10));
line(x0-3,y0+round(i*my*10),x0+3,y0+round(i *my*10));
str(i*10,s); {Подпись оси У}
outtextXY(x0-25,y0-round(i*my*10),s);
outtextXY(x0-30,y0+round(i*my*10),'-'+s);
line(x0+round(i*mx),y0-3,x0+round(i*mx),Y0+3);
line(x0-round(i*mx),y0-3,x0-round(i*mx),Y0+3);
str(i,s); {Подпись оси Х}
outtextXY(x0+round(i*mx),y0+10,s);
outtextXY(x0-round(i*mx),y0+10,'-'+s);
end;
outtextXY(x0+5,y0+10,'0'); {Находим центр графика}
outtextXY(getmaxX-10,y0-10,'X'); {Подписи концов оси x}
outtextXY(x0+5,10, 'Y'); {Подписи концов оси y}
x:=xn;
dx:=0.01;
n:=0;
moveto(x0+round(x*mx),y0-round(F(x)*my));
begin
setcolor(12);
setlinestyle(0,0,1);
lineto(x0+round(x*mx),y0-round(F(x)*my));
if F(x)*F(x+dx)<0 then
begin
setcolor(9);
setlinestyle(0,0,3);
circle(x0+round(x*mx),y0-round(F(x)*my),2);
n:=n+1;
if x<0 then
begin
a[n,2]:=trunc(x);
a[n,1]:=a[n,2]-1;
end
else
begin
a[n,1]:=trunc(x);
a[n,2]:=a[n,1]+1;
end;
end;
x:=x+dx;
end;
x:=xn;
dx:=0.01;
n:=0;
moveto(x0+round(x*mx),y0-round(F2(x)*my));
while x<=xk do
begin
setcolor(12);
setlinestyle(0,0,1);
lineto(x0+round(x*mx),y0-round(F2(x)*my));
if F(x)*F(x+dx)<0 then
begin
setcolor(9);
setlinestyle(0,0,3);
circle(x0+round(x*mx),y0-round(F2(x)*my),2);
n:=n+1;
if x<0 then
begin
a[n,2]:=trunc(x);
a[n,1]:=a[n,2]-1;
end
else
begin
a[n,1]:=trunc(x);
a[n,2]:=a[n,1]+1;
end;
end;
x:=x+dx;
end;
setcolor(12);
outtextXY(x0+30,20,'График функции y=2x^2-5-2^x');
outtextXY(x0+50,40,'На интервале [-7;7]');
y0:=getmaxY-200;
outtextXY(50,y0,'Интервал корней:');
for i:=1 to n do
begin
str(a[i,1],s);
str(a[i,2],s1);
outtextXY(50,y0+20*i,'['+s+';'+s1+']');
end;
for i:=1 to n do begin
x:=a[i,1];
while (abs(F(x))>0.0001) and (x<a[i,2]) do x:=x+0.00001;
str(x:2:6,s);
outtextXY(150,y0+20*i,'x = '+s);
for i:=1 to n do begin
x:=a[i,1];

while (abs(F2(x))>0.0001) and (x<a[i,2]) do x:=x+0.00001;
str(x:2:6,s);
outtextXY(150,y0+20*i,'x = '+s);
end;

readln

end.
Olecinia вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать программму, которая будет решать систему уравнений матричным способом Наталья1991 Паскаль, Turbo Pascal, PascalABC.NET 1 15.05.2012 01:10
Можно ли написать программу которая будет работать в Windows и Linux Arassir Qt и кроссплатформенное программирование С/С++ 2 27.10.2011 23:35
Возможно ли написать такую программу которая будет решать уравнение ? Anizotrop Помощь студентам 3 28.09.2011 13:49
Написать программу, которая будет использовать ранее созданную библиотеку. sanya94 Общие вопросы C/C++ 3 19.02.2011 00:58
Delphi: Отделение корней уравнения графическим способом JustSmile Помощь студентам 1 29.11.2009 10:33