如何在 C++ 中使用用户输入的骰子数和骰子面来添加骰子卷?

How to add up a die roll using user inputted number of die and sides of die in C++?

我的掷骰子程序在掷骰子时没有保持在用户设置的参数范围内时遇到了问题。该计划是:

我收到的输出示例是:

我需要的是这样的输出:

我很不擅长编码,所以请放轻松。这是我目前拥有的:

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int dice (int nrDice, int nrSides)
{
   int result = 0;
   for (int i = 0; i < nrDice; i++)
   {
      result += ((rand()% nrSides) + 1);
      cout << result << endl;
   }

   return result;
}

int main ()
{  
   int nrDice = 1, nrSides;
   srand(time(0));

   cout << "Enter number of die being used: " << endl;
   cin >> nrDice;

   cout << "Enter the number of sides: " << endl;
   cin >> nrSides;

   cout << nrDice << "d" << nrSides << " = " << dice (nrDice, nrSides) << endl;

   return 0;
}

你只需要输出你的roll,而不是累计数:

int dice (int nrDice, int nrSides)
{
    const char* sep = "";
    int result = 0;
    for (int i = 0; i < nrDice; i++)
    {
        int roll = ((rand()% nrSides) + 1);
        result += roll;
        std::cout << sep << roll;
        sep = " + "
    }
    std::cout << result << endl;

    return result;
}

Demo

您已经创建了函数 :) 这很好。

现在,试试这个功能有一个目的,打印或掷骰子。

std::vector<int> dice (int nrDice, int nrSides)
{
    std::vector<int> result;
    for (int i = 0; i < nrDice; i++)
    {
        result.push_back((rand() % nrSides) + 1);
    }
    return result;
}

void print(std::vector<int>& v, const char* separator)
{
    const char* sep = "";
    for (auto e : v) {
        std::cout << sep << e;
        sep = separator;
    }
}

int accumulate(std::vector<int>& v)
{
    return std::accumulate(v.begin(), v.end(), 0);
}

Demo