したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

ぷろぐらみんぐ

26あんだ〜:2007/05/30(水) 13:23:30 ID:CUqg93Jc
まぁ〜stdio(Standard Input Output)勉強してるうちは気にすることないし
InputとうつならscnInputの方がわかりやすいかもね(scn=scanfで使用する変数)。

27まてりん:2007/05/30(水) 13:43:56 ID:Fr2CZ.06
>>18
なんだけど普通の平均はでるのに2乗のほうがでない。ちなみにcounter2ってのはみすw

28まてりん:2007/05/30(水) 13:45:55 ID:Fr2CZ.06
Inputってのは俺がいままで使ってたのでいうintegereみたいなもん?深く考えんでいいってことかねr

29まてりん:2007/05/30(水) 13:56:36 ID:Fr2CZ.06
>>23
nEven++とかnCount++ってのはここではどういう意味?

30まてりん:2007/05/30(水) 14:14:02 ID:Fr2CZ.06
標準入力から正の整数nを読み込み、1からnまで順に出力するぷろぐらむを書け、
ただし、各数は空白文字でくぎり、重のくらいが増える毎に改行を入れて見やすくすること

int integer, i;

printf("Enter an integer:");
scanf("%d", &integer);

for (i = 1; i <= integer; i++)
printf(" %d", i);

return 0;
}


これだと 1 2 3 4 5 6 7 8 9 10って感じになるだけで改行されんよね。ifでいちいち桁変わったらなんちゃらってしてくん?

31まてりん:2007/05/30(水) 14:28:13 ID:Fr2CZ.06
EOFってー1とかのこと?質問しまくりですまねw

32まてりん:2007/05/30(水) 14:36:16 ID:Fr2CZ.06
EOF自己解決

33あんだ〜:2007/05/30(水) 15:06:43 ID:CUqg93Jc
>>18
int nCount=0,nInput;
float fAve=0;

do
{
printf("正の整数を入力してください。(-1で終了):");
scanf("%d",&nInput);

if(nInput!=-1)
{
fAve+=nInput;
nCount++;
}
}while(nInput!=-1);

fAve/=nCount;
printf("平均:%.2f\n2乗:%.2f\n",fAve,fAve*fAve);

>>28
そう。ただの名前。

>>29
(nCount++) = (nCount=nCount+1)
++nCountとnCount++では意味合いが変わるので注意。
例えば

int a;
a=1;
a=++a;
printf("%d",a);//結果は 2

a=1;
a=a++;
printf("%d",a);//結果は 1

++aは+してから代入 a++は+する前に代入

34あんだ〜:2007/05/30(水) 15:12:16 ID:CUqg93Jc
>>30-32
マテリのことだからできてると思うけど
if(n%10==0)
printf("\n");

35まてりん:2007/05/31(木) 01:32:26 ID:AwZo9W86
>>33
18へのレスのほうがちょっとよくわからん。最後それで結果平均出る?
18の俺の2乗のほうが0とかになってまうのは何がいかんのかな?
他はおkwてかまじ助かる。ありがとw

36まてりん:2007/05/31(木) 01:58:20 ID:AwZo9W86
>>34
ifのほうの意味がよくわからないっす・・・

37あんだ〜:2007/05/31(木) 09:41:12 ID:CUqg93Jc
>>35
>>18は2回目の下whileのときinteger!=-1で抜けるなら
即抜けていくから計算してない。integer初期化等の処理をいれないとけない。

上のwhileはinteger=-1でぬけるから、下のwhileはそのまま1回も処理せず抜けるということ

>>36
if(n%10==0)は10,20,30,40・・・の時に真になり11,12,13・・・は偽になる

38まてりん:2007/05/31(木) 18:16:43 ID:AwZo9W86
>>37
なんという盲点・・・/(^o^)\

39まてりん:2007/05/31(木) 18:28:27 ID:AwZo9W86
>>37
たぶん
1 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31

ってかんじのをnまでつくれってことだとおもうんだけどそれでいける?

