#525: 請問此題的程式這樣寫會溢位嗎?why?


jacky0102 (阿奇)

學校 : 不指定學校
編號 : 2382
來源 : [122.125.89.52]
最後登入時間 :
2008-11-13 13:55:21
a005. Eva 的回家作業 -- POJ | From: [122.125.94.133] | 發表日期 : 2008-08-25 17:29

程式如下,系統給我的回應是溢位或是有除以0的情況,不過我不是很懂,網路上找的文章也有點看不懂,我是新手,剛自學兩天,請大家幫幫忙,感謝!~

#include <iostream>
using namespace std;

int main()
{
    int a;
    int iarr[a][4];

    while (cin >>a)
    {
       for (int i=0;i<=a-1;i++)
       {
         scanf ("%d%d%d%d",&iarr[i][0],&iarr[i][1],&iarr[i][2],&iarr[i][3]);

          if (iarr[i][1]*2==iarr[i][0]+iarr[i][2])

              iarr[i][4]=iarr[i][3]*2-iarr[i][2];

          else
              iarr[i][4]=iarr[i][3]*iarr[i][3]/iarr[i][2];

              }

            for (int i=0;i<=a-1;i++)

              for(int j=0;j<=4;j++)
              {
                 cout <<iarr[i][j]<<" ";

                 if (j==4)

                 cout <<endl;
                 }
    }
}

 
#527: Re:請問此題的程式這樣寫會溢位嗎?why?


minimada (MaDa)

學校 : 國立屏東大學
編號 : 2351
來源 : [163.18.48.47]
最後登入時間 :
2009-03-26 12:42:07
a005. Eva 的回家作業 -- POJ | From: [218.173.14.205] | 發表日期 : 2008-08-25 21:57

程式如下,系統給我的回應是溢位或是有除以0的情況,不過我不是很懂,網路上找的文章也有點看不懂,我是新手,剛自學兩天,請大家幫幫忙,感謝!~

#include <iostream>
using namespace std;

int main()
{
    int a;
    int iarr[a][4];

    while (cin >>a)
    {
       for (int i=0;i<=a-1;i++)
       {
         scanf ("%d%d%d%d",&iarr[i][0],&iarr[i][1],&iarr[i][2],&iarr[i][3]);

          if (iarr[i][1]*2==iarr[i][0]+iarr[i][2])

              iarr[i][4]=iarr[i][3]*2-iarr[i][2];

          else
              iarr[i][4]=iarr[i][3]*iarr[i][3]/iarr[i][2];

              }

            for (int i=0;i<=a-1;i++)

              for(int j=0;j<=4;j++)
              {
                 cout <<iarr[i][j]<<" ";

                 if (j==4)

                 cout <<endl;
                 }
    }
}

a沒有初始化...這樣宣告會有問題...

 

 
#530: Re:請問此題的程式這樣寫會溢位嗎?why?


jacky0102 (阿奇)

學校 : 不指定學校
編號 : 2382
來源 : [122.125.89.52]
最後登入時間 :
2008-11-13 13:55:21
a005. Eva 的回家作業 -- POJ | From: [122.125.94.133] | 發表日期 : 2008-08-26 16:05

a沒有初始化...這樣宣告會有問題...

minimada SendIMessage

感謝你的回答,目前找到的資料是指,這種陣列宣告是靜態陣列的宣告方式要先決定陣列的大小,

我再試試看有沒有比較嚴謹的寫法好了,謝謝~

 
#531: Re:請問此題的程式這樣寫會溢位嗎?why?


minimada (MaDa)

學校 : 國立屏東大學
編號 : 2351
來源 : [163.18.48.47]
最後登入時間 :
2009-03-26 12:42:07
a005. Eva 的回家作業 -- POJ | From: [218.173.16.142] | 發表日期 : 2008-08-26 16:56

a沒有初始化...這樣宣告會有問題...

minimada 

感謝你的回答,目前找到的資料是指,這種陣列宣告是靜態陣列的宣告方式要先決定陣列的大小,

我再試試看有沒有比較嚴謹的寫法好了,謝謝~

其實這題不用全部讀完資料再一次輸出

  int a;  int iarr[4];

  while (cin >> a)  //如果還有測試組

  {
     for (int i=0;i<a;i++)  //題目要求的測試組數
     {

       for (int k=0;k<4;k++)//四個數字

           scanf( "%d", &arr[i]);

       ....//處理

       //處理完就直接輸出

      }

  }

 如果你想要使用動態宣告的話必須先宣告指標

int arr*;然後再用new指令要求配置記憶體

在這題你的陣列要二維的話,就必須宣告指標的指標

int arr**;//or int arr[][];

cin << a  //取得陣列的大小

for (i =0;i<a;i++)

    arr[i] = new int[4];

 
#533: Re:請問此題的程式這樣寫會溢位嗎?why?


jacky0102 (阿奇)

學校 : 不指定學校
編號 : 2382
來源 : [122.125.89.52]
最後登入時間 :
2008-11-13 13:55:21
a005. Eva 的回家作業 -- POJ | From: [122.125.94.133] | 發表日期 : 2008-08-26 18:26

回minimada :

原來不用處理完之後一次輸出阿! 是我搞錯題意了....,再次感謝你。 
ZeroJudge Forum