計算ゲームが作れない・・・

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

計算ゲームが作れない・・・

#1

投稿記事 by gest » 14年前

私は今計算ゲームを作っているんですが躓いてしまいました。

↓ソース

codeタグを追加しました。 by softya(ソフト屋)

コード:

#include <stdio.h>
#include <time.h>
#include <stdilb.h>

int main() {

	int a ;			/*回答格納用*/
	int b ,c ;		/*問題生成用*/
	int i= q,w,e,r ;	/*式の-+/*の役目*/
	int q=+ ,w=- ,e=* ,r=/ ;

	printf("【計算ゲーム】\n");

	/*乱数を初期化する*/

	((unsigned)time(NULL));

	/*乱数の種をまく*/

	b = rand()% 100 + 1;
	c = rand()% 100 + 1;

	/*問題の表示*/

	printf("%d %d %d =%d",b,i,c,a);

	/*答えの入力*/

	scanf("%d",&a);

	/*問題の結果表示と分岐処理*/

	if(b i c ==a) {
		printf("正解!");
	} else {
		printf("残念…")
	}

	return 0;
}
まず-+*/
をどうやって乱数にするかが分からないです。


それを理解できればできるかなと思っています。・・・・

お願いします。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 計算ゲームが作れない・・・

#2

投稿記事 by みけCAT » 14年前

コードはcodeタグで囲んでいただけるとありがたいです。

コード:

char* enzansi={"+","-","*","/"};
printf("%s\n",enzansi[rand()%4]);
簡単に書くとこんな感じでしょうか。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 計算ゲームが作れない・・・

#3

投稿記事 by みけCAT » 14年前

答えの作成もですね。

コード:

int calc(int a,int b,int enzan) {
    int ans;
    switch(enzan) {
        case 0:
            ans=a+b;
            break;
        case 1:
            ans=a-b;
            break;
        case 2:
            ans=a*b;
            break;
        case 3:
            ans=b?a/b:0;
            break;
        default:
            ans=0;
            break;
    }
    return ans;
}
enzanの番号は前のレスと同じです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

box
記事: 2002
登録日時: 14年前

Re: 計算ゲームが作れない・・・

#4

投稿記事 by box » 14年前

gest さんが書きました:

コード:

	int i= q,w,e,r ;	/*式の-+/*の役目*/
	int q=+ ,w=- ,e=* ,r=/ ;
C言語の文法をしっかり頭にたたき込んでから
計算ゲームというアプリケーションを開発することを
強くおすすめします。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

gest

Re: 計算ゲームが作れない・・・

#5

投稿記事 by gest » 14年前

おもにどういう文法を学んだ方がいいでしょうか?

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

Re: 計算ゲームが作れない・・・

#6

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

gest さんが書きました:おもにどういう文法を学んだ方がいいでしょうか?
文法の基本的なところは満遍なく理解しないと作れないと思います。
この問題は課題ですか?それとも、何らかの入門書の問題ですか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

gest

Re: 計算ゲームが作れない・・・

#7

投稿記事 by gest » 14年前

自分で興味があるんで作っているだけです。

ので一様時間はかけれます。

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

Re: 計算ゲームが作れない・・・

#8

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

何らかの入門書はお持ちですか?
あるいは、どこかの入門サイトは読まれていますか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

gest

Re: 計算ゲームが作れない・・・

#9

投稿記事 by gest » 14年前

10日でわかるC言語入門

というのを読んでいます。

wing
記事: 18
登録日時: 14年前

Re: 計算ゲームが作れない・・・

#10

投稿記事 by wing » 14年前

質問とは違うんですが、
#include <stdilb.h>
は、
#include <stdlib.h>
ではありませんか?。

gest

Re: 計算ゲームが作れない・・・

#11

投稿記事 by gest » 14年前

すみません、間違えてましたw

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

Re: 計算ゲームが作れない・・・

#12

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

そうですね。
・コンパイラを使って実際にコンパイル・実行されていますか?
・数値型、文字型の理解がされていません。変数もですが、printfの書式の理解も必要です。
・乱数の初期化の説明は「10日でおぼえるC言語」には無かったのでしょうか?
・もしかすると値の代入とか文の実行順序自体も理解されていない可能性があります。
・switch文は理解できますか?
ざっと、こんな所でしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

gest

Re: 計算ゲームが作れない・・・

#13

投稿記事 by gest » 14年前