40まてりん:2007/05/31(木) 18:54:50 ID:AwZo9W86
ブラックジャック
カジノで有名なトランプゲームであるブラックジャックヲコンピュータと対戦するゲームプログラムを作成する。
実際にはトランプを使用して行われるが、ここでは1〜10の目を持つサイコロをカードの数字として扱う簡易版のブラックジャックを考える。
このゲームはディーラーとプレイヤーの対戦ゲームであり、配られたカードの合計が21日開放が勝ちとなる。

ゲーム手順

1、カードを配る

プレイヤー、ディーラーとも2枚のカードを配る。プレイヤーのカードは2枚とも表向き、ディーラーノカードの1枚は見えないように伏せる

2、プレイヤーの番

プレイヤーはヒット(カードをもう1枚引く)かスタンド(カードを引かずその辞典のポイントで勝負)を選択する。
21を超えない限り何回でもヒットすることができる。ただし、21をこえると直ちにプレイヤーのまけとなる。

3、ディーラーの番

プレイヤーがスタンドすれば次にディーラーがカードを引く。ディーラーの場合、ディーラーの意志でカードで引くかどうか決めるのではなく、
ポイントが17以上になるまでカードを引かなければならない。また、17以上になったら、その後カードを引くことができない。

4、勝敗の決定

ディーラーが21をこえた場合、プレイヤーが21をこえていなければプレイヤーの勝ち

ディーラーが21をこえていなければ21に近いほうが勝ち。同じポイントであれば引き分け。

41まてりん:2007/05/31(木) 19:03:31 ID:AwZo9W86


ゲームを開始します。

カードを配ります。
ディーラー>カードは1と??
プレイヤー>カードは3と8.ポイントは11.

プレイヤーの番です。
ヒットorスタンド?[ヒット=1 スタンド=0]:1
プレイヤー>カードは5.ポイントは16.
ヒットorスタンド?[ヒット=1スタンド=0]:0

ディーラーの番です。
ディーラー>1と9.ポイントは10.
ディーラー>カードは5.ポイントは15.
ディーラー>カードは4.ポイントは19.

プレイヤーのポイントは16、ディーラーのポイントは19.
ディーラーの勝ちです。

ゲームを続けますか?[続行=1 終了=0]:0

ゲームを終了しました

42あんだ〜:2007/06/01(金) 16:53:41 ID:CUqg93Jc
>>41 相当きたないけどながれてきなものは↓のでつかめる
つか、i=(i<j?a:b);とかの条件とswitch,pointerってならった?
つか関数わかる?int randam() の部分がそうなんだけど。
あと、勝利条件分岐とかしてないから書かんといかん

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "TIME.H"

int randam()// 数値0〜9を返す
{
char Buffer[32],Card[1];

sprintf(Buffer,"%d",rand());
strcpy(Card,strchr(Buffer,'\0')-1);

return atoi(Card);
}

