前提・実現したいこと
AIZU ONLINE JUDGE Lesson-ITP1 ITP1_6_Bの問題を構造体を用いたコードで解決したいです。
{太郎が花子と一緒にトランプ遊びをしようとしたところ、52枚あるはずのカードが n 枚のカードしか手元にありません。これらの n 枚のカードを入力として、足りないカードを出力するプログラムを作成して下さい。
太郎が最初に持っていたトランプはジョーカーを除く52枚のカードです。
52枚のカードは、スペード、ハート、クラブ、ダイヤの4つの絵柄に分かれており、各絵柄には13のランクがあります。}
発生している問題・エラーメッセージ
エラーメッセージはないんですが
c
1scanf("%d",&n); 2 Card card[n]; 3 for(i=0;i<n;i++){ 4 scanf("%c %d",&card[i].name,&card[i].num); 5 } 6```の部分のコードがうまく機能しておらずn個のカード読み込むことができません。どこがおかしいか解説していただけると嬉しいです。 7### 該当のソースコード 8 9```c 10#include <stdio.h> 11 12typedef struct{ 13 char name; 14 int num; 15}Card; 16 17void cardcheck(Card *sample,Card *card,int n){ 18 int i,j; 19 int judge; 20 for(i=0;i<52;i++){ 21 judge=0; 22 for(j=0;j<n;j++){ 23 if((sample[i].name==card[j].name)&&(sample[i].num==card[j].num)){ 24 judge=1; 25 break; 26 } 27 } 28 if(judge==0){ 29 printf("%c %d\n",sample[i].name,sample[i].num); 30 } 31 } 32} 33int main(void){ 34 int n; 35 int i; 36 Card sample[52]={ 37 {'S',1}, 38 {'S',2}, 39 {'S',3}, 40 {'S',4}, 41 {'S',5}, 42 {'S',6}, 43 {'S',7}, 44 {'S',8}, 45 {'S',9}, 46 {'S',10}, 47 {'S',11}, 48 {'S',12}, 49 {'S',13}, 50 {'H',1}, 51 {'H',2}, 52 {'H',3}, 53 {'H',4}, 54 {'H',5}, 55 {'H',6}, 56 {'H',7}, 57 {'H',8}, 58 {'H',9}, 59 {'H',10}, 60 {'H',11}, 61 {'H',12}, 62 {'H',13}, 63 {'C',1}, 64 {'C',2}, 65 {'C',3}, 66 {'C',4}, 67 {'C',5}, 68 {'C',6}, 69 {'C',7}, 70 {'C',8}, 71 {'C',9}, 72 {'C',10}, 73 {'C',11}, 74 {'C',12}, 75 {'C',13}, 76 {'D',1}, 77 {'D',2}, 78 {'D',3}, 79 {'D',4}, 80 {'D',5}, 81 {'D',6}, 82 {'D',7}, 83 {'D',8}, 84 {'D',9}, 85 {'D',10}, 86 {'D',11}, 87 {'D',12}, 88 {'D',13}, 89 }; 90 scanf("%d",&n); 91 Card card[n]; 92 for(i=0;i<n;i++){ 93 scanf("%c %d",&card[i].name,&card[i].num); 94 } 95 cardcheck(sample,card,n); 96 return 0; 97}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
> ~の部分のコードがうまく機能しておらずn個のカード読み込むことができません
どのような入力でどのようになるはずが, どのように機能せず出来ないのでしょうか.
例えばn=30といれても30までいかずn=20で読み込みが終わって下の関数が実行してしまう感じです。
scanf("%*c%c")を使うことで一応解決することができました。ありがとうございます。
回答2件
あなたの回答
tips
プレビュー