質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

183閲覧

要素数を演算に使いたい

h_proc

総合スコア68

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2018/12/06 09:45

編集2018/12/06 13:09

配列に格納されている要素数を用いて演算を行いたいのですが、やり方が分かりません。
例えば、dt[1]に18が入っていたとして、この値を100で割りたいとき、どうしたらよいのでしょうか。試しにn=dt[1]として、n/100を実行してみたのですが、上手くいきませんでした。
よろしくお願いいたします。

追記
1~3の乱数を100回表示させ、1~3のそれぞれの発生割合を計算したいです。rateの値が全て0で表示されてしまいます。

c

1int main(void) 2{ 3 int dt[4] = { 0 }; 4 5 for (int i = 0; i < 100; i++) { 6 dt[0] = dice(); 7 if (dt[0] == 1) { 8 ++dt[1]; 9 } 10 else if (dt[0] == 2) { 11 12 ++dt[2]; 13 } 14 else if (dt[0] == 3) { 15 16 ++dt[3]; 17 } 18 } 19 for (int i = 1; i <= 3; i++) { 20 printf("THe number of times which %d come out is %d\n", i, dt[i]); 21 int rate=0; 22 rate = (dt[i] / 100) * 100; 23 printf("The pasentage of %d come out is %d\n", i, rate); 24 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dice142

2018/12/06 09:46

書いたソースコードや試してみた入力・出力を追記してください。このままでは「それでできます」としか答えようがないです
guest

回答3

0

ベストアンサー

rate = (dt[i] / 100) * 100;

int / intintになるので、小数点以下切り捨てになります。
dt[i] / 100がそれに値するので、どちらかを小数型にキャストして計算しましょう。


また、計算結果を受ける変数がintだと計算結果が小数点以下切り捨てになるので
小数以下も必要であれば受ける変数を小数型にする必要があります。

投稿2018/12/06 13:12

編集2018/12/07 01:20
dice142

総合スコア5158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

h_proc

2018/12/06 14:35

解決しました。ありがとうございます。
h_proc

2018/12/06 14:42

たびたびすみません。rate = (dt[i] / 100.0);のように変換したところ、やはり0しか表示されませんでした。rateの定義もdouble型にするべきなのでしょうか。
dice142

2018/12/07 01:21

> rateの定義もdouble型にするべきなのでしょうか。 回答に追記しました。 > rate = (dt[i] / 100.0);のように変換したところ、やはり0しか表示されませんでした。 それは計算以前の問題かと思います。 dt[i]に値が入ってないのではないですか?
guest

0

状況が全く書かれていないので、推測ですが、

n/100を実行してみたのですが、

Cだと整数同士の除算は整数除算になります。100.0で割ると商は実数になります。

投稿2018/12/06 10:12

otn

総合スコア84491

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

c

1#include <stdio.h> 2#include <stdlib.h> 3 4int main(void) 5{ 6 int a[10] ={ 1,2,3,4,5,6,7,8,9,10}; 7 printf("%f\n", a[0] / 10.); 8 printf("%f\n", a[0] / (double)(sizeof(a) / sizeof(*a))); 9}

投稿2018/12/06 10:16

asm

総合スコア15147

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問