int main(int argc, char* argv[])
{
//nPlayer=プレイヤーのカード値で-1なら終了
//nDealer=ディーラーのカード値
//nwP=プレイヤーのテンポラリーカード
//nwD=ディーラーのテンポラリーカード
//nInput=ユーザー入力

unsigned int nPlayer,nDealer,nwP,nwD,nInput;

srand((unsigned)time(NULL));

while(nPlayer!=-1)
{
nPlayer=0;nDealer=0;
printf("ゲームを開始します。\n");
printf("カードを配ります。\n");

nDealer=randam()+1;
nwD=randam()+1;

printf("ディーラー:%d、%d\n",nDealer,nwD);
nDealer+=nwD;

nPlayer=randam()+1;
nwP=randam()+1;

printf("プレイヤー:%d、%d\n",nPlayer,nwP);
nPlayer+=nwP;

while(nwP!=-1)
{
printf("プレイヤーの番です。\n");
printf("現在:%d ヒットorスタンド?[ヒット=1 スタンド=0]:",nPlayer);

scanf("%d",&nInput);

if(nInput==0)
{
nwP=-1;
}else{
nwP=randam()+1;
nPlayer+=nwP;
printf("取得:%d 合計:%d\n",nwP,nPlayer);
}

//21超えはここで負けをするならGOTOになる
if(21<=nPlayer)
break;
else
printf("\n");
}

printf("ディーラーの番です。\n");

while(nDealer<17)
{
nwD=randam()+1;
nDealer+=nwD;
printf("取得:%d 合計:%d\n",nwD,nDealer);
}

printf("ディーラー:%d プレイヤー:%d\n",nDealer,nPlayer);

//引き分け、21超え等の判定はここで
if(nDealer<nPlayer)
printf("あなたの勝ちです。\n");
else
printf("あなたの負けです。\n");

printf("もう一度しますか?[1.する 0.やめる]:");

scanf("%d",&nInput);
if(1==nInput)
nPlayer=0;
else
nPlayer=-1;
}

43まてりん:2007/06/01(金) 21:38:54 ID:7q1G.Ee6
マジで作ってくれるとは思わなかった・・・
習ってるかもしれんから教科書見て確認してみる。まじでありがとw

44あんだ〜:2007/06/04(月) 08:07:23 ID:lP1EgRn6
>>43
unsigned int ってなってるけど、intでおk

45まてりん:2007/06/10(日) 14:31:30 ID:AwZo9W86
次の条件にしたがって景品とポイントを交換するプログラムを作成したい。
番号  ポイント
1   50
2   100
3   120
4   180

景品番号に必要なポイントとこれまでに景品と交換したポイントの合計を出力


#include <stdio.h>

main()
{
int number, usedpoint;
int Acount = 0, Bcount = 0, Ccount = 0, Dcount = 0;

printf("景品番号を入力してください(1,2,3,4,EOF):\n");

usedpoint = Acount * 50 + Bcount * 100 + Ccount * 120 + Dcount * 180;

while ( ( number = getchar() ) != EOF){

switch (number){

case '1':
++Acount;
printf("必要なポイント:50\n");
printf("これまでの使用ポイント:%d\n",usedpoint);
break;
case '2':
++Bcount;
printf("必要なポイント:100\n");
printf("これまでの使用ポイント:%d\n",usedpoint);
break;
case '3':
++Ccount;
printf("必要なポイント:120\n");
printf("これまでの使用ポイント:%d\n",usedpoint);
break;
case '4':
++Dcount;
printf("必要なポイント:180\n");
printf("これまでの使用ポイント:%d\n",usedpoint);
break;
case '\n': case ' ':
break;

default:
break;

}
}

printf("\n合計%dポイント使用しました。\n", usedpoint);

return 0;

}

46まてりん:2007/06/10(日) 15:44:41 ID:AwZo9W86
標準入力から実数xを読み込み、その2乗を出力するプログラムを作成せよ


#include <stdio.h>

int square(int);

main()
{
int x;

scanf("%d", x);
printf("%d ", square(x));

printf("\n");
return 0;
}

int square(int y)
{
return y * y;
}

47まてりん:2007/06/10(日) 15:51:48 ID:AwZo9W86
サイコロを6000回ふって出目の頻度を出力するプログラムはできるんだけど
これを実行のたびに乱数を初期かしろって言われたんだけどどういう意味かわからん・・・

48あんだ〜:2007/06/11(月) 01:48:46 ID:bfaeLVRs
>>42 のsrand((unsigned)time(NULL));
みたいにrandの前に初期化しないとだめ。

49まてりん:2007/06/11(月) 10:24:02 ID:Fr2CZ.06
45と46はおk?

50まてりん:2007/06/11(月) 10:44:09 ID:Fr2CZ.06
整数ならべるのこれでいけてるとおもうんだけどなぜか10ごとに改行されない・・・


int integer, i;

printf("Enter an integer:");
scanf("%d", &integer);

for (i = 1; i <= integer; i++)
printf(" %d", i);

if (i % 10 == 0)
printf("\n");

return 0;
}

51まてりん:2007/06/11(月) 12:08:01 ID:Fr2CZ.06
45だと今までに使ったぽいんとが0からふえなかった。

52まてりん:2007/06/11(月) 12:28:05 ID:Fr2CZ.06
46は数字入力してもめちゃめちゃな値にしかならん・・・

53まてりん:2007/06/11(月) 14:52:20 ID:Fr2CZ.06
52は自己解決。scanfのなかに&ないだけだったw

54あんだ〜:2007/06/11(月) 15:44:14 ID:CUqg93Jc
>>50

↓のまんまだと
for (i = 1; i <= integer; i++)
printf(" %d", i);//ここしかForで実行してない

