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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2011, 18:33   #1
FOCS
Новичок
Джуниор
 
Регистрация: 29.04.2011
Сообщений: 1
Вопрос построение графиоков в B.C 3.1

Делаю курсовой проект. Встретился с проблемой. Программа строит графики. суть в том что мне нужно сделать так чтоб пользователь сам выбирал цифрами от 1 до 9 функцию вбивал коэфиценты. И программа строила бы их.
/*---------------------------Main.cpp главный файл--------------*/
#include "fyn.cpp"



void Ent_Drive();
void Grafic_1();
//------------------------
int main()
{

Ent_Drive();
//Размеры окна в мировых координатах и в пикселях
xLeft = -2; xRight = 10; yBottom = -2; yTop = 2;
nLeft = 100; nRight = 500; mBottom = 400; mTop = 0;

Grafic_1();

do{
os = getch();
switch(os)
{
case 72:
//перемещение по оси в верх
closegraph();
xLeft; xRight; yBottom ++; yTop ++;
nLeft = 100; nRight = 500; mBottom = 400; mTop = 0;
Ent_Drive();
Grafic_1();
break;

case 80:
//перемещение по оси в низ
closegraph();
xLeft; xRight; yBottom --; yTop --;
nLeft = 100; nRight = 500; mBottom = 400; mTop = 0;
Ent_Drive();
Grafic_1();
break;

case 75:
//перемещение по оси в право
closegraph();
xLeft--; xRight--; yBottom; yTop;
nLeft = 100; nRight = 500; mBottom = 400; mTop = 0;
Ent_Drive();
Grafic_1();
break;

case 77:
//перемещение по оси в лево
closegraph();
xLeft++; xRight++; yBottom; yTop;
nLeft = 100; nRight = 500; mBottom = 400; mTop = 0;
Ent_Drive();
Grafic_1();
break;

case 115:
//Уменьшение окна
closegraph();
xLeft; xRight; yBottom; yTop;
nLeft; nRight--; mBottom--; mTop;
Ent_Drive();
Grafic_1();

break;

case 116:
//Увелечение окна
closegraph();
xLeft; xRight; yBottom; yTop;
nLeft; nRight++; mBottom++; mTop;
Ent_Drive();
Grafic_1();

break;
}
}while(os != 27);

getch();
closegraph();
return 0;

}

/*-------------fyn.cpp файл с функциями-------------------*/
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include <process.h>
#include <math.h>
#include <iostream.h>

//размеры окна вывода в мировой системе координат
double xLeft, xRight, yBottom, yTop;
//размеры окна вывода в пикселях на экране монитора
int nLeft, nRight, mBottom, mTop;
int os, hi;
//переход от координат х к пикселям n
inline int xn(double x)
{
return (x - xLeft) / (xRight - xLeft) * (nRight - nLeft) + nLeft;
}

//переход от координаты y к пикселям m
inline int ym(double y)
{
return (y - yBottom) / (yTop - yBottom) * (mTop - mBottom) + mBottom;
}
void Ent_Drive()
{

int gdriver = DETECT, gmode, errorcode;


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

errorcode = graphresult();

if (errorcode != grOk) /
{
printf("ошибка графики : %s\n", grapherrormsg(errorcode));
printf("нажмите клавишу для выхода:");
getch();
exit(1);
}

}

void Grafic_1()
{

//создаем массив точек для аргумента х и функции y=
const int N = 100;
double corX[N], corY[N];
double x, y, dx = (xRight - xLeft) / ( N - 1 );
for (int i = 0; i < N; i++)
{
x = xLeft + dx * i; y = 3/(1-(2*cos(x)));
corX[i] = x; corY[i] = y;
}



//черный цвет экрана монитора
setbkcolor(0);


//®оформляем поле вывода


setfillstyle( SOLID_FILL, BLUE );
bar (nLeft, mBottom, nRight, mTop);


setfillstyle ( SOLID_LINE, 0);
setcolor (YELLOW);
rectangle (nLeft, mBottom, nRight, mTop);

//рисуем координатные оси

setlinestyle ( SOLID_LINE, 0, 1);
setcolor ( LIGHTCYAN );

int nb, ne, mb, me;
nb = xn ( xLeft ); mb = ym ( 0 );
ne = xn ( xRight ); me = ym ( 0 );
line (nb, mb, ne, me);

nb = xn ( 0 ); mb = ym ( yBottom );
ne = xn ( 0 ); me = ym ( yTop );
line (nb, mb, ne, me);

//* название графика и осей
setcolor (15);
// outtextxy ((nLeft + nRight) / 2 - 0, mTop + 25, "Y = SIN(X)");
outtextxy ( nLeft - 5, (mBottom + mTop) / 2, "Y");
outtextxy ((nLeft + nRight) / 2, mBottom + 25, "X");

//выводим числа вдоль осей
char ss[10];
sprintf (ss, "%6.11f", xLeft);
outtextxy (nLeft - 0, mBottom + 7, ss);
sprintf (ss, "%6.11f", xRight);
outtextxy (nRight - 0, mBottom + 7, ss);
sprintf (ss, "%6.11f", yBottom);
outtextxy (nLeft - 55, mBottom - 7, ss);
sprintf (ss, "%6.11f", yTop);
outtextxy (nLeft - 0, mTop + 1, ss);

//рисуем график по двум массивам
setcolor (12);
nb
= xn ( corX[0] ); mb = ym ( corY[0] );
moveto (nb, mb);
for ( i = 1; i < N; i++)
{
nb = xn ( corX[i] ); mb = ym ( corY[i] );
lineto (nb, mb);
}
}
FOCS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
построение графиков Алёна Microsoft Office Excel 9 27.02.2016 10:00
Построение дерева TzX Компоненты Delphi 2 20.07.2010 15:20
Построение цикла Sensizu Общие вопросы Delphi 3 18.06.2010 15:56
построение кадров Woodyy Паскаль, Turbo Pascal, PascalABC.NET 1 14.06.2010 11:59
Построение To Be Baronesa-07 Помощь студентам 0 17.05.2010 19:28