softya(ソフト屋) さんが書きました:そうですね。
・コンパイラを使って実際にコンパイル・実行されていますか?
・数値型、文字型の理解がされていません。変数もですが、printfの書式の理解も必要です。
・乱数の初期化の説明は「10日でおぼえるC言語」には無かったのでしょうか?
・もしかすると値の代入とか文の実行順序自体も理解されていない可能性があります。
・switch文は理解できますか?
ざっと、こんな所でしょうか?

・コンパイラは使えます。

・数値型や文字型(char?)などはあまり理解できていません・・・

・一様初期化のやり方は書いてありました。もしかして間違っていましたか!?

・代入はわかっているつもりですが…

・switch文はあまり理解していません・・・・

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

Re: 計算ゲームが作れない・・・

#14

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

・数値型や文字型(char?)などはあまり理解できていません・・・
書籍には書かれていないのですか?
・一様初期化のやり方は書いてありました。もしかして間違っていましたか!?
はい。関数呼び出しになっていません。
・switch文はあまり理解していません・・・・
これも書籍には書かれていないのでしょうか?
if文で代用できないこともないです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

box
記事: 2002
登録日時: 14年前

Re: 計算ゲームが作れない・・・

#15

投稿記事 by box » 14年前

gest さんが書きました: 一様時間はかけれます。
一様初期化のやり方は書いてありました。
日本語も勉強しましょう。
一様ではなくて、一応(いちおう)です。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

白い時空
記事: 18
登録日時: 14年前
住所: 埼玉県さいたま市

Re: 計算ゲームが作れない・・・

#16

投稿記事 by 白い時空 » 14年前

簡単に、間違っている所を指摘しますと

コード:

int i= q,w,e,r ;    /*式の-+/*の役目*/
int q=+ ,w=- ,e=* ,r=/ ;
上の部分ですが、q,w,e,rを変数の宣言前に使っているので、エラーになるでしょう。
また、q,w,e,r と書くと実際には一番右の値が返されるので、
int i = r;
と同じになります。

次に下の部分ですが、int型は変数を入れるものであり、演算の記号は入らないです。
文字型charに'+','-','*','/'と、演算記号の文字を入れることで代用してください。

コード:

/*乱数を初期化する*/
((unsigned)time(NULL));
このままだと何もしないです。関数名が抜けてますね。

コード:

if(b i c ==a) {
iには記号が入ったりしないので、これは明らかにエラーになります。
みけCATさんの関数を参考にしてみてください。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 計算ゲームが作れない・・・

#17

投稿記事 by みけCAT » 14年前

白い時空 さんが書きました:簡単に、間違っている所を指摘しますと

コード:

int i= q,w,e,r ;    /*式の-+/*の役目*/
int q=+ ,w=- ,e=* ,r=/ ;
上の部分ですが、q,w,e,rを変数の宣言前に使っているので、エラーになるでしょう。
また、q,w,e,r と書くと実際には一番右の値が返されるので、
int i = r;
と同じになります。
これは間違っている気がします。
Ideoneで試したところ、コンパイルエラーになりました。
コード

コード:

#include <stdio.h>
 
int main(void) {
        int q=1;
        int w=2;
        int e=3;
        int r=4;
        int i= q,w,e,r ;
        printf("i=%d\n",i);
        return 0;
}
エラーメッセージ

コード:

prog.c: In function ‘main’:
prog.c:8: error: redeclaration of ‘w’ with no linkage
prog.c:5: error: previous definition of ‘w’ was here
prog.c:8: error: redeclaration of ‘e’ with no linkage
prog.c:6: error: previous definition of ‘e’ was here
prog.c:8: error: redeclaration of ‘r’ with no linkage
prog.c:7: error: previous definition of ‘r’ was here
prog.c:8: warning: unused variable ‘r’
prog.c:8: warning: unused variable ‘e’
prog.c:8: warning: unused variable ‘w’
http://ideone.com/MHJFE
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

白い時空
記事: 18
登録日時: 14年前
住所: 埼玉県さいたま市

Re: 計算ゲームが作れない・・・

#18

投稿記事 by 白い時空 » 14年前

すいません。完全に私のミスです。orz

コード:

int i= q,w,e,r ;
これ普通に見たら、qの値が入ったiとw,e,rを宣言してますね。

要はこの一文は下記と同じになりますね。

コード:

int i=q;
int w,e,r;
なので、これ以外の場所でw,e,rを宣言していれば、
複数宣言でエラーになります。

閉鎖

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