前提・実現したいこと
C言語で8行8列の多重loopのプログラム
発生している問題・エラーメッセージ
全て□の列と●○が入った列があるのでそこが上手くできません □□□□□□□□●○ □□□□□□□□●○ □□□□□□□□●○ □□□□□□□□●○ □□□□□□□□●○ □□□□□□□□●○ □□□□□□□□●○ □□□□□□□□●○ と表示されます
該当のソースコード
C言語
試したこと
□□□□□□□□
□□□□□□□□
□□□□□□□□
□□□●〇□□□
□□□〇●□□□
□□□□□□□□
□□□□□□□□
□□□□□□□□
と表示されるような8行8列のfor文を使った多重loopのプログラムを作りたいです。
補足
printf("□"),printf("○"),printf("●")を使用します。
for(i=0;i<8;i++){
for(j=0;j<8;j++)
}
で8行8列の表が作成できることは分かります。
printf文を使用し試しています。
補足情報(FW/ツールのバージョンなど)
Visual Studio 2019を使用しています
> for(i=0;i=<8;i++){
> for(j=0;j<8;j++)
> }
> で8行8列の表が作成できることは分かります。
9行8列できちまいますよ。
失礼しました。間違えて=をつけていました。これでは確かに9行8列になってしまいますね。ご指摘ありがとうございます!
質問は編集できるので、いまからでも直しておけばいいかと。さらに「該当のソースコード」のところに、「```C」の行と「```」の行の間に入るように貼り付けると見た目もよくなります。
for文の中でprintfで試したことも書いておくといいですね。
盤面の状態(それぞれのマスに○がある、●がある、何もない)を示す配列は作ってありますか。
課題にfor文を使うとあっただけだったので配列は作ってませんでした
編集はできたようですが、「i<8」にするはずが「i=8」になってます。
うっかりしてました
ああ、提示された盤面「だけ」を表示すればいいのですね。勘違いしていました。
まずは、すべての行で「"□"」だけで盤面を表示するプログラムを作ってみるといいかと思います。
そうすれば、あとは4行目(iが3)と5行目(iが4)のときに、別の処理をすればいいですよね。
丁寧にありがとうございます。とりあえずそれでやってみます!
それができたら、
・4行目(iが3)で●を表示するのはjがいくつのときか
・4行目(iが3)で○を表示するのはjがいくつのときか
・5行目(iが4)で●を表示するのはjがいくつのときか
・5行目(iが4)で○を表示するのはjがいくつのときか
を書き出して、それぞれの条件式を書いてみるといいですね。
実行して確認したところ
・行がjになっている
・列がiになっている
という感じでした。
自分で作成してみました
#include<stdio.h>
略
{
int i,j;
for (i = 0; i<3; i++) {
for (j = 0; j <8; j++)
printf("□");
printf("\n");
}
for (i = 0; i < 1; i++) {
for (j = 0; j < 3; j++)
printf("□");
printf("●");
printf("○");
printf("□");
printf("\n");
}
for (i = 0; i < 1; i++) {
for (j = 0; j < 3; j++)
printf("□");
printf("○");
printf("●");
printf("□");
printf("\n");
}
for (i = 0; i < 3; i++) {
for (j = 0; j < 8; j++)
printf("□");
printf("\n");
}
return 0;
}
実行結果
□□□□□□□□
□□□□□□□□
□□□□□□□□
□□□●○□
□□□○●□
□□□□□□□□
□□□□□□□□
□□□□□□□□
となりました。
これだと”□”が足りない。少しわかりずらいかもしれないですね…
for文の中で毎回 printf("\n"); したんですね。そうではなくて、
for (i = 0; i < 8; i++) {
for (j = 0; j < 8; j++) {
printf("□");
}
printf("\n");
}
みたいにすると、1行目の□を8個表示してから改行し、2行目の□を8個表示してから改行し、と8行分の表示ができます。
アドバイスありがとうございます!
毎回してないと改行されないのかなと思ってしてました。
あとは、for文の内側で□を表示している部分を、if文にして ●, ○, □ を表示するように分岐させればできあがりです。
うーん。if文を入れるとなると難しくなりますね…
1行内に
最初に”□”を3文字
”○”と”●”を1文字ずつ
最後に”□”を3文字
表示したいんですけど私の力だとすぐ出てこなくて…
基本は"□"を表示するprintfでいいんです。
if (●を表示するときの条件) {
printf("●");
} else if (○を表示するときの条件) {
printf("○");
} else {
printf("□");
}
として、2つの条件をどう書けるか考えてみるといい。
ありがとうございます!
2つの条件式は、どちらも i の値と j の値に関する複数の条件を && や || で結合したものになります。
なんとか表示できました。ありがとうございます。
回答2件
あなたの回答
tips
プレビュー