Ryuki87241978
@Ryuki87241978

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

AIZU ONLINE JUDGE - Introduction To Programming Iの"Finding Missing Cards"という問題について

AIZU ONLINE JUDGE - Introduction To Programming Iの"Finding Missing Cards"という問題について

下記のようにコードを書きましたがRuntime Errorで解けませんでした。
解決方法を教えていただけるとありがたいです。
よろしくお願い致します。
C++という言語で書きました。

問題と自分のソースコードのURL

問題
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_6_B
ソースコード
https://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=6160617#1

発生している問題・エラー

Runtime Error

スクリーンショット (16).png

該当するソースコード

#include <bits/stdc++.h>
using namespace std;

int main() {

    int cards[4][13];
    for(int i=0; i<4; i++) {
        for(int j=1; j<=13; j++) {
            cards[i][j] = false;
        }
    }
    int N,x;
    cin >> N;
    char ch;
    for(int i = 1; i <= N; i++){
        cin >> ch >> x;
        if(ch == 'S') {
            ch = 0;
        }
        if(ch == 'H') {
            ch = 1;
        }
        if(ch == 'C') {
            ch = 2;
        }
        if(ch =='D') {
            ch = 3;
        }
        cards[ch][x] = true;
    }

    int cnt = 0;
    for(int i=0; i<4; i++) {
        for(int j=1; j<=13; j++) {
            if(cards[i][j] == false) {
                if(i==0) {
                    cout << 'S' << " " << j << endl;
                }
                if(i==1) {
                    cout << 'H' << " " << j << endl;
                }
                if(i==2) {
                    cout << 'C' << " " << j << endl;
                }
                if(i==3) {
                    cout << 'D' << " " << j << endl;
                }
            }
        }
    }

}


0

1Answer

二次元配列 cards の型が int[4][13] なのに対して、 cards[i][j] のようにアクセスする際に j の範囲が 1 から 13 になっているため、配列外参照を起こしてしまっています。

0Like

Comments

  1. @Ryuki87241978

    Questioner

    教えてくださりありがとうございます。
    範囲を直し少しコードを書き直したらAcceptedになりました。
    自分のミスに気づけて良かったです。
  2. 以前の質問に関してもそうですが、質問が解決した場合はクローズをお願いします。

Your answer might help someone💌