當前位置:首頁 » 編程語言 » c語言平曲線

c語言平曲線

發布時間: 2023-01-02 14:24:04

A. c語言編程 繪制曲線,會的來

TC下調試通過

/*******************************************************
*Author :Wacs5
*Date :20090105(YYYY-MM-DD)
*Function :畫簡易的曲線圖 *********************************************************/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <Graphics.h>

#define n 8

int main()
{
int i,j;
float data[]={7,3,12,6,9,5,8,11};
char str[40];

int gdrive=DETECT,gmode,errorcode;
int maxx,maxy;
int perx,pery;
int x0,x1,y0,y1;
int coloraxis=2,colorline=3;
float mindata,maxdata,ndata;

initgraph(&gdrive,&gmode,""); /*初始化設備*/
if ((errorcode=graphresult())!=grOk) /*查錯*/
{
printf("Graphics error:%s\nPress any key to exit:",grapherrormsg(errorcode));
getch();
exit(1);
}
maxx=getmaxx();
maxy=getmaxy();
mindata=maxdata=data[0];
for (i=1;i<n;i++)
{
if (mindata>data[i])
mindata=data[i];
if (maxdata<data[i])
maxdata=data[i];
}
mindata=floor(mindata);
maxdata=ceil(maxdata);

perx=maxx/(n+4);
pery=maxy/(maxdata-mindata+4);
x0=2*perx;
y0=maxy-2*pery;

x1=maxx-2*perx;
y1=2*pery;
setcolor(coloraxis);
line(x0,y0,x1,y0);
line(x0,y0,x0,y1);

line(x1,y0,x1-4,y0+3);
line(x1,y0,x1-4,y0-3);
line(x0,y1,x0+3,y1+4);
line(x0,y1,x0-3,y1+4);

settextjustify(CENTER_TEXT,TOP_TEXT);
for (i=0;i<n;i+=n/3)
{
j=x0+i*perx;
line(j,y0,j,y0+2); /*刻度線*/
sprintf(str,"%d",i);
outtextxy(j,y0+4,str);
}

settextjustify(RIGHT_TEXT,CENTER_TEXT);
for (i=(maxdata-mindata)/3;i<=maxdata-mindata;i+=(maxdata-mindata)/3)
{
j=y0-i*pery;
line(x0,j,x0-2,j); /*刻度線*/
sprintf(str,"%d",(int)mindata+i);
outtextxy(x0-4,j,str);
}

setcolor(colorline);
x1=x0+perx;
y1=y0-(data[0]-mindata)*pery;
circle(x1,y1,2);
moveto(x1,y1);
i=1;
do
{
x1+=perx;
y1=y0-(data[i]-mindata)*pery;
lineto(x1,y1);
circle(x1,y1,2);
moveto(x1,y1);
i++;
}while(i<n);

getch();
closegraph();
return 0;
}

B. 用C語言繪制曲線

樓上的觀珠仔很久不見啦(挺掛念那段時光的)!想不到路過此地看到你,這是高科技呀?你還這么老班牙啊,大考小考把你弄糊塗了,高考順利呀!別忘了我這位老兄了,C語言略懂 ~~~~~~傑
1.繪制餘弦曲線
*程序說明與注釋
#include<stdio.h>
#include<math.h>
void main()
{
double y;
int x,m;
for(y=1;y>=-1;y-=0.1) /*y為列方向,值從1到-1,步長為0.1*/
{
m=acos(y)*10; /*計算出y對應的弧度m,乘以10為圖形放大倍數*/
for(x=1;x<m;x++) printf(" ");
printf("*"); /*控制列印左側的 * 號*/
for(;x<62-m;x++)printf(" ");
printf("*\n"); /*控制列印同一行中對稱的右側*號*/
}
}
*運行結果

2.繪制正弦曲線

在屏幕上用「*」顯示0-360度的餘弦函數sin(x)曲線。
1.

/**//*
sin() line.
62 of line width
*/

#include <stdio.h>
#include <math.h>

