Re: [問題] 掃描陣列的問題

看板C_Sharp (C#)作者 (mize)時間11年前 (2014/03/29 20:16), 編輯推噓2(2011)
留言13則, 2人參與, 最新討論串2/3 (看更多)
※ 引述《APE36 (PT鄉民)》之銘言: : int main() : { : int array_a[5]={11,22,33,22,44}; : int array_b[5]={11,22,33,22,44}; : int array_c[5]; : int i,j; : for(i=0;i<5;i++) : { : for(j=0;j<5;j++) : { : if(array_a[i]!=array_b[j]) : { : printf("%d\n",array_a[i]); : break; : } : } : } : return 0; : } : 假如題目我判斷相同的才輸出,但是重複過的不輸出 : 這程式哪裡有需要做判斷呢? : 覺得因該判斷式都已經做完了 : 只不過重複的值 沒做出正確的判斷 int[] Array_1 = { 11, 22, 33, 22, 44 }; int[] Array_2 = { 11, 22, 33, 22, 44 }; List<int> Array_3 = new List<int>(); for (int i = 0; i < Array_1.Length; i++) { if (Array_1[i] == Array_2[i]) //判斷兩個陣列同位置有重複的話丟入 { Array_3.Add(Array_1[i]); } } //然後直接Distinct之後輸出 foreach (int Result in Array_3.Distinct()) { Console.WriteLine(Result); } Console.ReadKey(); 輸出結果 11 22 33 44 剛剛才發現 if(array_a[i]!=array_b[j]) { printf("%d\n",array_a[i]); break; } 你這個是判斷不重複吧 囧? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.224.149.79 ※ 文章網址: http://www.ptt.cc/bbs/C_Sharp/M.1396095418.A.10B.html

03/29 23:22, , 1F
好像跑出來的結果不一樣 我跑出來是記憶體空間數字~"~
03/29 23:22, 1F

03/29 23:22, , 2F
不過你的輸出結果是我想要的,感謝!!
03/29 23:22, 2F

03/29 23:24, , 3F
覺得我是用VS開發環境,不知道有不要嵌入外部函式的方法實作
03/29 23:24, 3F

03/29 23:25, , 4F
嗎?? 因為我編譯器版本有點舊
03/29 23:25, 4F

03/29 23:26, , 5F
看到你的printf,你不是用C#對吧?
03/29 23:26, 5F

03/29 23:27, , 6F
可以土法煉鋼不過既然C#本身有更好用的程式碼就用囉
03/29 23:27, 6F
int[] Array_1 = { 11, 22, 33, 22, 44, 55, 22, 33, 44, 88, 66, 11, 99, 77, 88, 22 }; int[] Array_2 = { 11, 22, 33, 22, 44, 55, 22, 33, 44, 88, 66, 11, 99, 77, 88, 22 }; int[] Array_3 = new int[Array_1.Length]; //比對1跟2相同的會丟入3的相對位置,1跟2不相同的部分3的相對位置會是 0 for (int i = 0; i < Array_1.Length; i++) { if (Array_1[i] == Array_2[i]) { Array_3[i] = Array_1[i]; } } //陣列3自我比較 for (int i = 0; i < Array_3.Length; i++) { for (int j = 0; j < Array_3.Length; j++) { if (i != j) //i == j的時候不可以比較,因為絕對相同 { if (Array_3[i] == Array_3[j]) { Array_3[j] = 0; //當i跟j不相同但是數值相同時將後面那一格指定為0 } } } } for (int i = 0; i < Array_3.Length; i++) { if (Array_3[i] != 0) { //當不為0的時候輸出 Console.WriteLine(Array_3[i]); } } Console.ReadKey(); 輸出結果 11 22 33 44 55 88 66 99 77 ※ 編輯: m339606 來自: 61.224.149.79 (03/29 23:56)

03/30 18:45, , 7F
厲害,但是有一地方看不太懂 Array_3[i] == Array_3[j]
03/30 18:45, 7F

03/30 18:45, , 8F
已經給定假如相同後面指定為0 但是//當不為0的時候輸出這裡
03/30 18:45, 8F

03/30 18:46, , 9F
怎可以輸出正確資料出來0..0!
03/30 18:46, 9F

03/30 19:00, , 10F
假設陣列為 11 22 33 22 44,後面那個22會被我改為0
03/30 19:00, 10F

03/30 19:01, , 11F
之後輸出的時候判斷Array_3[i] != 0 他就不會再出現了
03/30 19:01, 11F

03/30 19:02, , 12F
這解法針對不同情況會有些BUG,用集合用太習慣改原始陣列
03/30 19:02, 12F

03/30 19:02, , 13F
還真的很不習慣
03/30 19:02, 13F
文章代碼(AID): #1JDhcw4B (C_Sharp)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
文章代碼(AID): #1JDhcw4B (C_Sharp)