你要什么圖像 sin 還cos 要不我都給你把!
普陀ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
1、#includestdio.h
#includemath.h
void main()
{
double y;
int i,n;
for(y=1;y=0;y-=0.1)
{n=asin(y)*10;
for(i=1;i=n;i++)
printf(" ");
printf("*");
for(;i=31-n;i++)
printf(" ");
printf("*\n");}
for(y=0;y=1;y+=0.1)
{n=asin(y)*10;
for(i=-1;i=31+n;i++)
printf(" ");
printf("*");
for(;i=62-n;i++)
printf(" ");
printf("*\n");}
}
2、#includestdio.h
#includemath.h
void main()
{
double y;
int x,m;
for(y=1;y=-1;y-=0.1)
{m=acos(y)*10;
for(x=1;xm;x++)
printf(" ");
printf("*");
for(;x62-m;x++)
printf(" ");
printf("*\n");}
}
之后在給你個(gè)連個(gè)圖像相交的把
3、#includestdio.h
#includemath.h
void main()
{
double y;
int n,m,i,j,x,yy;
for(yy=0;yy=20;yy++)
{ y=0.1*yy;
m=acos(1-y)*10;
n=asin(1-y)*10;
i=32+asin(y-1)*10;
j=61-asin(y-1)*10;
for(x=0;x62;x++)
{if((x==n)(x==m)) printf("+");
else if((x==n)||(x==i)||(x==j)) printf("+");
else if((x==m)||(x==62-m)) printf("*");
else printf(" ");}
printf("\n");
}
}
Tc中用initgraph()函數(shù)可以切換到圖形模式,用closegraph()可以從圖形模式切換回字符模式。
initgraph()和closegraph()都是圖形函數(shù),使用圖形函數(shù)必須包括頭文件"graphics.h"。
void far i nitgraph(int far *graphdriver, int far *graphmode,char far *pathtodriver);
graphdriver是指向圖形驅(qū)動(dòng)序號變量的指針,
graphmode是在graphdriver選定后,指向圖形顯示模式序號變量的指針,
pathtodriver表示存放圖形驅(qū)動(dòng)文件的路徑。
圖形驅(qū)動(dòng)序號不同,圖形驅(qū)動(dòng)文件也不同。序號為VGA圖形驅(qū)動(dòng)對應(yīng)"egavga.bgi"這個(gè)圖形驅(qū)動(dòng)文件。
"egavga.bgi"一般在 Tc目錄下
例如:
-------
#include graphics.h
int Drive,Mode=DETECT;
initgraph(Drive,Mode,""); //圖形顯示器、顯示模式、路徑自動(dòng)檢測
運(yùn)行時(shí)需要在當(dāng)前目錄下存在 EGAVGA.BGI文件
在TC\BGI目錄底下
-------
如果編譯后的.exe文件在另外一個(gè)目錄(如編譯后的.exe文件在D:\MyTc 目錄下,而編譯器的程序和.BGI文件在C:\Turboc\bin 目錄下,則需要填上BGI文件的路徑
例如:
initgraph(Drive,Mode,"C:\\Turboc\\bgi");
挺有意思的問題,簡單談一下看法
將你的需求分成兩部分,一是讓程序自行解析用戶輸入的函數(shù)解析式,二是繪制函數(shù)圖像。
首先,關(guān)于第一個(gè)功能,最直接的思路就是字符串解析,按照數(shù)學(xué)知識定義不同的運(yùn)算符號,按照使用習(xí)慣定義常用的變量和常量的符號字母,然后據(jù)此規(guī)則解析輸入的字符串,再根據(jù)解析結(jié)果確定函數(shù)中基本運(yùn)算的次數(shù)及運(yùn)算順序,最后將整個(gè)操作流程以一定形式存儲(chǔ)起來即可。
例如,對于y=log(x^2+x),包含三次基本運(yùn)算,第一步是x^2,第二步是上一步的結(jié)果+x,第三步是上一步的結(jié)果求對數(shù)。注意到log有定義域的限制,這也是要在程序中實(shí)現(xiàn)的。
然后,對于第二個(gè)功能,根據(jù)給定函數(shù)繪制圖像并不難,對于一元和二元函數(shù)來說很容易實(shí)現(xiàn),難點(diǎn)在于多元函數(shù)應(yīng)如何繪制直觀易懂的函數(shù)圖像?不過這一點(diǎn)超出編程語言的范疇了,而且二元函數(shù)可以滿足大部分應(yīng)用場景了。
繪制函數(shù)圖像的程序只需在定義域上按指定的步長求出不同自變量對應(yīng)的函數(shù)值,然后將點(diǎn)連成線,即可繪制出函數(shù)圖像。例如對于logx,定義域?yàn)閤0。假設(shè)步長為0.1,則可求出0.1,0.2,0.3,...,99.9,100.0的函數(shù)值,然后繪制出點(diǎn),再連點(diǎn)成線,即可得到函數(shù)圖像。
另外,這里還有很多細(xì)節(jié)沒有討論,例如輸入數(shù)據(jù)是字符串還是圖像;是否可以用其他方法解析輸入,例如神經(jīng)網(wǎng)絡(luò)。這些就很復(fù)雜了,不再深入。
回答中可能有考慮不周的地方,希望上述內(nèi)容對你有參考意義
是處理2色值問題的程序嗎?
我也有和你一樣的苦衷啊。。。。。。。
呵呵。。
c語言不自帶圖形處理方面的東西。TC特有的頭文件graphics.h,其他編譯環(huán)境都用不了,可移植性是零。而且TC實(shí)在太老,與現(xiàn)在c語言標(biāo)準(zhǔn)差距非常大。基本是無法運(yùn)行現(xiàn)在的代碼。所以不太建議你用它。
非要用純c,可以自己寫函數(shù)調(diào)用Windows?AP和GUI接口。而且需要包含windows.h頭文件。
網(wǎng)上有個(gè)大神用c—free寫的代碼在附件里。
/*
純C通過?Windows?API?編寫的基本?Windows?圖形界面
整理加原創(chuàng),基本上每一句代碼都有注釋
通過?C-Free?3.5編譯
*/
#include?string.h?????????//這個(gè)頭文件在擴(kuò)展名為.c時(shí)是不需要加的
#include?windows.h????????//windows?api必須包含的頭文件
LRESULT?CALLBACK?WndProc(HWND,UINT,WPARAM,LPARAM);??????//窗口函數(shù)的前向聲明
//參數(shù)說明:
//HINSTANCE?hInstance???當(dāng)前實(shí)例句柄
//HINSTANCE?hPrevInstance???以前版本的遺留產(chǎn)物,現(xiàn)在總是置為?NULL
//LPSTR?lpCmdLine???????命令行的產(chǎn)生,可以從開始-獲得程序運(yùn)行的參數(shù),由此傳入
//int?nCmdShow??????程序最初的顯示模式,正常,最大化或最小化
//主函數(shù)的入口是WinMain,?類型為int
//WINAPI標(biāo)志是一種特定的調(diào)用,?它定義了一種生成機(jī)器代碼和放置函數(shù)參數(shù)的方式
int?WINAPI?WinMain(HINSTANCE?hInstance,HINSTANCE?hPrevInstance,LPSTR?lpcmdLine,int?nCmdShow)
{
//TCHAR,?TEXT都是統(tǒng)一單字節(jié)和雙字節(jié)字符的類型,?建議使用
static?TCHAR?szAppName[]?=?TEXT("MyFirstWindows");
static?TCHAR?szClassName[]?=?TEXT("MFWClass");
HWND?hwnd;???????//一定一個(gè)窗口句柄
MSG?msg;????????//定義一個(gè)消息結(jié)構(gòu)體
WNDCLASS?wndclass;??????//定義一個(gè)?WNDCLASS?結(jié)構(gòu)用于注冊窗口
wndclass.style?=?CS_HREDRAW?|?CS_VREDRAW;???????//窗口類的類風(fēng)格,每當(dāng)水平和垂直大小改變時(shí)完全刷新窗口
wndclass.lpfnWndProc?=?WndProc;?????//此窗口類所使用的窗口函數(shù)的入口地址
wndclass.cbClsExtra?=?0;????????//用于在類結(jié)構(gòu)中預(yù)留一些額外的空間
wndclass.cbWndExtra?=?0;????????//用于在windows內(nèi)部保存的窗口結(jié)構(gòu)中預(yù)留一些額外的空間
wndclass.hInstance?=?hInstance;?????//指定所在程序的實(shí)例句柄
wndclass.hIcon?=?LoadIcon(NULL,IDI_APPLICATION);????????//定制圖標(biāo)
wndclass.hCursor?=?LoadCursor(NULL,IDC_ARROW);??????//定制鼠標(biāo)圖形
wndclass.hbrBackground?=?(HBRUSH)GetStockObject(GRAY_BRUSH);????????//定義背景顏色
wndclass.lpszMenuName?=?NULL;???????//指定窗口類的菜單
wndclass.lpszClassName?=szClassName;????????//指定窗口類的類名
//注冊窗口,參數(shù)為指向?WNDCLASS?結(jié)構(gòu)的指針
//如果注冊不成功,則彈出一個(gè)對話框說明情況
//MessageBox是僅有的可以在舊版本和新版本windows都可以運(yùn)行的對話框
if(!RegisterClass(wndclass))
{
MessageBox(NULL,TEXT("This?program?requires?Windows?NT?or?above!"),szAppName,MB_ICONERROR);
return?0;
}
//創(chuàng)建窗口
hwnd?=?CreateWindow(
szClassName,????????//窗口類的名稱
TEXT("Title:My?First?Windows?Program.?這里是標(biāo)題"),?????//窗口標(biāo)題
//WS_OVERLAPPEDWINDOW,???//窗口顯示風(fēng)格,這行實(shí)際是一個(gè)預(yù)定義,相當(dāng)于下面的集合,可以單獨(dú)設(shè)置
WS_OVERLAPPED?|?WS_CAPTION?|?WS_SYSMENU?|?WS_THICKFRAME?|?WS_MINIMIZEBOX?|?WS_MAXIMIZEBOX,
CW_USEDEFAULT,??????//初始?x?方向的位置
CW_USEDEFAULT,??????//初始?y?方向的位置
CW_USEDEFAULT,??????//初始?x?方向的大小
CW_USEDEFAULT,??????//初始?y?方向的大小
NULL,???????//父窗口句柄
NULL,???????//菜單句柄
hInstance,??????//程序?qū)嵗浔?/p>
NULL????);??????//創(chuàng)建參數(shù)
//顯示窗口,第一個(gè)參數(shù)?hwnd?是?CreateWindow?所創(chuàng)建的窗口的句柄
//第二個(gè)參數(shù)?nCmdShow?是主函數(shù)給的,由快捷方式獲得
ShowWindow(hwnd,nCmdShow);
//刷新窗口,給窗口函數(shù),在本程序中即?WndProc?發(fā)送一個(gè)?WM_PAINT
UpdateWindow(hwnd);
//消息循環(huán)
while(GetMessage(msg,NULL,0,0))????????//接受自己創(chuàng)建的所有窗口的所有消息
{
TranslateMessage(msg);?????//將?msg?結(jié)構(gòu)體傳給windows以進(jìn)行一些鍵盤轉(zhuǎn)換,?即將擊鍵消息轉(zhuǎn)換為字符消息
DispatchMessage(msg);??????//再次將?msg?結(jié)構(gòu)體傳給windows,由windows將該消息發(fā)送給適當(dāng)?shù)拇翱诤瘮?shù)
}
return?(int)msg.wParam;
}
//窗口函數(shù)
//參數(shù)說明:
//HWND?hwnd,?接受消息的窗口句柄,由CreateWindow函數(shù)返回
//UINT?message,?消息標(biāo)志符,用以標(biāo)識消息,每個(gè)消息均有一個(gè)唯一對應(yīng)的消息標(biāo)識符
//WPARAM?wParam,?是?WORD?PARAM?的意思,一個(gè)32位的消息參數(shù),其含義和數(shù)值根據(jù)消息的不同而不同
//LPARAM?lParam,?是?LONG?PARAM?的意思,一個(gè)32位的消息參數(shù),其值和消息有關(guān)
//CALLBACK函數(shù)指由程序員定義,編程實(shí)現(xiàn),而由windows系統(tǒng)調(diào)用的函數(shù)
LRESULT?CALLBACK?WndProc(HWND?hwnd,UINT?message,WPARAM?wParam,LPARAM?lParam)
{
HDC?hdc;????????//定義一個(gè)設(shè)備描述表句柄結(jié)構(gòu)體
//定義一個(gè)?PAINTSTRUCT?的繪制信息結(jié)構(gòu)體,
//其包含了包含了當(dāng)前無效矩形區(qū)域的坐標(biāo)和其他信息,用于刷新用戶區(qū)的內(nèi)容
PAINTSTRUCT?ps;
RECT?rect;??????//定義一個(gè)?RECT?結(jié)構(gòu)體,其有l(wèi)eft,top,right,bottom?四個(gè)域
//處理傳進(jìn)的各種消息
switch(message)
{
//窗口創(chuàng)建
case?WM_CREATE:?MessageBox(NULL,"MessageContent?:?This?is?WM_CREATE,這是?WM_CREATE。",
"MessageTiTle?這是對話框的標(biāo)題",MB_OK);
return?0;
//窗口繪制
case?WM_PAINT:??hdc?=?BeginPaint(hwnd,ps);?????//由BeginPaint開始,返回設(shè)備描述表以開始繪圖
GetClientRect(hwnd,rect);??????//獲取用戶區(qū)域的大小
//格式話文本輸出
DrawText(hdc,TEXT("WindowsContent?:?I?am?a?developer.?我為計(jì)算機(jī)而生。"),
-1,rect,DT_SINGLELINE?|?DT_CENTER?|?DT_VCENTER);
EndPaint(hwnd,ps);?????//以EndPaint結(jié)束,釋放設(shè)備描述表句柄
return?0;
//窗口消亡
case?WM_DESTROY:?MessageBox(NULL,"MessageContent?:?This?is?WM_DESTROY,這是?WM_DESTROY。",
"MessageTiTle?這是對話框的標(biāo)題",MB_OK);
PostQuitMessage(0);
return?0;
}
//凡是窗口函數(shù)不予處理的消息應(yīng)交由windows默認(rèn)消息處理函數(shù)DefWindowProc處理
return?DefWindowProc(hwnd,message,wParam,lParam);
}
我畫了半個(gè)正弦函數(shù),其余的你可以照著畫,歡迎討論,
#include "stdio.h"
#include "conio.h"
#include "math.h"
#include "graphics.h"
void main()
{
int driver,mode,i;
driver=DETECT;
mode=0;
initgraph(driver,mode,"");
setcolor(15);
for(i=0;i360;i++)
line(i,200*sin(i*3.14/360),i+1,200*sin((i+1)*3.14/360));
getch();
restorecrtmode();
}
當(dāng)前題目:用c語言實(shí)現(xiàn)函數(shù)圖像處理 基于c語言的圖像處理
文章路徑:http://m.kartarina.com/article48/hjjdhp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、外貿(mào)建站、ChatGPT、電子商務(wù)、關(guān)鍵詞優(yōu)化、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)