c++_双色球辅助

c++_双色球辅助

vs2017分文件

//c_Ball.h 文件

#pragma once

#include <iostream>

#include <cctype>

#include <conio.h>

#include <string>

#include <fstream>

#include <cstring>

using namespace std;

 

#define RED_BALL 7

class c_Ball

{

public:

c_Ball();

~c_Ball();

void main_Display(void); //显示主界面

void count_Red(); //计算红球组合

void count_Red_Blue(); //计算蓝球组合

void add_Ball(); //添加新的号码

void red_File(void); //读取文件

void red_File(string *strP); //读取文件

void show_Ball(void); //打印号码

private:

int m_cBall[RED_BALL];  //双色球

int  m_iRed_total; //红球组合总注

int m_iRed_Blue_total; // 红蓝球组合总注数

int m_iAdd_total; //添加的号码总数

string m_sUBall[RED_BALL]; //接收用户输入的号码

};

 

bool estimate_Ball(int *m_p); //判断红球各球之间不相等并且由左到右依次由小到大

int compare_Ball(string *str1, int i); //比较两数之间左数不可大于右数

 

 

 

 

 

//c_Ball.cpp文件

#include "c_Ball.h"

c_Ball::c_Ball()

{

m_iRed_total = 0;

m_iRed_Blue_total = 0;

m_iAdd_total = 0;

}

 

c_Ball::~c_Ball()

{

 

}

 

//判断红球各球之间不相等并且由左到右依次由小到大

bool estimate_Ball(int *m_p)

{

for (int i = 0;i < RED_BALL - 2;i++)

{

if (m_p[i] >= m_p[i + 1])

{

return false;

}

}

return true;

}

 

//显示号码

void c_Ball::show_Ball(void)

{

for (int i = 0; i < RED_BALL; i++)

{

cout << m_sUBall[i]<< " ";

}

cout << endl;

}

 

//读取文件

void c_Ball::red_File(void)

{

ifstream inFile;

inFile.open("add_Num.txt", ios_base::in);

if (!inFile.is_open())

{

cout << "Open file failure!" << endl;

exit(1);

}

while (!inFile.eof())

{

for (int i = 0; i < RED_BALL; i++)

{

inFile >> m_sUBall[i];

cout << m_sUBall[i] << " ";

}

cout << endl << endl;

m_iAdd_total++;

}

cout << "总计:" << m_iAdd_total << "注号码" << endl <<endl;

inFile.close();

cout << "按0退出!按其它任意键返回主界面!" << endl;

char m_cKey_red_File;

m_cKey_red_File = _getch();

switch (m_cKey_red_File)

{

case '0':

exit(1);

break;

default:

system("cls");

this->main_Display();

break;

}

 

}

 

//读取文件

void c_Ball::red_File(string *strP)

{

string m_stUBall[RED_BALL];

int m_iNum = 0;

 

ifstream inFile;

inFile.open("add_Num.txt", ios_base::in);

if (!inFile.is_open())

{

cout << "Open file failure!" << endl;

exit(1);

}

while (!inFile.eof())

{

int m_itNum = 0; //标记两个字符串是否全部相等,一共七个字符串,当=7时代表全相等 

for (int i = 0; i < RED_BALL; i++)

{

inFile >> m_stUBall[i];

if (m_stUBall[i] == strP[i])

{

m_itNum++;

}

}

if (m_itNum == 7)

{

m_iNum++;

}

}

inFile.close();

cout << "此号已开过" << m_iNum << "次!" << endl;

}

 

//比较两数之间左数不可大于右数

int compare_Ball(string *str1, int i)

{

int num1;

int num2;

//将输入的字符串转换为数字之后进行比较大小

if (str1[i - 1][1] != '\0')

{

num1 = (str1[i - 1][0] - '0') * 10 + (str1[i - 1][1] - '0');

}

else if (str1[i - 1][1] == '\0')

{

num1 = str1[i - 1][0] - '0';

}

 

if (str1[i][1] != '\0')

{

num2 = (str1[i][0] - '0') * 10 + (str1[i][1] - '0');

}

else if (str1[i][1] == '\0')

{

num2 = str1[i][0] - '0';

}

//转换好的数字分别赋给num1和num2进行比较

if (num1 >= num2)

{

return 1;

}

return 0;

}

 

//显示主界面

void c_Ball::main_Display(void)

