作者m339606 (mize)
看板C_Sharp
標題Re: [問題] 掃描陣列的問題
時間Sat Mar 29 20:16:49 2014
※ 引述《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://webptt.com/m.aspx?n=bbs/C_Sharp/M.1396095418.A.10B.html
1F:推 APE36:好像跑出來的結果不一樣 我跑出來是記憶體空間數字~"~ 03/29 23:22
2F:→ APE36:不過你的輸出結果是我想要的,感謝!! 03/29 23:22
3F:→ APE36:覺得我是用VS開發環境,不知道有不要嵌入外部函式的方法實作 03/29 23:24
4F:→ APE36:嗎?? 因為我編譯器版本有點舊 03/29 23:25
5F:→ m339606:看到你的printf,你不是用C#對吧? 03/29 23:26
6F:→ m339606:可以土法煉鋼不過既然C#本身有更好用的程式碼就用囉 03/29 23:27
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)
7F:推 APE36:厲害,但是有一地方看不太懂 Array_3[i] == Array_3[j] 03/30 18:45
8F:→ APE36:已經給定假如相同後面指定為0 但是//當不為0的時候輸出這裡 03/30 18:45
9F:→ APE36:怎可以輸出正確資料出來0..0! 03/30 18:46
10F:→ m339606:假設陣列為 11 22 33 22 44,後面那個22會被我改為0 03/30 19:00
11F:→ m339606:之後輸出的時候判斷Array_3[i] != 0 他就不會再出現了 03/30 19:01
12F:→ m339606:這解法針對不同情況會有些BUG,用集合用太習慣改原始陣列 03/30 19:02
13F:→ m339606:還真的很不習慣 03/30 19:02