Другие языки программирования и технологии

Помогите построить график функции y=sinx, xЄ[-1;1] с шагом изменения аргумента h =0,1 C++ VisualStudio

Никак не могу это сделать, подскажите хотя бы литературу.
Надо добавить график
вот код с нахождением [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");
}
Проблема в том, что в C++ нет стандартного способа отображения графики. Нестандартных способов довольно много. Если вам дали такую задачу, должны были сказать какую библиотеку использовать.
Sergey Denisenko
Sergey Denisenko
58 065
Лучший ответ
Александр Коротов Тому кто мне дал эту задачу, без разницы, ему нужен результат написанный на языке c++
как вариант можно сгенерировать файл .svg (обычная xml-ка), а потом открыть его в каком-нибудь браузере при помощи CreateProcess или WinExec
Саня Павлов
Саня Павлов
58 313
#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); }

Похожие вопросы