編寫乙個函式void fun ( int bb[ ], int *n, int y ),其中*n表示bb陣列中元素的個數。 函式功能:刪除bb中所有值為y元素,bb陣列元素的值和y的值由主函式通過鍵盤讀入。
作者的源**是這樣的:
1void fun ( int bb[ ], int *n, int y )
2 11 ****************************以上**********************************
12 }
也沒想他到底**錯了,估計是陣列什麼的越界了。。。我發現他的解法每發現乙個y都要移動元素,於是就像寫乙個綜合移動的方法:
先計算每個陣列元素前y出現的次數ycount,然後將該元素移動ycount。
這本來是乙個挺簡單的想法,我覺得也用不了多長時間吧,還能拿到懸賞的190分,況且這也算是練練寫**嘛,嘿嘿。於是從11點開始寫,寫到下午3點了竟然。。。:
1void 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...