程式如下,系統給我的回應是溢位或是有除以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;
}
}
}
程式如下,系統給我的回應是溢位或是有除以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沒有初始化...這樣宣告會有問題...
回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];