作者conan77420 (小馬非馬)
看板C_and_CPP
標題[問題]兩個排序好的陣列,合併成另一個排序好的陣列
時間Mon Apr 20 10:56:29 2009
#include<iostream.h>
int merge(int nums1[],int length1,int nums2[],int length2)
{
int i,j,k=0;
int result[length1+length2];
for( ;i<length1 && j<length2; ) // 判斷nums1跟nums2中值的大小,小的先
// 擺入result中
{ if(nums1[i]<nums2[j])
{result[k++]=nums1[i++];}
else if(nums1[i]>nums2[j])
{result[k++]=nums2[j++];}
else
{result[k++]=nums1[i++];
result[k++]=nums2[j++];}
} //上述做完有可能將nums1全放入但
// nums2還沒放入所以:
for(int l=i;l<length1;l++) //如果i沒到底則全部放入
{result[k++]=nums1[l];}
for(int m=j;m<length2;m++) //如果j沒到底則全部放入
{result[k++]=nums2[m];}
for(int i=0;i<8;i++) //印出新的array中的值
{
printf("new array:%d",result[i]);
}
}
int main()
{
int nums1[]={1,3,5,6,13}; //定義兩個內部值案小到大排好的
//array
int nums2[]={3,7,13};
merge(nums1,5,nums2,3); //call副程式
system("pause");
======================================================
compile後出現"error: invalid types `int[int]' for array subscript"
編譯器所指出的錯誤我不是很懂他所要表達的意思,
可能是小弟基本觀念哪裡有誤解,請各位指點,謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.130.1
推 SylphWind:宣告的[]內不能是變數 請用malloc或new 04/20 11:00
※ 編輯: conan77420 來自: 61.229.130.1 (04/20 11:02)
→ conan77420:嗯可以了~不過我怎麼聽說宣告時放空白compile會自己去 04/20 11:05
→ conan77420:找,然後知道矩陣的大小是多少0.0 04/20 11:05
推 stonehomelaa:你聽誰說 有這麼神?? 04/20 11:06
→ conan77420:還有,我的答案輸出是怪怪的數字,為什麼不是內容?Q_Q 04/20 11:07
※ 編輯: conan77420 來自: 61.229.130.1 (04/20 11:14)
推 stonehomelaa:喔 我誤解了 你main那樣宣告OK 04/20 11:14
推 littleshan:你的 i 和 j 沒給初值 04/20 11:16
→ littleshan:不要用 iostream.h,用 iostream,不要加 .h 04/20 11:16
→ conan77420:其實我也誤解了,一樓說的是我的result~ 04/20 11:17
→ littleshan:既然用了 iostream 就別再用 printf 04/20 11:17
→ littleshan:若要用 printf 應該先 #include <cstdlib> 04/20 11:17
→ conan77420:可以了~~~謝謝各位^^ 04/20 11:18
→ littleshan: merge() 內印結果時,不應把 result 的大小寫死 04/20 11:18
→ conan77420:嗯嗯,也謝謝l大 04/20 11:23
推 ledia:printf -> cstdio ? ^^: 04/20 11:32
推 littleshan:yeah, 我筆誤了,是 cstdio 而不是 cstdlib 04/20 11:39