int main(void)
...{
int j ,k,d,h;
double i ;

for(i=1.0 ; i> 0.0; i-=0.1)
...{
k = (int)(asin(i)*10) ;

for(j=0; j< k ; j++) /**//*print the left */
printf(\" \");
printf(\"*\");
for( ; j< 31-k ; j++)
printf(\" \");

C. C語言曲線擬合原理

雖然我知道什麼是曲線擬合,怎麼做,但是我不清楚你問題的具體內容,
從chuaike24的回答
「請高手 說實話 我是菜鳥 但你的程序感覺好凌亂 好多地方可以精簡說最明顯的問題 power函數返回值無論怎樣都返回0 」來看,我可能是沒看到你的程序,所以信息不全。
我只回答什麼是曲線擬合
曲線擬合,簡單來說,是指以近似的方法用一條曲線逼近一組數據點。
逼近的方法最常用的事最小二乘法,當然也有其他方法。
逼近的曲線可以是直線,也可以是多項式曲線,二次,三次,多次,也可以是分段多項式曲線,也可以是B樣條曲線。在這里,如果不需要深入研究,你只要把B樣條曲線理解為一種近似於分段多項式曲線即可。
你問的不多,這些對你的回答已經足夠,需要深入了解再問

D. 採用c語言繪制任意函數曲線(雙曲線,二次函數,一次函數)怎麼做

在c的標准庫中有graphic.h頭文件,實現了很多畫圖函數 比如 lineto, moveto, arc,(函數名可能記錯,好久沒用了-.-!)
直線:起點加終點就行。
二次曲線,比如拋物線,那就以定長拆分成小直線。雙曲線同理。
拋物線,和雙曲線用定長拆分,估計很難計算。要是精度要求不高就根據情況改成定x,或者定y偏移的拆分,要是精度要求高那就去找直線擬合曲線的演算法或者雙圓弧擬合曲線的演算法。

E. C語言繪制而次函數曲線~~高手請進~~~!!!

我又試了一下 還是可以運行,輸入a,b,c 也可以的 。 運行後,屏幕左上角不是有三個值輸入輸出的顯示嗎

你所說的「無法輸入a b c的值」能不能說的再具體一些。

#include<graphics.h>

#define BKC 9
#define COLOR 8 /* 拋物線顏色*/

main()
{int gd=DETECT,gm,p=1,i;
double a,b,c,x,y,x1,y1,t;
char ch;
initgraph(&gd,&gm,"");

while(p==1) /*主循環體*/
{
setbkcolor(BKC);
setcolor(14);
setlinestyle(0,0,1);
rectangle(0,0,639,479); /*畫邊框*/
line(20,460,639,460); /*畫橫坐標*/
line(20,0,20,460); /*畫縱坐標*/
/* outtextxy(8,467,"-180");*/
setlinestyle(1,0,1);
setcolor(15);
for(i=20;i<640;i+=20)line(i,460,i,0);
for(i=460;i>0;i-=20)line(20,i,640,i);
setcolor(12);
setlinestyle(SOLID_LINE,0,3);
line(300,460,300,0);
line(0,360,640,360);
setcolor(15);
gotoxy(1,1);
printf("Please Enter a:" );
scanf("%lf",&a);
printf("Please Enter b:" );
scanf("%lf",&b);
printf("Please Enter c:" );
scanf("%lf",&c);

gotoxy(300,440);
printf("y= %5.2f *x^2 + %5.2f *x + %5.2f ",a,b,c);

setlinestyle(SOLID_LINE,0,1);
moveto(200,460-(a*(0-100)*(0-100)+b*(0-100)+c+100));
for(t=0.0;;t+=0.0002)
{
x=t+200;
y=a*(t-100)*(t-100)+b*(t-100)+c+100;
x1=x; /*畫筆定位在用戶坐標原點 (200,460) */
y1=460-y;
if(x1>640.0||x1<0||x>640) break;
if(y1<=480.0 &&y<=480) lineto(x1,y1);
}
setcolor(12);
outtextxy(250,8,"Finished! Continue(Y/N)?");
p=-1;
while(p==-1)
{
ch=getch();
if(ch=='y'||ch=='Y') { cleardevice();p=1;}
else if(ch=='n'||ch=='N') p=0;
else outtextxy(220,200,"ERROR! Please Press 'Y' or 'N'_" );
}
}
closegraph();
}

F. 怎麼用C語言把一個函數的曲線畫出來

c語言中表達n次方可以用pow函數。
函數原型:double
pow(double
x,
double
y)

能:計算x^y的值


值:計算結果
舉例:
double
a;a
=
pow(3.14,
2);
//
計算3.14的平方,並將結果保存在變數a中
註:使用pow函數必須將頭文件#include包含進源文件中

G. 請教:如何用c語言畫曲線

最簡單的辦法是對區域均勻劃分,計算各點的函數值,然後把這些點用直線連接起來。例如,下面是繪制正弦曲線:
moveto(0, 100);
for (i=0; i<=100;i++)
lineto(i, 100 + 100 *sin(M_PI * 2/100.0*i));

但是用直線連接起來不夠平滑,也有一些插值方法進行改進。比如採用不等間隔劃分區域,或把曲線使用一段段的二次、三次曲線連接起來。你可以參考清華大學出版社出版的《C語言常用演算法程序集》

H. C語言線性曲線擬合

可以直接在線進行擬合,下面是地址(已驗證)
http://3.14159.biz/math/Fit.html
建議你直接對數據用Matlab的cftool擬合(可以自由的自定義擬合函數形式)

I. 求教:用C語言怎麼實現實時曲線

可以利用 GLUT 程序包 (OpenGL 功能) 動態繪圖,例如,一邊實時采樣,一邊顯示。
簡單的實時曲線可以用 固定 坐標,x 時間軸,y1, y2, ..yn 為實時量,例如 溫度,壓力,速度..., 用 沿 x 移動的 一根垂線, 表示當前時間分界點,左邊的已更新,但垂線移動到x 最右端時,更新 x 坐標刻度,垂線 在從 最左端開始,繪制 新的時段數值。
另一種方法是 固定 x 軸 總時段長度,但是不斷更新 x 軸 刻度 和 yi 數據,使整段曲線看上去 是 從右向左 光滑移動動。
參數設置,顯示,采樣控制等,都 可以在屏幕上用按鈕,Text 等 實現。
直接用 OpenGL 則需 用 c++ 程序,MFC + OpenGL 之類 實現。

J. 用C語言平滑曲線中的突起

b[y-2] b[y-1] b[y] b[y+1] b[y+2]
if(b[y]相比b[y-1]與b[y+1]的平均值差的太大)
{
if(b[y]相比b[y-2]與b[y+2]的平均值差的太大)
{
if(b[y]相比b[y-3]與b[y+3]的平均值差的太大)
去掉b[y];
}
}
前提是前3個數不是奇點;而且不會連續出現3個奇點;則第4個數開始可以把奇點去掉;

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:585
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:881
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:574
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:761
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:678
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1005
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:251
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:108
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:799
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:705