No.11ベストアンサー
- 回答日時:
> 配列二つ使うとどうなりますか!?
殆ど変わらんでしょ。
// ここから
#include <stdio.h>
int main(void) {
int result[][7] = {{0}};
int i;
for (i = 1; i < 7; i++)
scanf("%d", &result[0][i]);
printf("サイコロを 100回振った場合の結果\n");
for (i = 1; i < 7; i++)
printf("%dの目 : %d回\n", i, result[0][i]);
return 0;
}
// ここまで
No.12
- 回答日時:
サイト?
いや、サイトじゃなくってEmacsってテキストエディタです。
Emacs:
https://www.gnu.org/software/emacs/
UNIX/Linuxだと有名なテキストエディタですね。
Windowsじゃあんま有名じゃないですが、一応Windows版もあります。
NTEmacs:
http://cha.la.coocan.jp/doc/NTEmacs.html
画面上部がCのプログラムを編集する部分(バッファとか呼びますが)、下がWindowsで言うDOS窓(コマンドプロンプト)で、eshellと言う端末プログラム(ターミナル等と言いますが)を走らせて、上で書かれたソースコードをコンパイル->実行->入力->結果表示、とやってます。
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;
}
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.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.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.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.3
- 回答日時:
何度も同じ問題投稿してるみたいですが、
https://oshiete.goo.ne.jp/qa/9312396.html
https://oshiete.goo.ne.jp/qa/9316738.html
一体どうしたんでしょうねぇ。
一体自分でどこまでプログラムして何が分からなかったんでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# c言語について array[i]-‘0’ これってどーゆー意味ですか? (ちなみに16進数を10進数 5 2022/12/06 18:39
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数から配列を返すには?
-
配列の要素数に変数を入れたい...
-
C言語の2次元配列 容量が大き...
-
構造体のextern方法
-
C言語の課題が出たのですが自力...
-
ポインタを使って構造体の配列...
-
C#で構造体の配列を持った構造...
-
C言語の配列のコピーについて
-
define で 配列
-
2番目の最大値を求める
-
エラー:浮動小数点の不正な使用
-
c言語
-
配列の不正アクセスについて
-
C言語から質問です。
-
C#でのフィボナッチ数列
-
コンボボックスでデフォルト値...
-
関数のプロトタイプ宣言
-
C言語 構造体でつまずいています
-
[C++]const int と配列
-
2 ~ 200 の素数 a, b, c (a < ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数から配列を返すには?
-
配列の要素数に変数を入れたい...
-
c言語
-
構造体のextern方法
-
define で 配列
-
C#で構造体の配列を持った構造...
-
C言語において、 配列要素をひ...
-
コンボボックスでデフォルト値...
-
2番目の最大値を求める
-
C言語の2次元配列 容量が大き...
-
C#で配列が空かを判定するには?
-
MFCのCArrayを使った二次元配列
-
C言語の課題が出たのですが自力...
-
C言語 ファイルの指定された行...
-
Cのエラー
-
ポインタを使って構造体の配列...
-
配列のアドレス部
-
char型配列をint型に代入するには
-
MFC - ダイアログボックスのPic...
-
C言語から質問です。
おすすめ情報
上の二行は誤字なので無視してください
全然読めるじゃないですか
#include <stdlio.h>のみでプログラムする方法がわからないのです。