No.2
- 回答日時:
「全然読める」は日本語じゃねぇ
「問題なく読める」だろうが。
ランダムにサイコロの目を出して、2次元配列に入れるんですか?
普通に
ans[1]=「1のでた回数」
ans[2]=「2のでた回数」
じゃだめなの?
No.3
- 回答日時:
何度も同じ問題投稿してるみたいですが、
https://oshiete.goo.ne.jp/qa/9312396.html
https://oshiete.goo.ne.jp/qa/9316738.html
一体どうしたんでしょうねぇ。
一体自分でどこまでプログラムして何が分からなかったんでしょう。
No.5
- 回答日時:
#include <stdio.h>
unsigned int roll_dice() {
return rand() % 6;
}
void print_array(unsigned int* arr, int size) {
int i;
puts("サイコロを100回振った場合の結果");
for (i = 0; i < size; i++) {
printf("%dの目:%d回\n", i + 1, arr[i]);
}
}
int main(void) {
unsigned int count_roll_of_dice[][6] = { {0, 0, 0, 0, 0, 0} };
int i;
srand(time(0));
for (i = 0; i < 100; i++) {
count_roll_of_dice[0][roll_dice()]++;
}
print_array(count_roll_of_dice, sizeof(count_roll_of_dice) / sizeof(unsigned int));
return 0;
}
---
>#include <stdlio.h>のみでプログラムする方法がわからないのです。
#include <stdlib.h>も#include <time.h>も必要ありません。
22年後あたりにどうなるかは分かりませんが。
No.6
- 回答日時:
元の問題に
「サイコロを100振って(サイコロの目を100回入力し)」
とあります。これを素直に受けとると
(1)現実世界で、サイコロを振る
(2)出た目をコンピュータに入力する
(3)以上を100回繰り返す
(4)コンピュータが、入力された目のヒストグラムを出力する
ということになります。
作るプログラムは
「100個の数値(1〜6)を受け取り、各数値の個数を数え、結果を出力する」
となります。
これなら、#include <stdio.h> だけ事足りるのでは?
サイコロを振る=コンピュータで乱数を発生させる
という意味で使われているなら、
https://oshiete.goo.ne.jp/qa/9316738.html
の#2の通りです。
補足すると。
C言語には、「宣言されていない関数が使われたら、『任意引数で戻り値intの関数』として宣言されたことにする」というルールが有ります(有りました)
ここの#5にあるプログラムでは、 rand(),srand(),time()に「暗黙の関数宣言」を使っているので、stdlib.h,time.hを#includeしなくても動作します。
ですが、C言語の新しい規格では、暗黙の関数宣言が禁止されたので、このような使い方はできません。
stdlib.h,time.hを#includeするのが行儀のよいプログラムです。
> 配列の[] [] 二つ使ってやる
こちらは、意図がわかりません。
なぜ、「配列の[] [] 二つ使ってや」らなければならないのでしょうか?
問題の文章からは、その必要性が読み取れません。
int a[N][M] ;
のような二次元配列を使うのは、 データをN*M の格子状に扱うといろいろと便利になるときです。
例) 画像の各座標の色を img[Y][X] の記憶させる。
この問題の場合、そのような「格子状にして扱うと便利になるようなデータ」というのが有りません。
#5のように、二次元配列を無理矢理使うこともできます。
ですが、そんな無茶をするよりは、一次元配列を使うのが自然です。
No.7
- 回答日時:
うん、そうですね。
#6氏の言う通り、だと思います。#5の解のstdlib.hとtime.hが要らない、ってのはあくまで実装依存で、コンパイラによっては「コンパイラが気を使って」(笑)、自然にstdlib.hとtime.hを呼び出してくれるから、って事なだけで「要らない」って事はありえません。
実は試してみたんですが、 #5のプログラムにはちとバグがあって(多分コンパイラを通してないんでしょう)、そこを修正してコンパイルさせてみると、GCC
GCC:
https://gcc.gnu.org
と言うコンパイラでは、
~/project/Oshiete goo/utakata $ gcc 0509.c -o 0509
~/project/Oshiete goo/utakata $
と問題なくコンパイルしてくれるんですが、一方、最近人気があるClang
Clang:
http://clang.llvm.org
と言うコンパイラでは
~/project/Oshiete goo/utakata $ clang 0509.c -o 0509
0509.c:4:10: warning: implicit declaration of function 'rand' is invalid in C99
[-Wimplicit-function-declaration]
return rand() % 6;
^
0509.c:19:3: warning: implicit declaration of function 'srand' is invalid in C99
[-Wimplicit-function-declaration]
srand(time(0));
^
0509.c:19:9: warning: implicit declaration of function 'time' is invalid in C99
[-Wimplicit-function-declaration]
srand(time(0));
^
3 warnings generated.
~/project/Oshiete goo/utakata $
と3箇所警告が出ます。
ものの見事にrand()、srand()、time(0)の三箇所が引っかかってますね。これらはstdlib.hとtime.hを#includeしてないから、です。
もっとも、ClangはC99と言う国際基準を基本動作としてるみたいで、
C99:
https://ja.wikipedia.org/wiki/C99
オプションでそれ以前の古いCの国際規格、C89を指定すればコンパイルが通ると言えば通るのですが。
~/project/Oshiete goo/utakata $ clang -std=c89 0509.c -o 0509
~/project/Oshiete goo/utakata $
もし、これらの意味が分からない、なら要するに
・Cに付属している疑似乱数発生関数rand()を使いたい
・乱数の初期値を上手い具合に変えたい
のならstdlib.hとtime.hは、#5の回答でも「#includeした方が間違いない」と言う事です。
そっちの方が手間が省ける、余計な警告は受けない、と言う事です。
(ちなみに、WindowsのVisual C++辺りは試してないんですが、恐らくC99以降は国際規格には準拠していない、って話なんで、ひょっとしたらそのままでも「コンパイラが気を使って」(笑)コンパイルを通してくれるかもしれません)
あと、 #6氏の言う通り、写真の問題文見るとヘンなんですよね〜。
ひょっとしたら #6氏の言う通り、
「実際手元でサイコロを振って」
その記録を入力するだけのプログラムを作れ、って事なのかしらん。
100回「実際に」サイコロを振ってその結果をチマチマと入力していく・・・。
良く分からん問題ですね(笑)。それなら確かにstdio.hだけで済むと言えば済む問題ですが・・・・・・。
No.8
- 回答日時:
> 質問者様
100回分の結果の入力は、どうやって行うのでしょうか?
手入力?
ファイル等から読み込み? その場合のフォーマットは?
> 配列の[] [] 二つ使ってやる
これは質問者様の最初の補足コメントで無視して下さいとあります。
> GCC:
> と言うコンパイラでは、
> と問題なくコンパイルしてくれるんですが
gccでもちゃんとwarningになりましたよ?
----------
$ gcc test.c
test.c: In function 'roll_dice':
test.c:4:9: warning: implicit declaration of function 'rand' [-Wimplicit-function-declaration]
return rand() % 6;
test.c: In function 'main':
test.c:19:2: warning: implicit declaration of function 'srand' [-Wimplicit-function-declaration]
srand(time(0));
test.c:19:8: warning: implicit declaration of function 'time' [-Wimplicit-function-declaration]
srand(time(0));
test.c:24:14: warning: passing argument 1 of 'print_array' from incompatible pointer type [-Wincompatible-pointer-types]
print_array(count_roll_of_dice, sizeof(count_roll_of_dice) / sizeof(unsigned int));
test.c:7:6: note: expected 'unsigned int *' but argument is of type 'unsigned int (*)[6]'
void print_array(unsigned int* arr, int size) {
----------
No.10
- 回答日時:
> 自分でキーボードから入力して下に画像の結果が表示れるやつです
自分で実際にサイコロ振って、結果を入力して表示させるだけ、なら要するに次のコードでイイんじゃないですかね?
#include <stdio.h>
int main(void) {
int result[7] = {0};
int i;
for (i = 1; i < 7; i++)
scanf("%d", &result[i]);
printf("サイコロを 100回振った場合の結果\n");
for (i = 1; i < 7; i++)
printf("%dの目 : %d回\n", i, result[i]);
return 0;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
字面がカッコいい英単語
あなたが思う「字面がカッコいい英単語」を教えてください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
C言語のサイコロシミュレート
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数から配列を返すには?
-
配列の要素数に変数を入れたい...
-
MFCのCArrayを使った二次元配列
-
C言語の2次配列
-
プログラム 数列の和
-
c言語プログラミング 等差数列...
-
ループの条件設定について
-
すいません 下の修正版です。
-
100の階乗のプログラムって
-
数字を順に並べる
-
MFC - ダイアログボックスのPic...
-
c言語 構造体
-
C言語 数値の連続入力について
-
C言語 配列の長さの上限
-
malloc呼び出し時のセグメンテ...
-
char型にint型の数値を代入する。
-
C++のnewで確保したメモリーの...
-
Run-Time Check Failure #3とい...
-
プログラムによく出てくるst...
-
C言語でファイルの中身をソー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数から配列を返すには?
-
配列の要素数に変数を入れたい...
-
c言語
-
c言語プログラミング 等差数列...
-
define で 配列
-
構造体のextern方法
-
C#で構造体の配列を持った構造...
-
C言語において、 配列要素をひ...
-
MFC - ダイアログボックスのPic...
-
C言語の2次元配列 容量が大き...
-
2次元配列のマスを数える方法...
-
C言語 ファイルの指定された行...
-
Cのエラー
-
コンボボックスでデフォルト値...
-
C#で配列が空かを判定するには?
-
C#でのフィボナッチ数列
-
ポインタを使って構造体の配列...
-
C言語の課題が出たのですが自力...
-
MFCのCArrayを使った二次元配列
-
C言語の配列のコピーについて
おすすめ情報
上の二行は誤字なので無視してください
全然読めるじゃないですか
#include <stdlio.h>のみでプログラムする方法がわからないのです。