全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1308
推到 Plurk!
推到 Facebook!

關於二維陣列讀取及判斷問題

尚未結案
dragonliu01
一般會員


發表:19
回覆:16
積分:7
註冊:2004-12-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-03 21:44:00 IP:134.208.xxx.xxx 未訂閱
題目為讀取一個二維陣列,並印出其最大值與最小值, 以下是我所寫的程式,不過跑出來時最大最小值卻經常錯誤... 我想出錯的地方應該是找最大最小值的地方,不過實在不知道哪裡有錯... 如果有更好的提議,希望各位大大能告知在下
#include
using namespace std;
int sizeDimension1;    void FindMaxMin(int a[][10],int number)
{ 
        int max,min,count1=0,count2=0;
    for( int index1=0;index1max)
                max=a[index1][index2];
              if(a[index1][index2]>number; 
    (number==0)?sizeDimension1=(number/10):sizeDimension1=(number/10  1); //決定行數 
    int array[sizeDimension1][10];
    for( i=0;i>array[i][j];
                count1  ;
                    if((count1 count2)==number)   //決定陣列大小 ,到達大小即結束 
                        break; 
           }
                if((count1 count2)==number)     //決定陣列大小
                        break;
                count2  ; 
       }
    FindMaxMin(array,number); 
    system("pause");
    return 0;
}
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-03 22:33:32 IP:221.169.xxx.xxx 未訂閱
你是用哪家的編譯器,sizeDimension1不是常數 這一行根本沒法編譯: int array[sizeDimension1][10];    另外,從console讀取使用者輸入資料的迴圈程式中 count1跟count2都不會有回到0的情況,會一直累加下去 跟你在FindMaxMin函式讀取陣列資料的方式不同 還有一個問題是               max=a[0][0],min=a[0][0]; 放在迴圈內,會使得每次測試max跟min之前,max跟min都會被設定為a[0][0]    下面是修改後的程式,加了一些除錯的資訊,看看程式是不是如你預期的方式在執行
#include
#include
using namespace std;
#define sizeDimension1 5    void FindMaxMin(int a[][10],int number)
{ 
        int max,min,count1=0,count2=0;
        ostringstream output;
              max=a[0][0],min=a[0][0];
    for( int index1=0;index1>number; 
    //(number==0)?sizeDimension1=(number/10):sizeDimension1=(number/10  1); //決定行數 
    int array[sizeDimension1][10];
    for( i=0;i>array[i][j];
              output << "array[" << i << "][" << j << "]=" << array[i][j] << endl;
                count1  ;
                    if((count1 count2)==number)   //決定陣列大小 ,到達大小即結束 
                        break; 
           }
                if((count1 count2)==number)     //決定陣列大小
                        break;
                count2  ; 
       }
    cout << output.str() << endl;
    FindMaxMin(array,number); 
    system("pause");
    return 0;
}
至於怎麼依據使用者輸入的數量來設定陣列大小.. 麻煩用"二維陣列"關鍵字搜尋一下就有了 發表人 - justdo 於 2005/05/03 22:43:27
dragonliu01
一般會員


發表:19
回覆:16
積分:7
註冊:2004-12-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-04 01:38:03 IP:134.208.xxx.xxx 未訂閱
先感謝大大回答.先回答您的問題以及再發問: (1)我是用dev C ,基本上我的程式碼compile是可以的... (2)我的sizeDimension1是行數,是後來演算出來的 (3)而count1和count2主要是記數,記的是橫排跟直排的元素數,記到相加等於使用者輸入的數量便停止,並不打算歸零 ================================================================= 不過大大所說"max=a[0][0],min=a[0][0]; 放在迴圈內,會使得每次測試max跟min之前,max跟min都會被設定為a[0][0]" 的確是問題所在,小弟更改這部份便可以順利執行成功了 ================================================================= 另外,小弟不懂大大所說從"console"以及程式碼中的"ostringstream output;"用途,可以請大大說明一下嗎?
系統時間:2024-06-02 0:46:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!