{

cout << "OOOOOOOOOOOOOOOOO 双色球号码辅助 OOOOOOOOOOOOOOOOO" << endl << endl;;

cout << " 1> 计算红球组合次数" << endl << endl;

cout << " 2> 计算红蓝球组合次数" << endl << endl;

cout << " 3> 添加已开号码" << endl << endl;

cout << " 4> 显示已开号码" << endl << endl;

cout << " 0> 退出" << endl << endl;

cout << "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO" << endl;

char m_cKey_display;

cout << "请输入项目标签(1-4): ";

rst3:

cin >> m_cKey_display;

switch (m_cKey_display)

{

case '1':

this->count_Red();

break;

case '2':

this->count_Red_Blue();

break;

case '3':

this->add_Ball();

break;

case '4':

this->red_File();

break;

case '0':

exit(1);

break;

default:

cout << "请输入正确的标签!" << endl;

goto rst3;

break;

}

}

 

void c_Ball::count_Red()

{

for (m_cBall[0] = 1;m_cBall[0] <= 28;m_cBall[0]++)

{

for (m_cBall[1] = 2;m_cBall[1] <= 29;m_cBall[1]++)

{

for (m_cBall[2] = 3;m_cBall[2] <= 30;m_cBall[2]++)

{

for (m_cBall[3] = 4;m_cBall[3] <= 31;m_cBall[3]++)

{

for (m_cBall[4] = 5;m_cBall[4] <= 32;m_cBall[4]++)

{

for (m_cBall[5] = 6;m_cBall[5] <= 33;m_cBall[5]++)

{

if (true == estimate_Ball(m_cBall))

{

for (int i = 0;i < RED_BALL - 1;i++)

{

cout << m_cBall[i] << " ";

}

cout << endl; 

m_iRed_total++;

}

}

}

}

}

}

}

cout << "红球组合总注数: " << m_iRed_total << endl;

}

 

void c_Ball::count_Red_Blue()

{

for (m_cBall[0] = 1;m_cBall[0] <= 28;m_cBall[0]++)

{

for (m_cBall[1] = 2;m_cBall[1] <= 29;m_cBall[1]++)

{

for (m_cBall[2] = 3;m_cBall[2] <= 30;m_cBall[2]++)

{

for (m_cBall[3] = 4;m_cBall[3] <= 31;m_cBall[3]++)

{

for (m_cBall[4] = 5;m_cBall[4] <= 32;m_cBall[4]++)

{

for (m_cBall[5] = 6;m_cBall[5] <= 33;m_cBall[5]++)

{

for (m_cBall[6] = 1;m_cBall[6] <= 16;m_cBall[6]++)

{

if (true == estimate_Ball(m_cBall))

{

for (int i = 0;i < RED_BALL;i++)

{

cout << m_cBall[i] << " ";

}

cout << endl;

m_iRed_Blue_total++;

}

}

}

}

}

}

}

}

cout << "红蓝球组合总注数: " << m_iRed_Blue_total << endl;

}

 

void c_Ball::add_Ball()

