Построение графика функции в пределах прямоугольника - C (СИ)
Формулировка задачи:
Помогите с графиком функции.Проблема в том, что надо его уместить в рамку(я задал ее rectangle(x,y,d,v) )и висчитать умножитель, чтоб график уместился в нее. По координате Y проблем ето не составило, а по Х не знаю, как найти етот умножитель.Надеюсь ктота покопирсается в моем коде и чем то поможет))))
#include <graphics.h>
#include<bios.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define n 300
void func(float a[])
{
float x,y;
int i;
for(x=0,i=0;i<n;x+=0.1,i++)
{
a[i]=sin(x);
}
}
void graph(int x,int y,int d,int v,float data[]){
int h,q;float max;
setcolor(1);
rectangle(x,y,d,v);
line(d,(y+v)/2,d,(y+v)/2);
setcolor(2);circle(d,y,2);
max=0;
for(h=0;h<n;h++)
if (max<data[h])
max=data[h];
moveto(x,(y+v)/2);
for(h=0,q=0;h<=n;h++,q+=2)
lineto(x+q,(y+v)/2+(y-v)/2/max*data[h]);
}
void main(void)
{
float b[n];
float i;int h,m=100;
clrscr();
int drv=DETECT,mode;
initgraph(&drv,&mode,"D:\\TurboC\\BGI");
func(b);
graph(50,100,500,400,b);
getch();
closegraph();
}Решение задачи: «Построение графика функции в пределах прямоугольника»
textual
Листинг программы
#define n 300
void func(float a[], int d)
{
float x,y;
int i;
for(x=0,i=0;i<n;x+=d/n,i++)
{
a[i]=sin(x);
}
}
Объяснение кода листинга программы
В данном коде выполняется следующая последовательность действий:
- Задается значение переменной
n, которая определяет количество точек, которые будут отображены на графике (обычно это 300). - Функция
funcпринимает два аргумента: массивaи значениеd. - Внутри функции объявляются две переменные:
xиy, которые будут использоваться для хранения текущих значений координат на графике. - Также внутри функции объявляется переменная
i, которая будет использоваться в качестве счетчика для прохода по всем точкам на графике. - Далее начинается цикл
for, который выполняет следующие действия:- При каждой итерации цикла переменная
xувеличивается на значениеd/n, гдеd- это шаг изменения координат (например, 1/300 для построения графика синусоиды). - Переменная
iувеличивается на единицу.
- При каждой итерации цикла переменная
- Внутри цикла значение переменной
xиспользуется для вычисления значения функцииsinи сохранения результата в соответствующем элементе массиваa. - После завершения цикла все значения функций будут сохранены в массиве
aи могут быть использованы для отображения графика. Таким образом, данный код выполняет построение графика функции, используя массив для хранения значений функции на разных точках и цикл для прохода по всем точкам и вычисления значений функции.