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

作者: m339606 (mize)   2014-03-29 20:16:49
※ 引述《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;
}
你這個是判斷不重複吧 囧?
作者: APE36 (PT鄉民)   2014-03-29 23:22:00
好像跑出來的結果不一樣 我跑出來是記憶體空間數字~"~不過你的輸出結果是我想要的,感謝!!覺得我是用VS開發環境,不知道有不要嵌入外部函式的方法實作嗎?? 因為我編譯器版本有點舊
作者: m339606 (mize)   2014-03-29 23:26:00
看到你的printf,你不是用C#對吧?可以土法煉鋼不過既然C#本身有更好用的程式碼就用囉
作者: APE36 (PT鄉民)   2014-03-30 18:45:00
厲害,但是有一地方看不太懂 Array_3[i] == Array_3[j]已經給定假如相同後面指定為0 但是//當不為0的時候輸出這裡怎可以輸出正確資料出來0..0!
作者: m339606 (mize)   2014-03-30 19:00:00
假設陣列為 11 22 33 22 44,後面那個22會被我改為0之後輸出的時候判斷Array_3[i] != 0 他就不會再出現了這解法針對不同情況會有些BUG,用集合用太習慣改原始陣列還真的很不習慣

Links booklink

Contact Us: admin [ a t ] ucptt.com