所有可能的POWERBALL号码

时间:2014-12-22 04:59:23

标签: c++

代码不需要在一个控制台行或文本文件中重复强力球号码。我认为它在if语句中的某处。前五个数字是白色球,输出行中的结束数字位于选项卡之后。 1 2 3 59 59 1

#include <iostream>
#include <fstream>
using namespace std;

void main()
{
    ofstream out_stream;
    out_stream.open("powerball.txt"); // text file
    for (int i = 1; i <= 59; i++)
    {
        for (int j = 1; j <= 59; j++) // loop and if statements for powerball repeat check
        {
            if (j == i)
            {
                j = i + 1;
            }
            if (j == 60)
            {
                j = j - 1;
            }
            for (int k = 1; k <= 59; k++) // loop and if statements with powerball repeat check
            {
                if (k == i)
                {
                    k = k + 1;
                    if (k == j)
                    {
                        k = k + 1;
                    }
                }
                if (k == 60)
                {
                    k = k - 1;
                }
                for (int l = 1; l <= 59; l++) // loop and if statements with powerball repeat check
                {
                    if (l == i)
                    {
                        l = l + 1;
                        if (l == j)
                        {
                            l = l + 1;
                            if (l == k)
                            {
                                l = l + 1;
                            }
                        }
                    }
                    if (l == 60)
                    {
                        l = l - 1;
                    }
                    for (int m = 1; m <= 59; m++) // loop and if statements for powerball repeat check
                    {
                            if (m == i)
                            {
                                m = m + 1;
                                if (m == j)
                                {
                                    m = m + 1;
                                    if (m == k)
                                    {
                                        m = m + 1;
                                        if (m == l)
                                        {
                                            m = m + 1;
                                        }
                                    }
                                }
                            }
                        if (m == 60)
                        {
                            m = m - 1;
                        }
                        for (int n = 1; n <= 35; n++) // red ball and output count
                            {
                                out_stream << i << " " << j << " " << k << " " << l << " " << m << "\t" << n << "\n";
                                cout << i << " " << j << " " << k << " " << l << " " << m << "\t" << n << "\n";
                            }
                        }
                    }
                }
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

正如本所说,if语句如果有重复则加1则不起作用。首先,每个if语句都需要检查之前的所有变量,以确保没有重叠。 恩。 &#34; m&#34;中的if语句循环如下:

if(m==l || m==k || m==j || m==i){
    m++;
}

然而,如果没有连续的数字,例如k = 1,j = 2,这只会解决问题。您需要使用while循环来解决此问题,使您的语句如下:

while(m==l || m==k || m==j || m==i){
    m++;
}

总之,要列出所有可能性,您的计划将是     #包括     #包括     使用namespace std;

void main()
{
    ofstream out_stream;
    out_stream.open("powerball.txt"); // text file
    for(int i=1; i<=59; i++){
        for(int j=1; j<=59; j++){
            while(j==i){
                j++;
            }
            if(j>59) break;
            for(int k=1; k<=59; k++){
                while(k==j || k==i){
                    k++;
                }
                if(k>59) break;
                for(int l=1; l<=59; l++){
                    while(l==k || l==j || l==i){
                        l++;
                    }
                    if(l>59) break;
                    for(int m=1; m<=59; m++){
                        while(m==l || m==k || m==j || m==i){
                            m++;
                        }
                        if(m>59) break;
                        for (int n = 1; n <= 35; n++) // red ball and output count
                            {
                                out_stream << i << " " << j << " " << k << " " << l << " " << m << "\t" << n << "\n";
                                cout << i << " " << j << " " << k << " " << l << " " << m << "\t" << n << "\n";
                            }
                        }
                    }
                }
            }
        }
    }

根据您的需要,更好的解决方案是随机选择5个数字,除非您需要列出所有这些数字。


编辑: 确保你有足够的磁盘空间来运行它,它会生成一个~352GB的文件,里面装满了数字。