質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

841閲覧

AOJのITP1_6_BでREが発生して困っています。使っている言語はcです。

mekenco_37564

総合スコア1

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2023/01/17 00:55

AOJでcを使ってます

AOJのLesson-ITP1のITP1_6_Bでruntime errorが起こります。
なぜ発生しているのかが分かりません。

実現したいこと

問題なくプログラムが動くようにしたいです。

発生している問題・エラーメッセージ

timeout: the monitored command dumped core 0.00user 0.00system 0:00.00elapsed 50%CPU (0avgtext+0avgdata 2052maxresident)k 0inputs+8outputs (0major+186minor)pagefaults 0swaps

該当のソースコード

c

1#include<stdio.h> 2 3int main(){ 4 int a[4][14],b,t,k,y; 5 char c,n,S,H,C,D; 6 S='S'; 7 H='H'; 8 C='C'; 9 D='D'; 10 scanf("%d",&b); 11 for(;b!=0;--b){ 12 scanf("%c",&n); 13 scanf("%c %d",&c,&t); 14 if(c=='S'){ 15 a[0][t]=1; 16 }else if(c=='H'){ 17 a[1][t]=1; 18 }else if(c=='C'){ 19 a[2][t]=1; 20 }else{ 21 a[3][t]=1; 22 } 23 } 24 y=0; 25 while(1){ 26 for(k=0;k!=13;++k){ 27 if(a[y][k]==0){ 28 if(y==0){ 29 printf("%c %d",S,k); 30 }else if(y==1){ 31 printf("%c %d",H,k); 32 }else if(y==2){ 33 printf("%c %d",C,k); 34 }else printf("%c %d",D,k); 35 } 36 if(y==4)break; 37 printf("\n"); 38 ++y; 39 } 40 } 41 return 0; 42}

試したこと

・while文をfor文にした
・改行をずらしてみた
・printfの%cを直にS,H,C,Dを入れてみた

補足情報(FW/ツールのバージョンなど)

AOJのバージョンは最新です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2023/01/18 07:59

AOJ て何でしょう。
guest

回答1

0

ベストアンサー

ぱっと見,後半の while(1) のループから抜けられないように見えますが.

投稿2023/01/17 01:02

fana

総合スコア11658

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2023/01/17 01:03

あと y=4 の状態で a[y][] にアクセスしそうな雰囲気もある.
mekenco_37564

2023/01/17 01:08

間違えてfor文の中でbreakを入れていただけみたいでした。 お騒がせしました。ありがとうございます。
fana

2023/01/17 01:12 編集

質問内容とは関係ないけど,52枚のカードを扱うならシンプルに a[52] で扱った方がループの形とかが楽になるんじゃないかな? とか. 必要なのは マークと数による表現 ←→ 配列aのindex の相互変換くらいなので,そんな関数を書けば終わる感じ.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問