Никак не могу это сделать, подскажите хотя бы литературу.
Надо добавить график
вот код с нахождением [x;y]
#include
#include
using namespace std;
int main() {
const auto n = 10;
cout << fixed;
for (auto i = -n; i <= n; ++i) {
auto x = double(i) / n;
auto f = sin(x);
cout
<< "sin("
<< setw(4) << setprecision(1) << x
<< ") = "
<< setw(18) << setprecision(15) << f
<< "\n";
}
system("pause");
}
Другие языки программирования и технологии
Помогите построить график функции y=sinx, xЄ[-1;1] с шагом изменения аргумента h =0,1 C++ VisualStudio
Проблема в том, что в C++ нет стандартного способа отображения графики. Нестандартных способов довольно много. Если вам дали такую задачу, должны были сказать какую библиотеку использовать.
Александр Коротов
Тому кто мне дал эту задачу, без разницы, ему нужен результат написанный на языке c++
как вариант можно сгенерировать файл .svg (обычная xml-ка), а потом открыть его в каком-нибудь браузере при помощи CreateProcess или WinExec
#include iostream
#include windows.h
#include windowsx.h
#include math.h
HINSTANCE hInstance; HINSTANCE hPrevInst;
LPSTR lpszArgs; int nWinMode;
LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM, LPARAM);
int center_x = 200;
int center_y = 200;
int mastab_x = 20;
int mastab_y = 20;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInst,LPSTR lpszArgs, int nWinMode)
{
char szWinName[ ]="MyWindow";
char szTitle[ ]="Программа";
MSG msg;
WNDCLASS wc;
ZeroMemory(&wc,sizeof(wc));
wc.hInstance= hInstance;
wc.lpszClassName=szWinName;
wc.lpfnWndProc=WindowFunc;
wc.style=0;
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=GetStockBrush(WHITE_BRUSH);
wc.lpszMenuName=NULL;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
RegisterClass (&wc);
HWND hwnd = CreateWindow ( szWinName,szTitle,WS_OVERLAPPEDWINDOW,100,100,500,500,HWND_DESKTOP,NULL,hInstance,NULL);
ShowWindow (hwnd, SW_SHOWNORMAL);
while(GetMessage(&msg,NULL,0,0)) DispatchMessage(&msg);
return 0;
}
void DrawCoordinateSystem(HDC hdc, HWND hwnd)
{
int i,j, k, l ;
TextOut(hdc,center_x, center_y, "0", 1);
for(i = 0; i <= 10*mastab_x; i++)
{
SetPixel(hdc, center_x + i, center_y, RGB(0,0,0));
SetPixel(hdc, center_x - i, center_y, RGB(0,0,0));
}
TextOut(hdc,center_x + i, center_y-5, "X", 1);
for(k = 0; k <= 10*mastab_y; k++)
{
SetPixel(hdc, center_x, center_y + k, RGB(0,0,0));
SetPixel(hdc, center_x, center_y - k, RGB(0,0,0));
}
TextOut(hdc,center_x - 5, center_y - k + 5, "Y", 1);
char buf[5];
for(l=0;l<10;l++)
{
sprintf(buf, "%d", l+1);
TextOut(hdc,center_x+3, center_y - mastab_y * ( l + 1 ), buf, 2);
sprintf(buf, "%d", -(l+1));
TextOut(hdc,center_x+3, center_y + mastab_y * ( l + 1 ), buf, 2);
for(i = 0; i <= 10*mastab_x ; i++)
{
SetPixel(hdc, center_x + i, center_y + mastab_y * ( l + 1 ), RGB(64,128,128));
SetPixel(hdc, center_x - i, center_y + mastab_y * ( l + 1 ), RGB(64,128,128));
SetPixel(hdc, center_x + i, center_y - mastab_y * ( l + 1 ), RGB(64,128,128));
SetPixel(hdc, center_x - i, center_y - mastab_y * ( l + 1 ), RGB(64,128,128));
}
}
for(l=0;l<10;l++)
{
sprintf(buf, "%d", l+1);
TextOut(hdc,center_x + mastab_x * ( l + 1 ), center_y+3, buf, 2);
sprintf(buf, "%d", -(l+1));
TextOut(hdc, center_x - mastab_x * ( l + 1 ), center_y+3, buf, 2);
for(i = 0; i <= 10*mastab_y ; i++)
{
SetPixel(hdc, center_x + mastab_x * ( l + 1 ), center_y + i, RGB(64,128,128));
SetPixel(hdc, center_x + mastab_x * ( l + 1 ), center_y - i, RGB(64,128,128));
SetPixel(hdc, center_x - mastab_x * ( l + 1 ), center_y + i, RGB(64,128,128));
SetPixel(hdc, center_x - mastab_x * ( l + 1 ), center_y - i, RGB(64,128,128));
}
}
}
void DrawGraph(HDC hdc, HWND hwnd)
{
float x, y;
for(x = -1; x < 1; x+=0.1)
{
y = sin(x);
SetPixel(hdc, center_x + mastab_x * x, center_y - mastab_y * y, RGB(255,0,0));
}
}
LRESULT CALLBACK WindowFunc(HWND hwnd, UINT message,WPARAM wParam, LPARAM lParam) {
switch(message) {
case WM_DESTROY: PostQuitMessage (0); break;
case WM_PAINT: { HDC hdc = GetDC(hwnd); DrawCoordinateSystem(hdc, hwnd); DrawGraph(hdc, hwnd); ReleaseDC(hwnd, hdc); } break;
default: return DefWindowProc (hwnd,message,wParam,lParam);
}
return 0;
}
int main(void){ WinMain( hInstance, hPrevInst, lpszArgs, nWinMode); }
#include windows.h
#include windowsx.h
#include math.h
HINSTANCE hInstance; HINSTANCE hPrevInst;
LPSTR lpszArgs; int nWinMode;
LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM, LPARAM);
int center_x = 200;
int center_y = 200;
int mastab_x = 20;
int mastab_y = 20;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInst,LPSTR lpszArgs, int nWinMode)
{
char szWinName[ ]="MyWindow";
char szTitle[ ]="Программа";
MSG msg;
WNDCLASS wc;
ZeroMemory(&wc,sizeof(wc));
wc.hInstance= hInstance;
wc.lpszClassName=szWinName;
wc.lpfnWndProc=WindowFunc;
wc.style=0;
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=GetStockBrush(WHITE_BRUSH);
wc.lpszMenuName=NULL;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
RegisterClass (&wc);
HWND hwnd = CreateWindow ( szWinName,szTitle,WS_OVERLAPPEDWINDOW,100,100,500,500,HWND_DESKTOP,NULL,hInstance,NULL);
ShowWindow (hwnd, SW_SHOWNORMAL);
while(GetMessage(&msg,NULL,0,0)) DispatchMessage(&msg);
return 0;
}
void DrawCoordinateSystem(HDC hdc, HWND hwnd)
{
int i,j, k, l ;
TextOut(hdc,center_x, center_y, "0", 1);
for(i = 0; i <= 10*mastab_x; i++)
{
SetPixel(hdc, center_x + i, center_y, RGB(0,0,0));
SetPixel(hdc, center_x - i, center_y, RGB(0,0,0));
}
TextOut(hdc,center_x + i, center_y-5, "X", 1);
for(k = 0; k <= 10*mastab_y; k++)
{
SetPixel(hdc, center_x, center_y + k, RGB(0,0,0));
SetPixel(hdc, center_x, center_y - k, RGB(0,0,0));
}
TextOut(hdc,center_x - 5, center_y - k + 5, "Y", 1);
char buf[5];
for(l=0;l<10;l++)
{
sprintf(buf, "%d", l+1);
TextOut(hdc,center_x+3, center_y - mastab_y * ( l + 1 ), buf, 2);
sprintf(buf, "%d", -(l+1));
TextOut(hdc,center_x+3, center_y + mastab_y * ( l + 1 ), buf, 2);
for(i = 0; i <= 10*mastab_x ; i++)
{
SetPixel(hdc, center_x + i, center_y + mastab_y * ( l + 1 ), RGB(64,128,128));
SetPixel(hdc, center_x - i, center_y + mastab_y * ( l + 1 ), RGB(64,128,128));
SetPixel(hdc, center_x + i, center_y - mastab_y * ( l + 1 ), RGB(64,128,128));
SetPixel(hdc, center_x - i, center_y - mastab_y * ( l + 1 ), RGB(64,128,128));
}
}
for(l=0;l<10;l++)
{
sprintf(buf, "%d", l+1);
TextOut(hdc,center_x + mastab_x * ( l + 1 ), center_y+3, buf, 2);
sprintf(buf, "%d", -(l+1));
TextOut(hdc, center_x - mastab_x * ( l + 1 ), center_y+3, buf, 2);
for(i = 0; i <= 10*mastab_y ; i++)
{
SetPixel(hdc, center_x + mastab_x * ( l + 1 ), center_y + i, RGB(64,128,128));
SetPixel(hdc, center_x + mastab_x * ( l + 1 ), center_y - i, RGB(64,128,128));
SetPixel(hdc, center_x - mastab_x * ( l + 1 ), center_y + i, RGB(64,128,128));
SetPixel(hdc, center_x - mastab_x * ( l + 1 ), center_y - i, RGB(64,128,128));
}
}
}
void DrawGraph(HDC hdc, HWND hwnd)
{
float x, y;
for(x = -1; x < 1; x+=0.1)
{
y = sin(x);
SetPixel(hdc, center_x + mastab_x * x, center_y - mastab_y * y, RGB(255,0,0));
}
}
LRESULT CALLBACK WindowFunc(HWND hwnd, UINT message,WPARAM wParam, LPARAM lParam) {
switch(message) {
case WM_DESTROY: PostQuitMessage (0); break;
case WM_PAINT: { HDC hdc = GetDC(hwnd); DrawCoordinateSystem(hdc, hwnd); DrawGraph(hdc, hwnd); ReleaseDC(hwnd, hdc); } break;
default: return DefWindowProc (hwnd,message,wParam,lParam);
}
return 0;
}
int main(void){ WinMain( hInstance, hPrevInst, lpszArgs, nWinMode); }
Похожие вопросы
- Помогите нарисовать график функции Y=3x+6x(в квадрате). в delphi
- помогите решить на паскале 3. Вычислить значение функции tg(x)/x2 на интервале от *-5, 5] c шагом h = 0.1.
- Вычислить значение функции y=sinx – cosAX + B, где Х изменяется от 1 до 10, А от 10 до 1, В=2, шаг равен 3. Составить
- Необходимо составить прграму табулирования двух фукций s и y в заданном диапазоне изменения аргумента x
- Калибровка монитора RGB. Должны ли отличаться зрительно в Corel DRAW между собой цвета R-0 G-0 B-0 и C-0 M-0 Y-0 K-100?
- Помогите, нужно построить график y= sin(x) в делфи без использования Tchart. Срочно! Срочно!
- Помогите написать на ассемблере програму для вычисления виражения y=(c-(d/2)+33 )/(2*a*a-1). c=5,d=6,a=3.
- Дано n строк по 3 элемента (1 и 0), найти сколько строк имеет больше чем один знак 1. C++
- Работу программы проверить для a = 0,1; b = 1,0; h = 0,1; значение параметра n выбрать в зависимости от задания. Pascal
- Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x)