if (i % 10 == 0)
printf("\n");

こうせんといかん
for (i = 1; i <= integer; i++)
{
printf(" %d", i);

if (i % 10 == 0)
printf("\n");
}


>>45
問題ないと思うけど・・しいて言うならdo while文のほうがよくて↓のように括弧をつけるくせつけとくといい
usedpoint = (Acount * 50) + (Bcount * 100) + (Ccount * 120) + (Dcount * 180);

55あんだ〜:2007/06/11(月) 15:53:57 ID:CUqg93Jc
>>45
あんまよくみてないが、↓じゃね?
つまりwhileのなかに+をいれただけ

int main(int argc, char* argv[])
{

int number, usedpoint;
int Acount = 0, Bcount = 0, Ccount = 0, Dcount = 0;

printf("景品番号を入力してください(1,2,3,4,EOF):\n");

while ( ( number = getchar() ) != EOF){

usedpoint = Acount * 50 + Bcount * 100 + Ccount * 120 + Dcount * 180;

switch (number)
{

case '1':
++Acount;
printf("必要なポイント:50\n");
printf("これまでの使用ポイント:%d\n",usedpoint);
break;
case '2':
++Bcount;
printf("必要なポイント:100\n");
printf("これまでの使用ポイント:%d\n",usedpoint);
break;
case '3':
++Ccount;
printf("必要なポイント:120\n");
printf("これまでの使用ポイント:%d\n",usedpoint);
break;
case '4':
++Dcount;
printf("必要なポイント:180\n");
printf("これまでの使用ポイント:%d\n",usedpoint);
break;
case '\n': case ' ':
break;

default:
break;

}
}
printf("\n合計%dポイント使用しました。\n", usedpoint);

return 0;

}

56まてりん:2007/06/14(木) 15:08:57 ID:Fr2CZ.06
ブラックジャックなんだけど21ごえとか引き分けの判定のとこで
if (nDealer < nPlayer <= 21)
printf("あなたの勝ちです。"\n);
else if (nPlayer > 21 >= nDealer)

って延々とかいてったんだけど何も変わらず21こえても勝ち判定になってまう。

57まてりん:2007/06/14(木) 15:16:52 ID:Fr2CZ.06
GOTOつかったらいかんらしい

58すずき:2007/06/14(木) 17:04:12 ID:CUqg93Jc
>>56
そのif文はnDealer<nPlayerとの比較が行われ、真か偽(1,0)がはいってその結果を
21と比べてるから条件は真になる。この真か偽は通常0,1だがコンパイラによって変わる。

if( (nDealer<nPlayer) /*先に←これが行われコンパイラは0か1を返す*/ <=21)
0,1と比べたら真になるから意味が分からん

if (nDealer<nPlayer)
{
if(21>=nPlayer)
printf("かち");
else if(21>=nDealer)
printf("まけ");
else
printf("どろー");
}else{
// ここにはディーラーがプレイヤー以下の時の条件がはいる
  // ただし、二人とも21超でもはいってくる
}

59名も無きマテリアル:2007/06/28(木) 10:07:59 ID:???
>>56
文法がおかしい
if ( nDealer < nPlayer && nPlayer <= 21 )
printf("あなたの勝ちです。"\n);

60名も無きマテリアル:2007/07/08(日) 04:42:41 ID:yY40YP9M
つぅか掲示板だとインデントは付かないのか?
お題も参考書レベルだし
これを人に手伝ってもらわないとダメなら業界入るのヤメたほうがいい。
信じられないかも知れないけど
社会でたら研修開始で2日目には理解できてないとダメなレベル。
やるのは勝手だけどもう少し隔離されたところでやった方が身のため。

61すずき:2007/07/10(火) 09:24:44 ID:CUqg93Jc
>>60
インデント空白無効(めちゃみずらいw)。まぁ〜まだ学習しだして2ヶ月だしねw
常時さげの隔離空間。つかメッセでいろいろやってたけどメッセのほうが説明しにくい・・・

62ちうりっぷの鼻:2007/08/21(火) 19:24:27 ID:2pR5Hbu6
http://www.yourfilehost.com/media.php?cat=video&amp;file=070523p669_02.wmv

ここもねwww


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板