ヒットアンドブロー(数当てゲーム、四桁)のプログラムの作成なんですが、自分はどうしてもできません。(>_<)!しかしできないと単位ももらえないので、みんなの力を借りたいのですが、ぜひ助けてください!

A 回答 (1件)

以下のURLに、Hit&Blowのプログラムとアルゴリズムがありますので、参考にしてください。


そのまま引用せず、「#define N 4」などとして、N桁でも対応できるように改造してみては、如何でしょうか。

参考URL:http://www.media.osaka-cu.ac.jp/~k-abe/2001-JS-O …
    • good
    • 0
この回答へのお礼

本当にありがとうございます。問題は無事解決しました。(^o^)

お礼日時:2002/01/23 12:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qこのプログラム見てもらえませんか??

#include <stdio.h>

int main(void)
{
int a=1, b=2, c=3, d=4, e=5;
int *pb, *pd;
int tmp;

printf("values = %d %d %d %d %d\n",a,b,c,d,e);
pb = &b;
printf("*pb = %d, pb = %x\n",*pb,pb);
pd = &d;
printf("*pd = %d, pd = %x\n",*pd,pd);

printf("Before : a=%d, b=%d, c=%d, d=%d, e=%d\n",a,b,c,d,e);

tmp = *pd;
*pd = *pb;
*pb = tmp;

printf("After : a=%d, b=%d, c=%d, d=%d, e=%d\n",a,b,c,d,e);

return 0;
}

現在プログラミングについて勉強中の者です。このプログラムの意味はなんとなく理解はできるのですが、実際のところプログラムがどうゆう風に組まれているか(仕組みや流れみたいなもの)?一つ一つがどうゆう意味を成しているのかがあまりわかりません。よければ、下のようにコメントつきで説明のほどよろしくお願いできないでしょうか??

strLen = strlen(src); /* 入力文字列の長さ*/
strcpy(wkStr ,src); /* 入力文字列の退避*/
desCnt = strLen-1;
for(srcCnt=0;srcCnt<strLen ;srcCnt++) /*入力文字の最初から最後まで1文字ずつ拾う*/

ご鞭撻のほどよろしくお願いします。。

#include <stdio.h>

int main(void)
{
int a=1, b=2, c=3, d=4, e=5;
int *pb, *pd;
int tmp;

printf("values = %d %d %d %d %d\n",a,b,c,d,e);
pb = &b;
printf("*pb = %d, pb = %x\n",*pb,pb);
pd = &d;
printf("*pd = %d, pd = %x\n",*pd,pd);

printf("Before : a=%d, b=%d, c=%d, d=%d, e=%d\n",a,b,c,d,e);

tmp = *pd;
*pd = *pb;
*pb = tmp;

printf("After : a=%d, b=%d, c=%d, d=%d, e=%d\n",a,b,c,d,e);

return 0;
}

現在プログラミングについて勉強中の者です。このプロ...続きを読む

Aベストアンサー

/*ポインタはメモリ上のアドレスを格納します
/*まずはその前提をしっかり理解して下さい。*/

#include <stdio.h>
/* スタンダード入出力ライブラリの読込*/


int main(void)
{
int a=1, b=2, c=3, d=4, e=5; /* 変数 */
int *pb, *pd; /* ポインタ変数 */
int tmp; /* 一時変数 */

printf("values = %d %d %d %d %d\n",a,b,c,d,e);
/* 「values = 1 2 3 4 5」と出力 */

pb = &b;
/* &bは変数bのポインタ(メモリ上のアドレス
/* これをポインタ変数pbに代入 */

printf("*pb = %d, pb = %x\n",*pb,pb);
/*「*pb = 2, pb = xxxxxx」と出力。xxxxxxは
/* メモリ上に保存されたポインタの実アドレスが
/* 出てくる(16進数表記)*/

pd = &d;
/* &dは変数dのアドレス(すなわちポインタ
/* これをポインタ変数pdに代入 */

printf("*pd = %d, pd = %x\n",*pd,pd);
/* 「*pd = 4, pd = yyyyyy」と出力。
/* yyyyyyはメモリ上に保存されたポインタの
/* 実アドレスが出てくる(16進数表記) */

printf("Before : a=%d, b=%d, c=%d, d=%d, e=%d\n",a,b,c,d,e);
/* 「Before : a=1, b=2, c=3, d=4, e=5」と出力*/


/***** 以下はbとdの値を入れ替える処理 *****/

tmp = *pd;
/* *pdはポインタの指す先(変数dのことね)の
/* 値を示す=つまりは4、これをtmpに代入 */

*pd = *pb;
/* *pbはポインタの指す先(変数bのことね)の
/* 値を示す=つまりは2、これを*pdに代入。
/* pdはdを指しているので、この代入でdの値が
/* 2になる */

*pb = tmp;
/* tmpの値すなわち4を*pbに代入。pbはbを指して
/* いるので、この代入でbの値が4になる */


printf("After : a=%d, b=%d, c=%d, d=%d, e=%d\n",a,b,c,d,e);
/* 「After : a=1, b=4, c=3, d=2, e=5」と出力*/

return 0;
}

