###問題
太郎が花子と一緒にトランプ遊びをしようとしたところ、52枚あるはずのカードが n 枚のカードしか手元にありません。これらの n 枚のカードを入力として、足りないカードを出力するプログラムを作成して下さい。
太郎が最初に持っていたトランプはジョーカーを除く52枚のカードです。
52枚のカードは、スペード、ハート、クラブ、ダイヤの4つの絵柄に分かれており、各絵柄には13のランクがあります。
最初の行に太郎が持っているカードの枚数 n (n ≤ 52)が与えられます。
続いて n 組のカードがそれぞれ1行に与えられます。各組は1つの空白で区切られた文字と整数です。文字はカードの絵柄を表し、スペードが'S'、ハートが'H'、クラブが'C'、ダイヤが'D'で表されています。整数はそのカードのランク(1 〜 13)を表しています。
URL:
https://onlinejudge.u-aizu.ac.jp/courses/lesson/2/ITP1/6/ITP1_6_B
C言語
1#include <stdio.h> 2#include <string.h> 3 4int main (void) { 5int number, i, j, n; 6int cards[4][14]; 7char picture; 8 9for (j=0;j<=3;j++) { 10for (i=0;i<=13;i++) { 11if (j==0 && i==0) { 12cards[j][i]='S'; 13} else if (j==1 && i==0) { 14cards[j][i]='H'; 15} else if (j==2 && i==0) { 16cards[j][i]='C'; 17} else if (j==3 && i==0) { 18cards[j][i]='D'; 19} 20cards[j][i]=i; 21} 22} 23 24scanf ("%d",&n); 25 26for (i=1;i<=n;i++) { 27scanf ("%c %d",&picture,&number); 28if (picture=='S') { 29picture=0; 30} else if (picture=='H') { 31picture=1; 32} else if (picture=='C') { 33picture=2; 34} else if (picture=='D') { 35picture=3; 36} 37cards[picture][number]=0; 38} 39 40for (j=0;j<=3;j++) { 41for (i=0;i<=13;i++) { 42if (cards[j][i]!=0) { 43if (j==0) { 44printf ("S %d",i); 45} else if (j==1) { 46printf ("H %d",i); 47} else if (j==2) { 48printf ("C %d",i); 49} else if (j==3) { 50printf ("D %d",i); 51} 52} 53 54} 55} 56 57return 0; 58}
###自分のコードの意味
まずcards[][]でSの1〜13、Hの1〜13、Cの1〜13、Dの1〜13の表のようなものを作ります。
次にscanfしたもののところに0を代入します。
そして0が代入されていないところを見つけてそこを出力します。
###エラー内容
zsh: bus error
と言うエラーが
S 12
などのように入力しているときに出ます
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/17 08:05