{

ofstream outFile; //创建文件

outFile.open("add_Num.txt", ios_base::app|ios_base::out); //打开文件,以只追加模式

if (!outFile.is_open())

{

cout << "Open file failure!" << endl;

exit(1);

}

rst:

for (int i = 0;i < RED_BALL - 1;i++)

{

cout << "请输入第" << i + 1 << "位红球号码(1-33):";

cin >> m_sUBall[i];

getchar();

if (m_sUBall[i][0] == '\0')

{

cout << "号码不可为空,请输入正确号码!" << endl;

goto rst;

}

//判断是否为不可超过两位数

if (m_sUBall[i][1] != '\0')

{

if (m_sUBall[i][2] != '\0')

{

cout << "输入有误!红球号码应为1-33之间包含1和33,请输入正确号码!" << endl;

goto rst;

}

}

//判断两位数时数为1-33之间

if (m_sUBall[i][1] != '\0')

{

if (!(m_sUBall[i][0] >= '1'&&m_sUBall[i][0] <= '3'))

{

cout << "输入有误!红球号码应为1-33之间包含1和33,请输入正确号码!" << endl;

goto rst;

}

if (m_sUBall[i][0] < '3')

{

if (!(m_sUBall[i][1] >= '0'&&m_sUBall[i][1] <= '9'))

{

cout << "输入有误!红球号码应为1-33之间包含1和33,请输入正确号码!" << endl;

goto rst;

}

}

else

{

if (!(m_sUBall[i][1] <= '3'))

{

cout << "输入有误!红球号码应为1-33之间包含1和33,请输入正确号码!" << endl;

goto rst;

}

}

}

else

{

if (!(m_sUBall[i][0] >= '1'&&m_sUBall[i][0] <= '9'))

{

cout << "输入有误!红球号码应为1-33之间包含1和33,请输入正确号码!" << endl;

goto rst;

}

}

if (i > 0)

{

if (compare_Ball(m_sUBall, i))

{

cout << "输入有误!左数不可大于或等于右数!请重新输入正确号码!" << endl;

goto rst;

}

}

}

cout << endl;

rst1:

cout << "请输入蓝球号码(1-16): ";

cin >> m_sUBall[RED_BALL - 1];

if (m_sUBall[RED_BALL - 1][0] == '\0')

{

cout << "号码不可为空,请输入正确号码!" << endl;

goto rst1;

}

//判断是否为不可超过两位数

if (m_sUBall[RED_BALL - 1][1] != '\0')

{

if (m_sUBall[RED_BALL - 1][2] != '\0')

{

cout << "输入有误!蓝球号码应为1-16之间包含1和16,请输入正确号码!" << endl;

goto rst1;

}

}

//判断两位数时数为1-33之间

if (m_sUBall[RED_BALL - 1][1] != '\0')

{

if (!(m_sUBall[RED_BALL - 1][0] == '1'))

{

cout << "输入有误!蓝球号码应为1-16之间包含1和16,请输入正确号码!" << endl;

goto rst1;

}

if (!(m_sUBall[RED_BALL - 1][1] <= '6'))

{

cout << "输入有误!蓝球号码应为1-16之间包含1和16,请输入正确号码!" << endl;

goto rst1;

}

}

else

{

if (!(m_sUBall[RED_BALL - 1][0] >= '1'&&m_sUBall[RED_BALL - 1][0] <= '9'))

{

cout << "输入有误!蓝球号码应为1-16之间包含1和16,请输入正确号码!" << endl;

goto rst1;

}

}

red_File(m_sUBall);

cout << "您输入的号码为: ";

for (int i = 0;i < RED_BALL;i++)

{

cout << m_sUBall[i] << " ";

}

cout << endl;

cout << "是否保存?(Y/N)";

char m_cKey_add;

rst2:

m_cKey_add = _getch();

if (m_cKey_add == 'y' || m_cKey_add == 'Y')

{

for (int j = 0; j < RED_BALL; j++)

{

outFile << m_sUBall[j] << " ";

}

}

else if (m_cKey_add == 'n' || m_cKey_add == 'N')

{

cout << endl;

this->show_Ball();

}

else

{

cout << endl << "输入有误,请输入Y或N!" << endl;

goto rst2;

}

outFile << endl;

outFile.close();

}

 

#include "c_Ball.h"

c_Ball::c_Ball()

{

m_iRed_total = 0;

m_iRed_Blue_total = 0;

m_iAdd_total = 0;

}

 

c_Ball::~c_Ball()

{

 

}

 

//判断红球各球之间不相等并且由左到右依次由小到大

bool estimate_Ball(int *m_p)

{

for (int i = 0;i < RED_BALL - 2;i++)

{

if (m_p[i] >= m_p[i + 1])

{

return false;

}

}

return true;

}

 

//显示号码

void c_Ball::show_Ball(void)

{

for (int i = 0; i < RED_BALL; i++)

{

cout << m_sUBall[i]<< " ";

}

cout << endl;

}

 

//读取文件

void c_Ball::red_File(void)

{

ifstream inFile;

inFile.open("add_Num.txt", ios_base::in);

if (!inFile.is_open())

{

cout << "Open file failure!" << endl;

exit(1);

}

while (!inFile.eof())

{

for (int i = 0; i < RED_BALL; i++)

{

inFile >> m_sUBall[i];

cout << m_sUBall[i] << " ";

}

cout << endl << endl;

m_iAdd_total++;

}

cout << "总计:" << m_iAdd_total << "注号码" << endl <<endl;

inFile.close();

cout << "按0退出!按其它任意键返回主界面!" << endl;

char m_cKey_red_File;

m_cKey_red_File = _getch();

switch (m_cKey_red_File)

{

case '0':

exit(1);

break;

default:

system("cls");

this->main_Display();

break;

}

 

}

 

//读取文件

void c_Ball::red_File(string *strP)

