一、实验设计方案
1、实验内容与目的(简单介绍实验内容,说明实验目的)
实验目的:实现扑克牌游戏:对于任意的四个113的整数(四张扑克牌),求能算出24的表达式;运算符有()+-*/;若无解则输出相应的信息。
实验内容:你的具体选择(要详细)
文件输入()输出(),输出全部结果;
——————————————————————————————————————
2、实验准备工作(阐述解决问题所涉及的算法思想,至少要画一个算法流程图来说明)
本次实验相当于,给出四个数字,要求,在其间添加运算符和括号,使得计算结果等于24。
括号的放置即为决定哪几个数先进行计算。所以,我们先确定首先进行计算的两个相邻的数,计算完成后,就相当于剩下三个数字,仍需要在它们之间添加符号;然后再决定在这三个数中
哪两个相邻的数先计算。由此,我们就成功解决了数字的运算次序问题,此时不需要再考虑不同运算符号的优先级问题,因为括号的优先级高于加减乘除。
通过循环,我们可以得到第一第二第三次计算的运算符,再通过计算,就可以得出和,若和等于24,即为所求解。
在输出格式中,由于括号的放置共六种情况,故根据计算先后顺序的不同,输出时在不同地方放置括号;
以下为循环计算的流程图:
         
          表示循环获取;
          表示计算数值
以下为计算函数的流程图:
——————————————————————————————————————
二、实验步骤、测试与结果分析
1、源程序的设计(在此附上源程序(cpp文件)清单)
#include<iostream>
#include<fstream>
#include<cmath>
using namespace std;
char sign[4]={'+','-','*','/'};
//定义一个全局变量,用于储存加减乘除符号,方便下面符号判断
class game24point
//24点纸牌游戏类
{
private:
    double  a[4];
    //为实现精确计算,防止计算结果为小数却被强制转换为整数,采用double变量
public:
    game24point();
    //构造函数
    double  calcute(double,double,char);
    //计算函数,给出一个符号两个有顺序的数,计算结果
    void search();
    //搜索函数,用于寻合适的解
    void print();
    //打印得到的四张纸牌的数值
};
game24point::game24point()
{
    char ch[4];游戏免费源码分享网站
    //由于纸牌中除了数字还有AJQK等字符,故使用字符数组
    ifstream infile("");
    if(!infile)
    //若打开失败
    {
        cout<<"打开文件失败!"<<endl;
        exit(1);
    }
   
    for(int i=0;i<4;i++) infile>>ch[i];
    //input文件中读取数据
   
    cout<<"          >>>>>>>>##"<<endl;
    cout<<"          ##                                      ##"<<endl;
    cout<<"          ##      正在从中读取数据      ##"<<endl;
    cout<<"          ##                                      ##"<<endl;
    cout<<"          >>>>>>>>##"<<endl;
   
    for(i=0;i<4;i++)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。