刪除陣列中的指定數字

2022-03-12 10:41:58 字數 1325 閱讀 1423

編寫乙個函式void fun ( int bb[ ], int *n, int y ),其中*n表示bb陣列中元素的個數。 函式功能:刪除bb中所有值為y元素,bb陣列元素的值和y的值由主函式通過鍵盤讀入。

作者的源**是這樣的:

1

void fun ( int bb[ ], int *n, int y )

2 11 ****************************以上**********************************

12 }

也沒想他到底**錯了,估計是陣列什麼的越界了。。。我發現他的解法每發現乙個y都要移動元素,於是就像寫乙個綜合移動的方法:

先計算每個陣列元素前y出現的次數ycount,然後將該元素移動ycount。

這本來是乙個挺簡單的想法,我覺得也用不了多長時間吧,還能拿到懸賞的190分,況且這也算是練練寫**嘛,嘿嘿。於是從11點開始寫,寫到下午3點了竟然。。。:

1

void fun(int bb, int& n, const

int y)

2 10 p2 = p1;

11 step = 0;

12while (p2 < n)

13

19int oldcount = ycount;

20while(p2 < n && bb[p2] == y)

21

25while (step > 0)

26

31//

step = 0

32 }

33 n -= ycount;

34 }

這段**,看起來應該挺規範,恩,起碼比起一開始的想法算是簡潔多啦。編碼中遇到的問題主要是一開始用的if條件判定太多了,一開始將p1指定到了發現第乙個y的地方,這樣就又多了幾行**。寫成看了看發現**太「苗條」,像根棍似的,於是就試著改了改。終於改成了現在的3個while判定。這種風格還是從歸併的原始碼中學習的。3個while要想實現**,還需要安排相互之間的順序,移動了半天都沒除錯通過。後來寫了神來一筆: int oldcount = ycount;才終於解決了最後乙個y以後的陣列元素移動跟它以前的陣列元素移動bb[p1] = bb[index]中index需要根據情況取值不同的問題。這個old~什麼的,還是前幾天看vc++難點剖析學會的,沒想到在這個時候用上了,哈哈。

今天編碼通過。發現自己寫**的能力太差了。原來想法跟實現之間差距挺大,怪不得人們都說不編碼的人不能做需求,原來理想跟現實之間的差距還是挺大。唯有以後認真學習寫**,多看標準**來彌補了。 

JS刪除陣列指定元素

為 array.prototype.indexof function val return 1 code from array.prototype.remove function val var emp abs dsf sdf fd emp.remove fd 為 array.prototype.i...

Js 刪除陣列指定元素

在最近的專案中,有用到js對陣列的操作,之前自己幾乎沒有用到這種方法,這裡就記錄一下,算是對學到的東西的一種總結吧。splice 方法向 從陣列中新增 刪除專案,然後返回被刪除的專案。該方法會改變原始陣列。基本語法 arrayobject.splice index,howmany,item1,ite...

PHP 刪除 陣列 指定成員

1.unset刪除某乙個 特定成員 arr 0 0 arr 1 1 arr 2 2 unset arr 1 var dump arr array 2 問題1 1 2 header content type text html charset utf 8 3 set time limit 0 45 f...