{

string m_stUBall[RED_BALL];

int m_iNum = 0;

 

ifstream inFile;

inFile.open("add_Num.txt", ios_base::in);

if (!inFile.is_open())

{

cout << "Open file failure!" << endl;

exit(1);

}

while (!inFile.eof())

{

int m_itNum = 0; //标记两个字符串是否全部相等,一共七个字符串,当=7时代表全相等 

for (int i = 0; i < RED_BALL; i++)

{

inFile >> m_stUBall[i];

if (m_stUBall[i] == strP[i])

{

m_itNum++;

}

}

if (m_itNum == 7)

{

m_iNum++;

}

}

inFile.close();

cout << "此号已开过" << m_iNum << "次!" << endl;

}

 

//比较两数之间左数不可大于右数

int compare_Ball(string *str1, int i)

{

int num1;

int num2;

//将输入的字符串转换为数字之后进行比较大小

if (str1[i - 1][1] != '\0')

{

num1 = (str1[i - 1][0] - '0') * 10 + (str1[i - 1][1] - '0');

}

else if (str1[i - 1][1] == '\0')

{

num1 = str1[i - 1][0] - '0';

}

 

if (str1[i][1] != '\0')

{

num2 = (str1[i][0] - '0') * 10 + (str1[i][1] - '0');

}

else if (str1[i][1] == '\0')

{

num2 = str1[i][0] - '0';

}

//转换好的数字分别赋给num1和num2进行比较

if (num1 >= num2)

{

return 1;

}

return 0;

}

 

//显示主界面

void c_Ball::main_Display(void)

{

cout << "OOOOOOOOOOOOOOOOO 双色球号码辅助 OOOOOOOOOOOOOOOOO" << endl << endl;;

cout << " 1> 计算红球组合次数" << endl << endl;

cout << " 2> 计算红蓝球组合次数" << endl << endl;

cout << " 3> 添加已开号码" << endl << endl;

cout << " 4> 显示已开号码" << endl << endl;

cout << " 0> 退出" << endl << endl;

cout << "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO" << endl;

char m_cKey_display;

cout << "请输入项目标签(1-4): ";

rst3:

cin >> m_cKey_display;

switch (m_cKey_display)

{

case '1':

this->count_Red();

break;

case '2':

this->count_Red_Blue();

break;

case '3':

this->add_Ball();

break;

case '4':

this->red_File();

break;

case '0':

exit(1);

break;

default:

cout << "请输入正确的标签!" << endl;

goto rst3;

break;

}

}

 

void c_Ball::count_Red()

{

for (m_cBall[0] = 1;m_cBall[0] <= 28;m_cBall[0]++)

{

for (m_cBall[1] = 2;m_cBall[1] <= 29;m_cBall[1]++)

{

for (m_cBall[2] = 3;m_cBall[2] <= 30;m_cBall[2]++)

{

for (m_cBall[3] = 4;m_cBall[3] <= 31;m_cBall[3]++)

{

for (m_cBall[4] = 5;m_cBall[4] <= 32;m_cBall[4]++)

{

for (m_cBall[5] = 6;m_cBall[5] <= 33;m_cBall[5]++)

{

if (true == estimate_Ball(m_cBall))

{

for (int i = 0;i < RED_BALL - 1;i++)

{

cout << m_cBall[i] << " ";

}

cout << endl; 

m_iRed_total++;

}

}

}

}

}

}

}

cout << "红球组合总注数: " << m_iRed_total << endl;

}

 

void c_Ball::count_Red_Blue()

{

for (m_cBall[0] = 1;m_cBall[0] <= 28;m_cBall[0]++)

{

for (m_cBall[1] = 2;m_cBall[1] <= 29;m_cBall[1]++)

{

for (m_cBall[2] = 3;m_cBall[2] <= 30;m_cBall[2]++)

{

for (m_cBall[3] = 4;m_cBall[3] <= 31;m_cBall[3]++)

{

for (m_cBall[4] = 5;m_cBall[4] <= 32;m_cBall[4]++)

{

for (m_cBall[5] = 6;m_cBall[5] <= 33;m_cBall[5]++)

{

for (m_cBall[6] = 1;m_cBall[6] <= 16;m_cBall[6]++)

{

if (true == estimate_Ball(m_cBall))

{

for (int i = 0;i < RED_BALL;i++)

{

cout << m_cBall[i] << " ";

}

cout << endl;

m_iRed_Blue_total++;

}

}

}

}

}

}

}

}

cout << "红蓝球组合总注数: " << m_iRed_Blue_total << endl;

}

 

void c_Ball::add_Ball()

