升目

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
secound

升目

#1

投稿記事 by secound » 14年前

以下のように升目を表示し、数字を入力すると入力した数字が○に換わるようにしてください。
 ただし、すでに入力されている場合は再度入力させるようにしてください。

コード:

 7|8|9			o|o|o
  -----			-----
 4|5|6		→	o|o|o
  -----			-----
 1|2|3			o|o|o
  図1              図2
という問題を解いているのですが図1の表示のさせ方、図1から図2への変換がわかりません。どなたか教えていただけないでしょうか。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 升目

#2

投稿記事 by softya(ソフト屋) » 14年前

前提条件が良く分かりませんので、フォーラムルールのテンプレートに従って書いて頂けますか?
http://dixq.net/board/board.html

それと質問ですが
7
4
1
と表示することは出来ますか?そのコードを書いてみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

secound

Re: 升目

#3

投稿記事 by secound » 14年前

[1] 質問文
 [1.1] 図1の表示と図1から図2への変換
 [1.2] #include "stdio.h"
     #include "stdlib.h"

     int main(void)
     {
  int i;

  printf("7|8|9\n");
  printf("--------\n");
  printf("4|5|6\n");
  printf("--------\n");
  printf("1|2|3\n");

        for(; ;);
  return 0;
     } 

[1.3]特になし
[1.4] [1.1]と同じ

[2] 環境  
 [2.1] OS : Windows,
 [2.2] コンパイラ名 : Visual Stadio2010
[3] その他
 ・C言語検定3級はとりました
 ・ライブラリがわかりません

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 升目

#4

投稿記事 by softya(ソフト屋) » 14年前

こちらの質問と同じ方ですよね?
http://dixq.net/forum/viewtopic.php?f=3&t=8768
ここのルールで名前は統一していただくようになっていますのでお願いします。

ここの部分を
  printf("7|8|9\n");
  printf("--------\n");
  printf("4|5|6\n");
  printf("--------\n");
  printf("1|2|3\n");
for文を使って出力してみてください。

それと最後の
        for(; ;);
ですが停止するためのものですよね?
これだと強制終了が必要になるので、CTRL+F5で実行すればこれは不要です。
あるいは、
getchar();[訂正] _getch();
などで入力待ちしてください。
#include <conio.h>
が必要です。

あとcodeタグを併用してもらうと読みやすくなります。

コード:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
int main(void)
{
    int i;
 
    printf("7|8|9\n");
    printf("--------\n");
    printf("4|5|6\n");
    printf("--------\n");
    printf("1|2|3\n");
 
    _getch();
    return 0;
}
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

secound

Re: 升目

#5

投稿記事 by secound » 14年前

softya(ソフト屋) さんが書きました:こちらの質問と同じ方ですよね?
http://dixq.net/forum/viewtopic.php?f=3&t=8768
ここのルールで名前は統一していただくようになっていますのでお願いします。

ここの部分を
  printf("7|8|9\n");
  printf("--------\n");
  printf("4|5|6\n");
  printf("--------\n");
  printf("1|2|3\n");
for文を使って出力してみてください。

それと最後の
        for(; ;);
ですが停止するためのものですよね?
これだと強制終了が必要になるので、CTRL+F5で実行すればこれは不要です。
あるいは、
getchar();[訂正] _getch();
などで入力待ちしてください。
#include <conio.h>
が必要です。

あとcodeタグを併用してもらうと読みやすくなります。

コード:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
int main(void)
{
    int i;
 
    printf("7|8|9\n");
    printf("--------\n");
    printf("4|5|6\n");
    printf("--------\n");
    printf("1|2|3\n");
 
    _getch();
    return 0;
}
すみません。以前はfirstで質問をさせていただいてました。
ルールは守りたいと思います。

そしてfor文で表示できたのですが、見てもらえませんか

for(j = 7; j > 0; j = j - 3){
printf("%d|%d|%d|\n", j, j + 1, j + 2);
printf("------\n");
}

よろしくお願いします

non
記事: 1097
登録日時: 15年前

Re: 升目

#6

投稿記事 by non » 14年前

配列は習ってますか?
non

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 升目

#7

投稿記事 by softya(ソフト屋) » 14年前

codeタグ使ってくださいね。

微妙に違うのですが、それは直しておいてください。|が多いです。

それでは数値を入力されたか覚えるために配列で数字の種類(1~9)の数の配列を用意して、これを初期化しておいてください。
そして数値を入力されたら、該当のする添字の場所の値を変えます。
これで入力された場所を覚えることが出来ます。
分かりますか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

