C 的問題。我要計算給出頂點的多邊形的周長和麵積,頂點數目不確定,怎麼寫不確定大小的陣列呢

時間 2021-08-11 17:04:07

1樓:匿名使用者

point vertex[m];這樣寫不對,如果非要用陣列,只能 #define m 200,定義成一個固定的。其實可以使用 point * pvertex =(point *) malloc(m * sizeof(point)); 通過 ++pvertex迴圈遍歷

2樓:匿名使用者

不確定大小的陣列你可以使用vector,簡單。動手能力強一點,自己實現一個,反正本質就是:空間不夠了,重新申請一個更大的空間,複製以前的資料到新空間,釋放以前的空間。

int cap = 3;

t *data = (t *)malloc(sizeof(t)*cap);

if (*n == cap)

當然根據實際情況,可以考慮一些更簡單或者更復雜的方法。

大致看了你的**,只需要將

point vertex[m];

改為point *vertex = new point[m];

就可以了,最後別忘了deletevertex。

3樓:

既然是c++裡遇到這個問題,強烈建議樓主用stl裡的vector , stl是c++的標準模板庫,有絕對的通用性和健壯性,不怕**不相容,vector很好地處理了變長陣列的問題,比很多人手寫的都要高效,時間複雜度上是最優的策略(線性的)。

vector很好用,例如:

#include

struct point ;

int main() ) ;

return 0 ;

} //以下是主要程式,麻煩幫改一下。

#include

#include

using namespace std ;

struct point;

double polygonarea(point pvertex,int m)

int main()

else

lastx=vertex[i].x; //輸入的最後一個頂點

lasty=vertex[i].y;

}dist=distance(beginx,lastx,beginy,lasty); //最後一條邊長

sum+=dist;

cout<<"多邊形的周長為:"<

cout<<"多邊形的面積為:"<

return 0 ;}

4樓:匿名使用者

c和c++裡面分堆和棧,

棧的大小必須是事先指定的, 比如

point vertex[m];

m的大小事先不知道,所以指定不了大小。

出非你事先定義了m的大小

比如#define m 100

或const int m = 100;

所以要在堆上分配空間。

用malloc函式, 或new操作符

point *vertex = (point *)malloc(sizeof(point) * m);

或point *vertex = new point[m];

在堆上分配了資源,在程式退出時, 或程式中不在用到時,一定要記得**。

free(vertex);

或delete vertex;

不然,就回有記憶體洩漏。

5樓:匿名使用者

c++可以用new運算子,c語言裡要用malloc或者calloc函式

int*p=new int[100];

c語言中如何定義大小不確定由執行時確定大小的陣列?

6樓:手機使用者

#include

#include // malloc, freeint main()

free( p ); // 用完記得釋放

return 0;}

c++題目:設計一個函式,當已知三角形的三個頂點座標時,求三角形面積

7樓:

#include

#include

using namespace std;

int main(){

double a[2],b[2],c[2];

cin>>a[0]>>a[1];

cin>>b[0]>>b[1];

cin>>c[0]>>c[1];

double a,b,c,s,s;

a=sqrt( (b[0]-a[0])*(b[0]-a[0])+(b[1]-a[1])*(b[1]-a[1]) );

b=sqrt( (c[0]-b[0])*(c[0]-b[0])+(c[1]-b[1])*(c[1]-b[1]) );

c=sqrt( (c[0]-a[0])*(c[0]-a[0])+(c[1]-a[1])*(c[1]-a[1]) );

s=(a+b+c)/2.0;

s=sqrt(s*(s-a)*(s-b)*(s-c));

cout<

C給出年,月,日計算該日是該年的第幾天

宣告一個變數,其初始值為給出的日的天數int isdays 日 迴圈月份,從1月開始,到給出的月份的前一個月for int i 1 i 月 i 如果月份為2月份,則判斷是否為閏年 else if i 2 其它的月份,如4,6,9,11等,isdays累加30else 最後得到的isdays就是你需要...

簡單的c語言問題,求高手給出答案並解釋

樓主你好。答案是 32768.原因如下 32767在記憶體中以2進位制存放 0111111111111111加一後 1000000000000000 而這正是 32768的補碼。這就是運算元超過了最大能表示的範圍,運算溢位。如果想得到正確結果可以吧a,b改為long型變數。希望對你有幫助。1正數最大...

用C語言寫函式,給出年月日,計算該日是該年的第幾天

地球小使 include int main 儲存閏年和非閏年每一月的天數 printf 輸入年月日 judge year 4 0 year 400 0 year 100 0 判斷年份是不是閏年 是閏年judge就是1 否則就是0for i 0 i sum date judge i sum day 加...