C言語関係掲示板

過去ログ

No.328.誰がいつどこで何をどうしたというプログラム

[戻る] [ホームページ]
No.2072

誰がいつどこで何をどうしたというプログラムを作りたい
投稿者---ぱたぱた(2002/07/13 14:07:43)


誰がいつどこで何をどうしたというプログラムを設定した言葉郡のなかからランダムに選んで表示するプログラムはどんな方法がありますか?

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>

void main()
{
char *tomodati[10],*taninn[10],*doko[10],*nani[10],*sita[10];
int i,t,u,s,a,b;
strcpy((tomodati)[10],"{'ジョージ','テツ','リュウスケ','ようすけ','武蔵','すぎ','ダイちゃん','大内','俺','アンパンマン'}");
strcpy((taninn)[10],"{'E.T','食パンマン','怪物','ケネディ','トルシエ','サマ〜ず三村','お母さん','ゴジラ','殺人者','Tバック'}");
strcpy((doko)[10],"{'宇宙','海の底','トイレ','電車','グラウンド','電子レンジ','沖縄','アメリカ','二次元','映画の中'}");
strcpy((nani)[10],"{'パフェ','包丁','スイカ','ボール','花火','パンツ','尻','地球,'鯨','車'}");
strcpy((sita)[10],"{'食べた','殺した','割った','蹴飛ばした','打ち上げた','抱きしめた','飛んだ','破った','シカトした','焼いた'}");
srand((unsigned)time(NULL));
printf("今日の出来事\n");
for(i=1;i<=10;i++){
t=rand()/32768*10;
u=rand()/32768*10;
s=rand()/32768*10;
a=rand()/32768*10;
b=rand()/32768*10;
printf("%sが%sと%sで%sを%s\n",(tomodati)[t],(taninn)[u],(doko)[s],(nani)[a],(sita)[b]);
}
}

ダメなところを教えてください。


No.2075

間違っているところ
投稿者---差猫(2002/07/13 15:58:51)


strcpyの使い方が間違っています。
配列内には{}という文字は入っていないので。
あと、乱数がint型で求められるのでrand()を32768で割った時点で0になってしまいます(rand()<=32767のとき)

私もぱたぱたさんのを参考にして作ってみました。
短時間で作ったので不具合等があるかもしれません。


int main(void)
{
	char *tomodati[10] = {"北野","森田","杉本","芳賀","駿河","長谷川","萩本","碇矢","伊東","三宅"};
	char *taninn[10] = {"北野","森田","杉本","芳賀","駿河","長谷川","萩本","碇矢","伊東","三宅"};
	char *doko[10] = {"梅田","本牧","栄","中洲","羊ヶ丘","紙屋町","長町","三宮","小倉","嵐山"};
	char *nani[10] = {"家","ボールペン","大河ドラマ","海鮮チャーハン","道路標識","全米","輪ゴム","1000点","肩たたき拳","フェリー"};
	char *sita[10] = {"壊した","作った","値上げした","研究した","無茶苦茶にした","なかったことにした","賭けた","断念した","支配した","席巻した"};
	int t,u,s,a,b;
	srand((unsigned)time(NULL));
	printf("今日の出来事\n");
	t=rand()%10;
	u=rand()%10;
	s=rand()%10;
	a=rand()%10;
	b=rand()%10;
	printf("%sが%sと%sで%sを%s。\n",tomodati[t],taninn[u],doko[s],nani[a],sita[b]);
	return 0;
}




No.2076

訂正
投稿者---差猫(2002/07/13 16:03:20)


誤:肩たたき拳
正:肩たたき券
です。
どうでもいい間違いですが。



No.2077

Re:誰がいつどこで何をどうしたというプログラムを作りたい
投稿者---ともじ(2002/07/13 16:14:36)


こんにちは。

>ダメなところを教えてください。

ポインタの配列で文字列を扱うことがまだ曖昧なようです。
10-3.ポインタと文字列をご確認ください。