J個花了我很久時間r...
#include <iostream>
using namespace std;
int main(){
int x, y, array_size, counter;
cin >> x >> y;
array_size = x*y;
int a[array_size];
for(int h=1;h<=array_size;++h){
cin >> a[h];
}
if(x<=1&&y<=1||x==0||y==0){
cout << a[1];
return 0;
}
for(int i=1;i<=y;i++){
counter = i;
cout << a[i] << " ";
for(int j=1;j<x;++j){
counter=y+counter;
if(x==1){
break;
}
//cout << counter << "<< counter!!" << endl;
cout << a[counter] << " ";
}
if(i==y){
break;
}else{
cout << endl;
}
}
return 0;
}
求解
注意提示
Hint :
* 測資檔會包含多組矩陣資料
而你的程式碼只接受一筆測資,試著寫成
while (cin >> x >> y) { // 處理 x, y }
注意結果輸出的最後,要有換行,避免矩陣的第一列,黏到前一個矩陣的最後一列
(但矩陣之間不用有空行)
注意提示
Hint :
* 測資檔會包含多組矩陣資料而你的程式碼只接受一筆測資,試著寫成
while (cin >> x >> y) { // 處理 x, y }注意結果輸出的最後,要有換行,避免矩陣的第一列,黏到前一個矩陣的最後一列
(但矩陣之間不用有空行)
謝謝大大的回覆,我已經用 while 處理資料了... 但是現在變成 WA "共輸出四行"... 我自己試著輸入多筆資料都沒問題... 請問我應該如何改善?
Here is the code:
#include <iostream>
using namespace std;
int main(){
int x, y, array_size, counter;
while(cin >> x >> y){
array_size = x*y;
int a[array_size];
for(int h=1;h<=array_size;++h){
cin >> a[h];
}
if(x<=1&&y<=1||x==0||y==0){
cout << a[1];
break;
}
for(int i=1;i<=y;i++){
counter = i;
cout << a[i] << " ";
for(int j=1;j<x;++j){
counter=y+counter;
if(x==1){
break;
}
cout << a[counter] << " ";
}
if(i==y){
break;
}else{
cout << endl;
}
}
cout << endl;
x=0;y=0;array_size=0;counter=0;
}
return 0;
}
我猜問題出在
if (x<=1 && y<=1 || x==0 || y==0) { cout << a[1]; break; }
當遇到測資為
1 1 1
或者 0 0
0 0
時,程式就跳出 while 了
把 break;
改成 continue;
試試