Ⅰ C語言編程:怎麼讓編寫的程序理解用戶給出的函數解析式,並繪制出相應的函數圖像
挺有意思的問題,簡單談一下看法
將你的需求分成兩部分,一是讓程序自行解析用戶輸入的函數解析式,二是繪制函數圖像。
首先,關於第一個功能,最直接的思路就是字元串解析,按照數學知識定義不同的運算符號,按照使用習慣定義常用的變數和常量的符號字母,然後據此規則解析輸入的字元串,再根據解析結果確定函數中基本運算的次數及運算順序,最後將整個操作流程以一定形式存儲起來即可。
例如,對於y=log(x^2+x),包含三次基本運算,第一步是x^2,第二步是上一步的結果+x,第三步是上一步的結果求對數。注意到log有定義域的限制,這也是要在程序中實現的。
然後,對於第二個功能,根據給定函數繪制圖像並不難,對於一元和二元函數來說很容易實現,難點在於多元函數應如何繪制直觀易懂的函數圖像?不過這一點超出編程語言的范疇了,而且二元函數可以滿足大部分應用場景了。
繪制函數圖像的程序只需在定義域上按指定的步長求出不同自變數對應的函數值,然後將點連成線,即可繪制出函數圖像。例如對於logx,定義域為x>0。假設步長為0.1,則可求出0.1,0.2,0.3,...,99.9,100.0的函數值,然後繪制出點,再連點成線,即可得到函數圖像。
另外,這里還有很多細節沒有討論,例如輸入數據是字元串還是圖像;是否可以用其他方法解析輸入,例如神經網路。這些就很復雜了,不再深入。
回答中可能有考慮不周的地方,希望上述內容對你有參考意義
Ⅱ 怎麼用codeblocks編寫c語言的圖形程序
在codeblocks中,可以通過集成EGE庫,來實現C語言圖形程序的編寫,具體方式如下:
一、安裝:
1、下載ege安裝包;
2、將安裝包解壓;
3、把壓縮包里include目錄下所有文件,復制到編譯器安裝目錄下的include目錄內,例如D:MinGWinclude;
4、把lib目錄下對應編譯器名目錄下的文件,復制到編譯器安裝目錄下的lib目錄內,例如D:MinGWlib。
二、建立工程:
只要第1步做好以後,其實已經安裝好ege了,剩下的只是配置build option.
點擊file-new-projects,選擇Console application:
Ⅲ c語言編程一個畫圖軟體(畫板)該如何編寫求大佬幫助,謝謝。
C語言中提供了庫函數來畫圓,函數名為circle
函數的頭文件為 #include<graphics.h>
函數功能: circle()使用當前繪圖色並以實線畫一個完整的圓。
用法:該函數調用方式為void circle(int x,int y,int radius);
說明:參數x,y為圓心坐標,radius為圓半徑,用像素個素表示。注意,調用circle()函數畫圓時不用當前線型。
Ⅳ C語言如何畫圖
framebuffer(幀緩沖)。
幀的最低數量為24(人肉眼可見)(低於24則感覺到畫面不流暢)。
顯卡與幀的關系:由cpu調節其數據傳輸速率來輸出其三基色的配比。
三基色:RGB(紅綠藍)。
在沒有桌面和圖形文件的系統界面,可以通過C語言的編程來實現在黑色背景上畫圖!
用下面的代碼,在需要的地方(有注釋)適當修改,就能畫出自己喜歡的圖形!
PS:同樣要編譯運行後才能出效果。
#include <stdio.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <stdlib.h>
#define RGB888(r,g,b) ((r & 0xff) <<16 | (g & 0xff) << 8 | (b & 0xff))
#define RGB565(r,g,b) ((r & 0x1f) <<11 | (g & 0x3f) << 5 | (b & 0x1f))
int main()
{
int fd = open("/dev/fb0", O_RDWR);
if(fd < 0){
perror("open err. ");
exit(EXIT_FAILURE);
printf("xres: %d ", info.xres);
printf("yres: %d ", info.yres);
printf("bits_per_pixel: %d ", info.bits_per_pixel);
size_t len = info.xres*info.yres*info.bits_per_pixel >> 3;
unsigned long* addr = NULL;
addr = mmap(NULL, len, PROT_WRITE|PROT_READ, MAP_SHARED, fd, 0);
if(addr == (void*)-1){
perror("mmap err. ");