Отображение десятичных значений в результате после цикла в C - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь завершить программу, которая отображает десятичную дробь (действующую в процентах), в которой бриллиант, булава, сердце или лопата в колоде карт будут вытягиваться из 1000 раз.Вот код, который я сделал:

#include <stdio.h>

int main()
{
   unsigned int freq1 = 0;
    unsigned int freq2 = 0;
     unsigned int freq3 = 0;
      unsigned int freq4 = 0;

        for (unsigned int draw = 1; draw <= 1000; ++draw) {
            int face = 1 +rand() % 4;

            switch (face) {

                case 1:
                ++freq1;
                break;

                case 2:
                ++freq2;
                break;

                case 3:
                ++freq3;
                break;

                case 4:
                ++freq4;
                break;
            }
        }

        printf("Percent of diamonds is %u\n", freq1);
        printf("Percent of clubs is %u\n", freq2);
        printf("Percent of hearts is %u\n", freq3);
        printf("Percent of spades is %u\n", freq4);

}

Когда я запускаю код, он получает правильные нарисованные числовые значения из 1000. Вот ввод:

Percent of diamonds is 249                                                                                                                                                
Percent of clubs is 252                                                                                                                                                   
Percent of hearts is 258                                                                                                                                                  
Percent of spades is 241 

Япытаясь заставить программу ввести вычисленное десятичное значение из этих чисел, например:

Percent of diamonds is 0.25

До сих пор я пытался исправить это, объявив результаты как числа с плавающей запятой и рассчитав частоту, вычисленную в каждом из них.Draw делится на 1000, так что результатом будет десятичное значение, которое я пытаюсь отобразить.Вот мой попытанный код:

 #include <stdio.h>

int main()
{
   unsigned int freq1 = 0;
    unsigned int freq2 = 0;
     unsigned int freq3 = 0;
      unsigned int freq4 = 0;
      float res1, res2, res3, res4;

        for (unsigned int draw = 1; draw <= 1000; ++draw) {
            int face = 1 +rand() % 4;

            switch (face) {

                case 1:
                ++freq1;
                break;

                case 2:
                ++freq2;
                break;

                case 3:
                ++freq3;
                break;

                case 4:
                ++freq4;
                break;
            }
        }

    res1= freq1/1000;
    res2= freq2/1000;
    res3= freq3/1000;
    res4= freq4/1000;

        printf("Percent of diamonds is %.2f\n", res1);
        printf("Percent of clubs is %.2f\n", res2);
        printf("Percent of hearts is %.2f\n", res3);
        printf("Percent of spades is %.2f\n", res4);
}

Однако, когда я попытался запустить его, я закончил с таким результатом ввода:

Percent of diamonds is 0.00                                                                                                                                               
Percent of clubs is 0.00                                                                                                                                                  
Percent of hearts is 0.00                                                                                                                                                 
Percent of spades is 0.00   

Извинения за длинный пост, но я быСпасибо за любую помощь, чтобы решить эту проблему, так как это единственное, что мне нужно решить, чтобы завершить эту программу.Спасибо!

1 Ответ

0 голосов
/ 04 марта 2019

Проблема в том, что что-то вроде res1= freq1/1000 сначала вычисляется как целое число, поскольку оба аргумента являются целыми числами, а затем преобразуется в число с плавающей точкой.Вместо этого используйте что-то вроде res1= freq1/1000.0, чтобы хотя бы один аргумент представлял собой число с плавающей запятой, а второй автоматически преобразовывался в число с плавающей запятой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...