/*ポインタはメモリ上のアドレスを格納します
/*まずはその前提をしっかり理解して下さい。*/

#include <stdio.h>
/* スタンダード入出力ライブラリの読込*/


int main(void)
{
int a=1, b=2, c=3, d=4, e=5; /* 変数 */
int *pb, *pd; /* ポインタ変数 */
int tmp; /* 一時変数 */

printf("values = %d %d %d %d %d\n",a,b,c,d,e);
/* 「values = 1 2 3 4 5」と出力 */

pb = &b;
/* &bは変数bのポインタ(メモリ上のアドレス
/* これをポインタ変数pbに代入 */

printf("*pb = %d, p...続きを読む

Qこのプログラム見てもらえますか?

問題は十進数二桁の正整数をgetchar()を用いて文字型の変数xとyから元の10進二桁の正整数を復元して整数型変数zに格納せよ zをprintf()で出力し正しく格納されていることを格納せよ。です

#include<stdio.h>
int main(void)
{
char x[256],y[256];
int z;
printf("整数を一文字入力して下さい。\n");
x=getchar();
printf("整数を一文字入力して下さい。\n");
y=getchar();
z=x*10+y;
printf("%d\n",z);
return(0);
}


これをコンパイルすると
kadai5-5.c: In function `main':
kadai5-5.c:9: incompatible types in assignment
kadai5-5.c:11: incompatible types in assignment
kadai5-5.c:12: `zyuu' undeclared (first use in this function)
kadai5-5.c:12: (Each undeclared identifier is reported only once
kadai5-5.c:12: for each function it appears in.)
kadai5-5.c:13: `iti' undeclared (first use in this function)
kadai5-5.c:14: invalid operands to binary +

こう表示されます。
C言語の参考書片手に試行錯誤してるんですがなかなかできません。
よろしくおねがいします。

問題は十進数二桁の正整数をgetchar()を用いて文字型の変数xとyから元の10進二桁の正整数を復元して整数型変数zに格納せよ zをprintf()で出力し正しく格納されていることを格納せよ。です

#include<stdio.h>
int main(void)
{
char x[256],y[256];
int z;
printf("整数を一文字入力して下さい。\n");
x=getchar();
printf("整数を一文字入力して下さい。\n");
y=getchar();
z=x*10+y;
printf("%d\n",z);
return(0);
}


これをコンパイルす...続きを読む

Aベストアンサー

行番号つきでひとつずつ確認しましょう。

1: #include<stdio.h>
2: #include<stdlib.h>
3: int main(void);
4: int main(void)
5: {
6: char x[256],y[256];
7: int z;
8: printf("整数を一文字入力して下さい。\n");
9: x=getchar();
10: printf("整数を一文字入力して下さい。\n");
11: y=getchar();
12: zyuu=atoi(x);
13: iti=atoi(y);
14: z=x+y;
15: printf("%d\n",z);
16: return(0);
17: }

> kadai5-5.c: In function `main':
> kadai5-5.c:9: incompatible types in assignment
getcharの仮宣言は、int getchar(void )です。
xはchar x[100]と宣言されています。
この場合、xは配列の先頭アドレス(すなわち&(x[0]))です。であるため、x[0]に値を代入したい場合、x[0]としなければなりません。または、宣言をchar xとしてください。これなら、xは変数そのものになります。

> kadai5-5.c:11: incompatible types in assignment
上記xの問題と同じことをyでやってます。

> kadai5-5.c:12: `zyuu' undeclared (first use in this function)
zyuuが宣言されていません。zyuuを使う場合は int zyuu;として宣言してください。

> kadai5-5.c:12: (Each undeclared identifier is reported only once
> kadai5-5.c:12: for each function it appears in.)
このエラーは上記のエラーの続きなので直せば一緒に消えます。

> kadai5-5.c:13: `iti' undeclared (first use in this function)
itiが宣言されていません。

> kadai5-5.c:14: invalid operands to binary +
せっかく計算したzyuuとitiを足すべきです。
これはタダの書き間違いですね?

このプログラム、2つの方式が混ざってしまっています。

まずはzyuu,itiの変数宣言を追加してください。
次の方向は二つ。

1.atoiを使わない場合はx,yの宣言は配列をやめ、次のようにする。
zyuu=x-'0';
iti=y-'0';
とする。

2.atoiを使いたい場合、文字列として扱わなければならないため、x,yの宣言はそのままでよい。
9行目、11行目を次のようにする。
x[0]=getchar();x[1]='\0';
y[0]=getchar();y[1]='\0';
char配列を文字列として扱いたい場合、文字終端を正しくセットしておかなければなりません。

注意:
getcharをはじめとするGETC系関数は、文字列ではなく文字そのものを取得します。文字配列に値を格納したい場合は、添え字([]演算子)を用意する必要があります。
fgetsとgetsのFGETS系関数は文字列を取得します。
この場合は、文字配列のアドレスを渡してそこにデータが格納されます。

行番号つきでひとつずつ確認しましょう。

1: #include<stdio.h>
2: #include<stdlib.h>
3: int main(void);
4: int main(void)
5: {
6: char x[256],y[256];
7: int z;
8: printf("整数を一文字入力して下さい。\n");
9: x=getchar();
10: printf("整数を一文字入力して下さい。\n");
11: y=getchar();
12: zyuu=atoi(x);
13: iti=atoi(y);
14: z=x+y;
15: printf("%d\n",z);
16: return(0);
17: }

> kadai5-5.c: In function `main':
> kadai5-5.c:9: incompatible types in assignment
...続きを読む

Qこのプログラムみてもらえますか?

課題は標準入力から正整数aを読み込み、aが素数であるか否か判定するプログラムを作れ、です。

#include <stdio.h>
int main(void)
{
int a,b,c;
for(;;){
printf("正整数を入力して下さい。\n");
scanf("%d",&a);
c=a%b;
for(b=2;b=a-1;b=b+1){

if(c==0)
printf("素数でない。\n");
break;
}
printf("素数です。\n");
break;

return(0);
}
}


コンパイルはできますが、実行すると9が「素数です」と表示されます^^;
よろしくおねがいします。

Aベストアンサー

いっぱい間違ってるので、ストレートに回答を。

#include <stdio.h>
int main(void)
{
  int a,b,c;
  printf("正整数を入力して下さい。\n");
  scanf("%d",&a);
  /* 正整数と言ってもゼロとかマイナスを入れられると困る */
  if (c < 1) {
    printf("入力ミス\n");
    return 0;
  }
  c = a; /* 1を入れられた時のおまじない */
  for (b = 2;b < a;b++) {
    c = a % b;
    if (c == 0) {
      printf("素数でない。\n");
      break;
    }
  }
  /* ループ終了時、cが0なら上で「素数でない」と表示した筈 */
  if (c != 0) {
    printf("素数です。\n");
  }
  return 0;
}

QC言語のゲームのサンプルプログラムが置いてあって自由に修正できるサイト教えてもらえないでしょうか?

ゲームのサンプルプログラムが置いてあって自由に修正できるサイト教えてもらえないでしょうか?

Aベストアンサー

C言語、自体があまり初心者向けではないのですが、
Cを本気で学ぼうと考えるなら、書籍を購入する事をお勧めします。

「C言語〈1〉はじめてのCプログラミング プログラミング学習シリーズ」
倉 薫 (著)
アマゾン(http://www.amazon.co.jp/)の古本で400円で販売していました。
私が昔、他の人にC言語を教えるときに使った教材ですが非常に簡単でした。
「簡単」というのがポイントで初めてCを学ぶ方から非常に読みやすいと定評があった本です。

ただこれを読んだからといってすぐに市販されているようなゲームが作れるわけではありません。
C言語でゲームを作るのはかなり地道ですし下地になる知識が相当必要です。

とりあえず市販のコンパイラ(コンパイラというのはexe等を作るやつ)は
必要になってから買うので十分です。
先に説明した無償のコンパイラで市販レベルのソフトを作る事も可能なのです。
(市販のものと何が違うかというとマニュアル、ツール、ライブラリ等が付属している点)
やろうと思えばそのツールやライブラリもその無償のコンパイラで作れるわけですから。

また前回とかぶりますが
http://www.kumei.ne.jp/c_lang/bcc/index.html
でBCCというコンパイラをインストールし
http://www.kumei.ne.jp/c_lang/index_c.html
の1章から見ていって実際もexeにして実行してみてください。
このサイトも参考になります。

C言語、自体があまり初心者向けではないのですが、
Cを本気で学ぼうと考えるなら、書籍を購入する事をお勧めします。

「C言語〈1〉はじめてのCプログラミング プログラミング学習シリーズ」
倉 薫 (著)
アマゾン(http://www.amazon.co.jp/)の古本で400円で販売していました。
私が昔、他の人にC言語を教えるときに使った教材ですが非常に簡単でした。
「簡単」というのがポイントで初めてCを学ぶ方から非常に読みやすいと定評があった本です。

ただこれを読んだからといってすぐに市販されている...続きを読む

Qアプリケーション間のドラッグアンドドロップ

お世話になります。VC++2005を使用しています。

ウィンドウを生成し、その中に複数の画像をそれぞれ子ウィンドウで表示し、
その子ウィンドウを他の実行ファイルのウィンドウにドラッグアンドドロップして
ファイル名を渡したいと考えています。

また、子ウィンドウをWindowsのエクスプローラのような感覚で
複数選択したりできたらと思っています。

このようなことは可能でしょうか?
また可能でしたらキーワードだけでも教えていただけないでしょうか。

Aベストアンサー

★検索キーワード『OLE ドラッグ ドロップ』です。
・ドラッグ&ドロップには大きく分けて2タイプあります。
 (1)エクスプローラからウインドウへのドラッグ&ドロップ
 (2)アプリケーション間でのドラッグ&ドロップ
 ※(1)は比較的に簡単で WM_DROPFILES メッセージを処理すれば良いです。
 ※(2)は OLE(Object Linking and Embedding) でドラッグ&ドロップを行います。
 この OLE は COMコンポーネント(Component Object Model) のインターフェイスです。
 下のサイトを参考にして下さい。
 (1)http://hp.vector.co.jp/authors/VA016117/oledragdrop1.html→『OLE DragDrop (IDropTargetの実装)』
 (2)http://hp.vector.co.jp/authors/VA016117/oledragdrop2.html→『OLE DragDrop (IDropSourceの実装)』
 (3)http://hp.vector.co.jp/authors/VA016117/oledragdrop3.html→『OLE DragDrop (IDataObjectの実装)』
 (4)http://hp.vector.co.jp/authors/VA016117/oledragdrop4.html→『OLE DragDrop (IEnumFORMATETCの実装)』
 (5)http://hp.vector.co.jp/authors/VA016117/oledragdrop5.html→『OLE DragDrop (サンプル)』
・紹介した上記以外にもネット検索すればたくさんサンプルが見つかります。
 検索キーワードは『OLE ドラッグ ドロップ』です。
 『OLE』をつけた方が上手く検索できます。
 このキーワードで探せばいろいろと見つかるはずです。
・以上。参考に。

用語:
・http://e-words.jp/w/OLE.html→『OLE』
・http://e-words.jp/w/COM.html→『COM』

★検索キーワード『OLE ドラッグ ドロップ』です。
・ドラッグ&ドロップには大きく分けて2タイプあります。
 (1)エクスプローラからウインドウへのドラッグ&ドロップ
 (2)アプリケーション間でのドラッグ&ドロップ
 ※(1)は比較的に簡単で WM_DROPFILES メッセージを処理すれば良いです。
 ※(2)は OLE(Object Linking and Embedding) でドラッグ&ドロップを行います。
 この OLE は COMコンポーネント(Component Object Model) のインターフェイスです。
 下のサイトを参考にして下さい。
 (1)h...続きを読む


人気Q&Aランキング

おすすめ情報