C++ 如何显示骰子模拟器结果的百分比输出

霍夫塞帕

C++ 的新手。对于我们教授要求我们制作的这个骰子模拟器,我无法显示正确的格式 + 结果的百分比形式。我将在这里复制/粘贴她的说明,并希望得到有关如何纠正我在程序中百分比输出格式方面的错误的帮助。谢谢!

指示:

该程序应使用 C++ 随机数函数模拟单个骰子(骰子)(1-6) 的滚动。首先询问用户他们希望骰子(骰子)掷多少次。

接下来,让程序模拟用户请求的骰子(骰子)的滚动次数,并跟踪每次掷骰时骰子(骰子)落在哪个数字上。在程序结束时打印出一份报告,显示骰子(骰子)卷落在每个数字上的次数以及骰子(骰子)卷落在每个数字上的总次数的百分比。

不要在这方面使用函数或数组 - 使用我在讲座中向您展示的内容,您应该在讲座中始终聆听以获取正确的技巧,如果您忘记了我在讲座中所说的内容,请查看幻灯片。

输入验证:不允许用户输入小于 1 的数字作为他们想要掷骰子的次数。

输出应该如何(左侧)与我的输出(右侧):

在此处输入图片说明

    #include <iostream>
    #include <iomanip>
    #include <string>
    #include <cstdlib>
    #include <ctime>
    using namespace std;

    int main()
    {
    srand((unsigned int)time(NULL));

    int timesRolled;
    int rolled;
    float num1 = 0;
    float  num2 = 0;
    float  num3 = 0;
    float  num4 = 0;
    float  num5 = 0;
    float  num6 = 0;

cout << "How many times would you like to roll the dice?" << endl;
cin >> timesRolled;

for (int i = 0; i < timesRolled; i++)
    {
        rolled = rand() % 6 + 1;

        if (rolled == 1)
        {
            num1++;
        }

        else if (rolled == 2)
        {
            num2++;
        }

        else if (rolled == 3)
        {
            num3++;
        }

        else if (rolled == 4)
        {
            num4++;
        }

        else if (rolled == 5)
        {
            num5++;
        }

        else if (rolled == 6)
        {
            num6++;
        }
    }

while (timesRolled < 1)
    {
        cout << "This is an invalid number. " << endl
             << "The number of rolls should be equal to or greater than 1." << endl
             << "Please enter again." << endl;
        cin  >> timesRolled;
    }

   cout << "\nDICE ROLL STATISTICS" << endl << endl
    << "# Rolled     # Times     % Times" << endl
    << "--------     --------    --------" << endl
    << setw(7) << "1" << setw(17) << fixed << setprecision(0) << num1 << setw(17) << fixed << setprecision(2) << (num1 / timesRolled) * 100 << "%" << endl
    << setw(7) << "2" << setw(17) << fixed << setprecision(0) << num2 << setw(17) << fixed << setprecision(2) << (num2 / timesRolled) * 100 << "%" << endl
    << setw(7) << "3" << setw(17) << fixed << setprecision(0) << num3 << setw(17) << fixed << setprecision(2) << (num3 / timesRolled) * 100 << "%" << endl
    << setw(7) << "4" << setw(17) << fixed << setprecision(0) << num4 << setw(17) << fixed << setprecision(2) << (num4 / timesRolled) * 100 << "%" << endl
    << setw(7) << "5" << setw(17) << fixed << setprecision(0) << num5 << setw(17) << fixed << setprecision(2) << (num5 / timesRolled) * 100 << "%" << endl
    << setw(7) << "6" << setw(17) << fixed << setprecision(0) << num6 << setw(17) << fixed << setprecision(2) << (num6 / timesRolled) * 100 << "%" << endl;

system("PAUSE");
return 0;
}

您可以看到我在哪里尝试使用 setprecision(在我的程序结束时)来操纵我最终百分比数字中的小数输出,但它似乎不起作用,这就是我需要帮助的地方。

亚历克斯

您的问题是整数除法,例如:

(num1 / timesRolled) * 100 = 10 / 50 * 100 = 0 * 100 = 0;

请改用浮点值或在除法之前强制转换:

 float num1 = 0;

或者

(static_cast<float>(num1) / timesRolled) * 100

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

猪的骰子模拟器,C ++

来自分类Dev

骰子模拟器int C#

来自分类Dev

C ++程序以百分比显示投票,但未显示正确的结果

来自分类Dev

您如何计算用C输出的文件百分比?

来自分类Dev

显示C ++程序中进程完成的百分比

来自分类Dev

如何显示具有给定百分比的项目?Unity C#

来自分类Dev

百分比计算和从这些百分比输出图像 c# WPF

来自分类Dev

如何使此颜色百分比功能更快?C ++

来自分类Dev

如何从NSString中获取百分比-目标C

来自分类Dev

C ++中的准确百分比

来自分类Dev

C ++投币百分比

来自分类Dev

为什么C#为简单的百分比公式输出0.0?

来自分类Dev

奇怪的字符串格式百分比c#输出

来自分类Dev

如何在C / C ++中将百分比转换为正态分布的z分数?

来自分类Dev

如何在C#中计算数字的百分比?

来自分类Dev

C如何计算没有浮点精度的百分比(千)

来自分类Dev

如何使用C ++计算1-100数组中的覆盖率百分比?

来自分类Dev

C ++ Windows API-如何获取字体缩放百分比

来自分类Dev

如何使用C ++计算1-100数组中的覆盖率百分比?

来自分类Dev

如何使用C#中的按钮执行简单的百分比计算?

来自分类Dev

如何在C#中计算数字的百分比?

来自分类Dev

获取C ++中数字的百分比

来自分类Dev

什么是C中的反斜杠百分比转义?

来自分类Dev

C中的CPU使用率(百分比)

来自分类Dev

C随百分比影响随机化

来自分类Dev

C#计算AES加密/解密的百分比

来自分类Dev

计算C程序中剩余的百分比

来自分类Dev

获取整数c#的分层金额的百分比

来自分类Dev

C#DotNet.Highcharts列datalabel百分比