{

ofstream outFile; //创建文件

outFile.open("add_Num.txt", ios_base::app|ios_base::out); //打开文件,以只追加模式

if (!outFile.is_open())

{

cout << "Open file failure!" << endl;

exit(1);

}

rst:

for (int i = 0;i < RED_BALL - 1;i++)

{

cout << "请输入第" << i + 1 << "位红球号码(1-33):";

cin >> m_sUBall[i];

getchar();

if (m_sUBall[i][0] == '\0')

{

cout << "号码不可为空,请输入正确号码!" << endl;

goto rst;

}

//判断是否为不可超过两位数

if (m_sUBall[i][1] != '\0')

{

if (m_sUBall[i][2] != '\0')

{

cout << "输入有误!红球号码应为1-33之间包含1和33,请输入正确号码!" << endl;

goto rst;

}

}

//判断两位数时数为1-33之间

if (m_sUBall[i][1] != '\0')

{

if (!(m_sUBall[i][0] >= '1'&&m_sUBall[i][0] <= '3'))

{

cout << "输入有误!红球号码应为1-33之间包含1和33,请输入正确号码!" << endl;

goto rst;

}

if (m_sUBall[i][0] < '3')

{

if (!(m_sUBall[i][1] >= '0'&&m_sUBall[i][1] <= '9'))

{

cout << "输入有误!红球号码应为1-33之间包含1和33,请输入正确号码!" << endl;

goto rst;

}

}

else

{

if (!(m_sUBall[i][1] <= '3'))

{

cout << "输入有误!红球号码应为1-33之间包含1和33,请输入正确号码!" << endl;

goto rst;

}

}

}

else

{

if (!(m_sUBall[i][0] >= '1'&&m_sUBall[i][0] <= '9'))

{

cout << "输入有误!红球号码应为1-33之间包含1和33,请输入正确号码!" << endl;

goto rst;

}

}

if (i > 0)

{

if (compare_Ball(m_sUBall, i))

{

cout << "输入有误!左数不可大于或等于右数!请重新输入正确号码!" << endl;

goto rst;

}

}

}

cout << endl;

rst1:

cout << "请输入蓝球号码(1-16): ";

cin >> m_sUBall[RED_BALL - 1];

if (m_sUBall[RED_BALL - 1][0] == '\0')

{

cout << "号码不可为空,请输入正确号码!" << endl;

goto rst1;

}

//判断是否为不可超过两位数

if (m_sUBall[RED_BALL - 1][1] != '\0')

{

if (m_sUBall[RED_BALL - 1][2] != '\0')

{

cout << "输入有误!蓝球号码应为1-16之间包含1和16,请输入正确号码!" << endl;

goto rst1;

}

}

//判断两位数时数为1-33之间

if (m_sUBall[RED_BALL - 1][1] != '\0')

{

if (!(m_sUBall[RED_BALL - 1][0] == '1'))

{

cout << "输入有误!蓝球号码应为1-16之间包含1和16,请输入正确号码!" << endl;

goto rst1;

}

if (!(m_sUBall[RED_BALL - 1][1] <= '6'))

{

cout << "输入有误!蓝球号码应为1-16之间包含1和16,请输入正确号码!" << endl;

goto rst1;

}

}

else

{

if (!(m_sUBall[RED_BALL - 1][0] >= '1'&&m_sUBall[RED_BALL - 1][0] <= '9'))

{

cout << "输入有误!蓝球号码应为1-16之间包含1和16,请输入正确号码!" << endl;

goto rst1;

}

}

red_File(m_sUBall);

cout << "您输入的号码为: ";

for (int i = 0;i < RED_BALL;i++)

{

cout << m_sUBall[i] << " ";

}

cout << endl;

cout << "是否保存?(Y/N)";

char m_cKey_add;

rst2:

m_cKey_add = _getch();

if (m_cKey_add == 'y' || m_cKey_add == 'Y')

{

for (int j = 0; j < RED_BALL; j++)

{

outFile << m_sUBall[j] << " ";

}

}

else if (m_cKey_add == 'n' || m_cKey_add == 'N')

{

cout << endl;

this->show_Ball();

}

else

{

cout << endl << "输入有误,请输入Y或N!" << endl;

goto rst2;

}

outFile << endl;

outFile.close();

}

 

 

 

 

//Star.cpp文件

#include <iostream>

#include <stdlib.h>

#include "c_Ball.h"

using namespace std;

 

int main(void)

{

c_Ball ball;

ball.main_Display();

 

system("pause");

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

完美教父

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值