二次元配列を関数の引数にしたい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Sera
記事: 31
登録日時: 11年前

二次元配列を関数の引数にしたい

#1

投稿記事 by Sera » 10年前

こんにちは。
現在作成しているコードで二次元配列中の数値を入れ替える処理を関数化させようと思い、
いざ実行してみたところ、Bus error 10: というエラーが出てしまいます。(MacOSXです)
恐らく二次元配列を関数の引数として使っているのがいけないのだと思いますが、
解消法が不明だったのでここに質問させていただきました。
コードは以下の通りです。

コード:

#include <iostream>
int x,y;
int state[4][4];
int swap(int state[4][4], int x, int y){
    int tmp;
    tmp = state[x][y-1];
    state[x][y-1] = state[x][y];
    state[x][y] = tmp;
    return y++;
}
int main(void){
    cin >> x >> y;
    for(int i = 0; i < 4; i++){
        for(int j = 0; j < 4; j++){
            cin >> state[i][j];
        }
    }
    swap(state, x, y)
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 二次元配列を関数の引数にしたい

#2

投稿記事 by みけCAT » 10年前

Sera さんが書きました:コードは以下の通りです。

コード:

#include <iostream>
int x,y;
int state[4][4];
int swap(int state[4][4], int x, int y){
    int tmp;
    tmp = state[x][y-1];
    state[x][y-1] = state[x][y];
    state[x][y] = tmp;
    return y++;
}
int main(void){
    cin >> x >> y;
    for(int i = 0; i < 4; i++){
        for(int j = 0; j < 4; j++){
            cin >> state[i][j];
        }
    }
    swap(state, x, y)
}
C++だと仮定すると、
・cinが未定義(std::cinの間違い?)
・swapの呼び出しの後にセミコロンが無い
以上の理由によりコンパイルが通りません。本当にこのコードを実行していますか?
また、テストに使用した入力も教えていただけますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Sera
記事: 31
登録日時: 11年前

Re: 二次元配列を関数の引数にしたい

#3

投稿記事 by Sera » 10年前

みけCAT さんが書きました:
Sera さんが書きました:コードは以下の通りです。

コード:

#include <iostream>
int x,y;
int state[4][4];
int swap(int state[4][4], int x, int y){
    int tmp;
    tmp = state[x][y-1];
    state[x][y-1] = state[x][y];
    state[x][y] = tmp;
    return y++;
}
int main(void){
    cin >> x >> y;
    for(int i = 0; i < 4; i++){
        for(int j = 0; j < 4; j++){
            cin >> state[i][j];
        }
    }
    swap(state, x, y)
}
C++だと仮定すると、
・cinが未定義(std::cinの間違い?)
・swapの呼び出しの後にセミコロンが無い
以上の理由によりコンパイルが通りません。本当にこのコードを実行していますか?
また、テストに使用した入力も教えていただけますか?
すみません、質問内容を詳細にするために打ったコードなので自分でも恥ずかしいミスです。

コード:

#include <iostream>
using namespace std;
int x,y;
int state[4][4];
int swap(int state[4][4], int x, int y){
    int tmp;
    tmp = state[x][y-1];
    state[x][y-1] = state[x][y];
    state[x][y] = tmp;
    return y++;
}
int main(void){
    cin >> x >> y;
    for(int i = 0; i < 4; i++){
        for(int j = 0; j < 4; j++){
            cin >> state[i][j];
        }
    }
    swap(state, x, y);
}
/*
入力内容:
 2  3  4  5                               
 6  7  8  1
 9 10 11 12
13 14 15 16
*/

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 二次元配列を関数の引数にしたい

#4

投稿記事 by みけCAT » 10年前

Sera さんが書きました:

コード:

/*
入力内容:
 2  3  4  5                               
 6  7  8  1
 9 10 11 12
13 14 15 16
*/
データが足りない気がしますが、本当にこの入力ですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Sera
記事: 31
登録日時: 11年前

Re: 二次元配列を関数の引数にしたい

#5

投稿記事 by Sera » 10年前

みけCAT さんが書きました:
Sera さんが書きました:

コード:

/*
入力内容:
 2  3  4  5                               
 6  7  8  1
 9 10 11 12
13 14 15 16
*/
データが足りない気がしますが、本当にこの入力ですか?
また書き損じました。すみません。

コード:

/*
入力内容:
2 3
 2  3  4  5                               
 6  7  8  1
 9 10 11 12
13 14 15 16
*/

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 二次元配列を関数の引数にしたい

#6

投稿記事 by みけCAT » 10年前

データ提供ありがとうございます。
とりあえずIdeone.comおよびWandboxで実行してみましたが、いずれも正常終了でした。
きちんとMacOSXで調べないとわからないかもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Sera
記事: 31
登録日時: 11年前

Re: 二次元配列を関数の引数にしたい

#7

投稿記事 by Sera » 10年前

みけCAT さんが書きました:データ提供ありがとうございます。
とりあえずIdeone.comおよびWandboxで実行してみましたが、いずれも正常終了でした。
きちんとMacOSXで調べないとわからないかもしれません。

調べてみたところ、やはりMacOSX独特のエラーでした。
試しに再起動してみたところ改善したので解決とさせていただきます。
みけCATさんありがとうございました!

閉鎖

“C言語何でも質問掲示板” へ戻る