プロが教えるわが家の防犯対策術!

c言語の配列を使ってサイコロを100回振って1から6の目が何回出たかを表示するプログラムはどのようになりますか?
1の目 ?回
2の目 ?回 と、

質問者からの補足コメント

  • このような結果を表示したいです

    「c言語の配列を使ってサイコロを100回振」の補足画像1
      補足日時:2016/06/19 23:10

A 回答 (7件)

#include <stdio.h>


#include <stdlib.h>
#include <time.h>
#include <windows.h>

int main(void)
{
int dice=0, shake=100;
int array[6]={0};
srand((unsigned)time(NULL));

for(int i=1; i<=shake; ++i){
dice=rand()%6+1;
switch(dice){
case 1:array[0]+=1;break;
case 2:array[1]+=1;break;
case 3:array[2]+=1;break;
case 4:array[3]+=1;break;
case 5:array[4]+=1;break;
case 6:array[5]+=1;break;
default:break;
}
}
system("cls");
printf("\n サイコロを%d回振った場合の結果\n", shake);
for(int j=0; j<6; ++j){
printf(" %dの目 : %2d\n", j+1, array[j]);
}
return 0;
}
※少しだけ修正してます。

実行した結果は、画像のようになりますけど、違いますか?
「c言語の配列を使ってサイコロを100回振」の回答画像7
    • good
    • 0

最後のところ間違えてました。


diceって書いたところは、j+1に訂正
for(int j=0; j<6; ++j){
printf("%dの目 %2d回\n", j+1, array[j]);
}
    • good
    • 1
この回答へのお礼

補足のような結果が表示されますか?

お礼日時:2016/06/19 23:11

#include <stdio.h>


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

int main(void)
{
int dice=0;
int array[6]={0};
srand((unsigned)time(NULL));

for(int i=1; i<=100; ++i){
dice=rand()%6+1;
switch(dice){
case 1:array[0]+=1;break;
case 2:array[1]+=1;break;
case 3:array[2]+=1;break;
case 4:array[3]+=1;break;
case 5:array[4]+=1;break;
case 6:array[5]+=1;break;
default:break;
}
}
for(int j=0; j<6; ++j){
printf("%dの目 %2d\n", dice, array[j]);
}
}
    • good
    • 0

#include <stdio.h>


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

unsigned int roll_dice() {
return rand() % 6;
}

void print_array(unsigned int* arr, size_t size) {
size_t i;
for (i = 0; i < size; i++) {
printf("%dの目:%d\n", i+1, arr[i]);
}
}

int main(void) {
unsigned int count_roll_of_dice[] = { 0, 0, 0, 0, 0, 0 };
size_t i;

srand( (unsigned) time(NULL));

for (i = 0; i < 100; i++) {
count_roll_of_dice[roll_dice()]++;
}
print_array(count_roll_of_dice, sizeof(count_roll_of_dice) / sizeof(unsigned int));

return 0;
}
    • good
    • 1

サイコロ振るのは人間ですよね?


コンパイルが通るかどうかすら確認していませんが、

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

int
main()
{
int result[6] = { 0, 0, 0, 0, 0, 0};
int i, j, k;
char input[3];

for (i = 1; i <= 100; i ++) {
printf("%d回目です。サイコロを振って出た目はいくつですか(1~6)?", i);
fgets(input, sizeof(input), stdin);
j = atoi(input);
if (j > 6 && j < 1) {
printf("1~6の数字を入力して下さい\n");
i --;
continue;
}
result[j - 1] ++;
}

for (k = 0; k < 6; k ++) {
printf("%dの目%d回\n", k + 1, result[k]);
}
exit(0);
}
    • good
    • 0

#include <stdio.h>


#include <stdlib.h>

int dice(void);
void roll_dice(int count, int result[]);

int main(void) {
 int array[] = { 0, 0, 0, 0, 0, 0, 0 };
 int i = 1;
 roll_dice(100, array);
 while (i < sizeof(array)/sizeof(array[0])) {
  printf("%dの目 %d回\n", i, array[i]);
  i++;
 }

 return 0;
}

int dice(void) {
 return random()%6+1;
}

void roll_dice(int count, int result[]) {
 int k;
 while (count > 0) {
  k = dice();
  result[k] += 1;
  count--;
 }
}
    • good
    • 1

サイコロを振るためにモーターかなんかを動かしたり, 何が出たかを調べるためにカメラから画像をキャプチャするとか, いろいろ面倒なこ

とをしないとダメですねぇ.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています