#13948: 大神求救 DEV C++ 成功執行 網站顯示記憶體錯誤


player963852@gmail.com (謝立愷)

學校 : 不指定學校
編號 : 79656
來源 : []
最後登入時間 :
2018-05-09 23:48:42
b965. 2. 矩陣轉換 -- 2016年3月apcs | From: [123.192.38.45] | 發表日期 : 2018-05-19 20:35

#include <iostream>
using namespace std;
int main(){
int R, C, M,x;
cin>>R>>C>>M;
int A[R][C],B[R][C],MM[M];
for(int r=1;r<=R;++r){
for(int c=1;c<=C;++c){
cin>>A[r][c];
}
}
for(int r=1;r<=R;++r){
for(int c=1;c<=C;++c){
B[r][c]=A[r][c];
}
}
for(int m=1;m<=M;++m){
cin>>MM[m];
}
for(int a=1;a<=M;++a){
if(MM[a]==1){
for(int r=1;r<=R;++r){
for(int c=1;c<=C;++c){
A[r][C-c+1]=B[r][c];
}
}
for(int r=1;r<=R;++r){
for(int c=1;c<=C;++c){
B[r][c]=A[r][c];
}
}
}
else{
x=R;R=C;C=x;
for(int r=1;r<=R;++r){
for(int c=1;c<=C;++c){
A[r][c]=B[C-c+1][r];
}
}
for(int r=1;r<=R;++r){
for(int c=1;c<=C;++c){
B[r][c]=A[r][c];
}
}
}
}
cout<<R<<" "<<C<<endl;
for(int r=R;r>0;--r){
for(int c=C;c>0;--c){
cout<<A[r][c]<<" ";
}
cout<<endl;
}
return 0;
}

 
#13954: Re:大神求救 DEV C++ 成功執行 網站顯示記憶體錯誤


a0970580085@gmail.com (/)

學校 : 義守大學
編號 : 74647
來源 : [125.229.235.114]
最後登入時間 :
2023-08-30 17:36:04
b965. 2. 矩陣轉換 -- 2016年3月apcs | From: [111.254.211.203] | 發表日期 : 2018-05-20 11:13

#include
using namespace std;
int main(){
int R, C, M,x;
cin>>R>>C>>M;
int A[R][C],B[R][C],MM[M];
for(int r=1;r<=R;++r){
for(int c=1;c<=C;++c){
cin>>A[r][c];
}
}
for(int r=1;r<=R;++r){
for(int c=1;c<=C;++c){
B[r][c]=A[r][c];
}
}
for(int m=1;m<=M;++m){
cin>>MM[m];
}
for(int a=1;a<=M;++a){
if(MM[a]==1){
for(int r=1;r<=R;++r){
for(int c=1;c<=C;++c){
A[r][C-c+1]=B[r][c];
}
}
for(int r=1;r<=R;++r){
for(int c=1;c<=C;++c){
B[r][c]=A[r][c];
}
}
}
else{
x=R;R=C;C=x;
for(int r=1;r<=R;++r){
for(int c=1;c<=C;++c){
A[r][c]=B[C-c+1][r];
}
}
for(int r=1;r<=R;++r){
for(int c=1;c<=C;++c){
B[r][c]=A[r][c];
}
}
}
}
cout<<R<<" "<<C<<endl;
for(int r=R;r>0;--r){
for(int c=C;c>0;--c){
cout<<A[r][c]<<" ";
}
cout<<endl;
}
return 0;
}


應該是陣列大小的關係。

還有記得 每一行的最後一個數字後並無空白。

 
#13956: Re:大神求救 DEV C++ 成功執行 網站顯示記憶體錯誤


kkmomo (kkmomo)

學校 : 不指定學校
編號 : 29247
來源 : [114.24.230.4]
最後登入時間 :
2022-06-22 22:10:17
b965. 2. 矩陣轉換 -- 2016年3月apcs | From: [118.166.122.118] | 發表日期 : 2018-05-20 14:29

應該是 index out of array bounds

int arr[X];

arr 範圍是從  0 到 X - 1

我用 g++ 編譯你的 code 來跑範例的 input 也是沒報錯

原因可以參考:

https://stackoverflow.com/questions/1239938/accessing-an-array-out-of-bounds-gives-no-error-why

https://zh.wikipedia.org/wiki/%E6%9C%AA%E5%AE%9A%E4%B9%89%E8%A1%8C%E4%B8%BA

 

未定義行為並不一定會造成program crash,有時沒出現錯誤不代表沒bug,只是你剛好沒遇到

 
ZeroJudge Forum