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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2011, 21:55   #1
EfeR
Новичок
Джуниор
 
Регистрация: 26.05.2011
Сообщений: 2
По умолчанию График

Вообщем я написал программу для графика в 2хмерном пространстве,для функции y=exp(x) график рисуется препосходно и без единой ошибки при попытке замены на другую функцию или хотябы тупо на прямую y=x мой график выходит за пределы прямоугольника(rectangle) помогите сделать чтобы график функции не выходил за пределы прямоугольника ,ниже код

Код:
#include <graphics.h>
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

float f(float x);
void main()
{
float a1,a2,b1,b2,ymax,ymin,xr,xl=50,yr,yl=50,y,x,xgr,ygr,dx,dy;
int x2,y2,xmin,xmax;
char maxx[10],maxy[10],min[5],max[5], ox[5], oy[10];

printf ("vvedite predely\n");
scanf ("%d %d",&xmin,&xmax);

int gdriver=DETECT, gmode;
initgraph(&gdriver,&gmode,"C:\\BORLANDC\\BGI");

x2=getmaxx();
xr=x2-50;
itoa(x2,maxx,10);
y2=getmaxy();
yr=y2-50;
itoa(y2,maxy,10);

itoa(xmin,min,10);
itoa(xmax,max,10);

ymin=0;
ymax=f(xmax);

dx=(xmax-xmin)/10;
//dx=sqrt(pow(dx,2));
dy=ymax/10;

setcolor(8);
setbkcolor(15);
settextjustify(CENTER_TEXT,CENTER_TEXT);

outtextxy(x2/2-20,y2-15,maxx);
outtextxy(x2/2+20,y2-15,maxy);
outtextxy(x2/2,y2-15,"*");

rectangle(xl-20,yl-10,xr+10,yr+20);
//
a1=(xr-xl)/(xmax-xmin);
a2=xl-a1*xmin;
b1=(yl-yr)/(ymax-ymin);
b2=yl-b1*ymax;
xgr=a1*xmin+a2;
ygr=b1*f(xmin)+b2;
moveto(xgr,ygr);
//
outtextxy(x2/2,yl-35,"y=exp(x)");
outtextxy(x2/2-25,yl-15,min);
outtextxy(x2/2,yl-15,"<x<");
outtextxy(x2/2+20,yl-15,max);

///////
moveto(xl-10,b2);
lineto(xr+5,b2);
moveto(xr,b2+5);
lineto(xr+5,b2);
moveto(xr,b2-5);
lineto(xr+5,b2);
outtextxy(xr-1,b2-5,"x");
//
for (x=xmin;x<=xmax;x+=dx)
 {
 itoa(x,ox,10);
 moveto(a1*x+a2,b2-3);
 lineto(a1*x+a2,b2+3);
 outtextxy(a1*x+a2,b2+10,ox);
 }

if (xmax>=0)
if (xmin<=0)
 {
 moveto(a2,yl-5);
 lineto(a2,yr);
 moveto(a2-5,yl);
 lineto(a2,yl-5);
 moveto(a2+5,yl);
 lineto(a2,yl-5);
 outtextxy(a2-10,yl,"y");

 for (y=dy;y<=ymax;y+=dy)
 {
 itoa(y,oy,10);
 moveto(a2-3,b1*y+b2);
 lineto(a2+3,b1*y+b2);
 outtextxy(a2+20,b1*y+b2,oy);
 }


 }

 


///////
x=xmin;
while (x<=xmax)
{
 y=f(x);
 xgr=a1*x+a2;
 ygr=b1*y+b2;
 putpixel(xgr,ygr,4);
 x+=0.0001;
}

getch();
closegraph();
}
float f(float x)
{
 return exp(x);
}

Последний раз редактировалось ACE Valery; 27.05.2011 в 12:22.
EfeR вне форума Ответить с цитированием
Старый 26.05.2011, 22:22   #2
EfeR
Новичок
Джуниор
 
Регистрация: 26.05.2011
Сообщений: 2
По умолчанию

Чуть не забыл если пишет ошибку с инитграфом в строчке initgraph(&gdriver,&gmode,"C:\\BORL ANDC\\BGI"); измените на ваш путь
EfeR вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
График C# Привет Общие вопросы .NET 0 08.06.2010 08:58
график ddeman666 Помощь студентам 1 03.06.2010 16:50
график ddeman666 Помощь студентам 1 02.06.2010 11:37
график ddeman666 Помощь студентам 0 30.05.2010 17:43
График Paul_AG Общие вопросы C/C++ 3 29.05.2009 22:20