first

Re: 升目

#8

投稿記事 by first » 14年前

softya(ソフト屋) さんが書きました:codeタグ使ってくださいね。

微妙に違うのですが、それは直しておいてください。|が多いです。

それでは数値を入力されたか覚えるために配列で数字の種類(1~9)の数の配列を用意して、これを初期化しておいてください。
そして数値を入力されたら、該当のする添字の場所の値を変えます。
これで入力された場所を覚えることが出来ます。
分かりますか?
すみませんが「該当のする添字の場所の値を変えます。」というとこがわからないです。
もう少し詳しく教えていただけませんか

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 升目

#9

投稿記事 by softya(ソフト屋) » 14年前

first さんが書きました:すみませんが「該当のする添字の場所の値を変えます。」というとこがわからないです。
もう少し詳しく教えていただけませんか
該当のする添字の場所とは、入力された数字を添字として使い指し示された配列の場所と言うことです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

オカピー

Re: 升目

#10

投稿記事 by オカピー » 14年前

そのプログラムはコンソールでいいのですか?つまり黒い画面に表示されるのでいいのですね?

(不適切な文章があったので管理人が修正しました)

first

Re: 升目

#11

投稿記事 by first » 14年前

softya(ソフト屋) さんが書きました:
first さんが書きました:すみませんが「該当のする添字の場所の値を変えます。」というとこがわからないです。
もう少し詳しく教えていただけませんか
該当のする添字の場所とは、入力された数字を添字として使い指し示された配列の場所と言うことです。

こういうことでよろしいのでしょうか?

printf("整数を入力してください\n");
scanf_s("%d", &i);

for(b = 0; b < 9; b++){
      if(i == a) j = a;
}

non
記事: 1097
登録日時: 15年前

Re: 升目

#12

投稿記事 by non » 14年前

短いプログラムなのだから,全部添付しませんか?
non

first

Re: 升目

#13

投稿記事 by first » 14年前

non さんが書きました:短いプログラムなのだから,全部添付しませんか?
#include "stdio.h"

int main(void)
{
int i, j, b, a[9] = {1, 2, 3, 4, 5, 6, 7, 8, 9};

for(j = 7; j > 0; j = j - 3){
printf("%d|%d|%d\n", j, j + 1, j + 2);
printf("------\n");
}

printf("整数を入力してください\n");
scanf_s("%d", &i);

for(b = 0; b < 9; b++){
if(i == a) j = a;
}
return 0;
}

non
記事: 1097
登録日時: 15年前

Re: 升目

#14

投稿記事 by non » 14年前

a[]という配列を何のためにどう使うのかというのがポイントです。

コード:

	int i, j, b, a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

	for(j = 7; j > 0; j = j - 3){
		printf("%d|%d|%d\n",a[j],a[j + 1], a[j + 2]);
		printf("------\n");
	}
例えば,上のように変えてみました。配列はインデックスが0から始まります。indexと中身が
一致した方がわかりやすいと思いましたので a[10]に変更し,a[0]は使わないことにしました。
また,表示をa[]に入っている数字を使ってみました。
ここまで,理解できますか?
non

first

Re: 升目

#15

投稿記事 by first » 14年前

non さんが書きました:a[]という配列を何のためにどう使うのかというのがポイントです。

コード:

	int i, j, b, a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

	for(j = 7; j > 0; j = j - 3){
		printf("%d|%d|%d\n",a[j],a[j + 1], a[j + 2]);
		printf("------\n");
	}
例えば,上のように変えてみました。配列はインデックスが0から始まります。indexと中身が
一致した方がわかりやすいと思いましたので a[10]に変更し,a[0]は使わないことにしました。
また,表示をa[]に入っている数字を使ってみました。
ここまで,理解できますか?
softya(ソフト屋)さんが言われていたことですよね?

non
記事: 1097
登録日時: 15年前

Re: 升目

#16

投稿記事 by non » 14年前

理解できたなら,scanfで入力した数の,配列aに0を代入し,
再度表示部分(上の3~6行目)を実行してみましょう。
注:最初の問題では,数字の場所を,’○’マルにするみたいですが,ここでは0ゼロにしてます。
non

first

Re: 升目

#17

投稿記事 by first » 14年前

できました。 nonさん、softyaさんありがとうございます。
あとの細かいところは自分で考えたいと思います。
本当にありがとうございました

閉鎖

“C言語何でも質問掲示板” へ戻る