| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1643 人关注过本帖
标题:怎么用 C++ 写任意四个整数任意运算得 23 点?
只看楼主 加入收藏
C、期待
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-8-11
收藏
 问题点数:0 回复次数:7 
怎么用 C++ 写任意四个整数任意运算得 23 点?
在屏幕上输入1~10范围内的4个整数(可以有重复),对它们进行加、减、乘、除四则运算后(可以任意的加括号限定计算的优先级),寻找计算结果等于24的表达式。 例如输入4个整数4、5、6、7,可得到表达式:4*((5-6)+7)=24.这只是一个解,本题目要求输出全部的解。要求表达式中数字的顺序不能改变,计算过程中允许出现负数、小数。1.如果增加限制条件,在计算过程中不允许出现负数、小数,那么程序应该如何编写。
2.实际上人们在用扑克牌做算24游戏时,数字的顺序是可以随意改变的,请针对这种实际游戏规则编写程序。
搜索更多相关主题的帖子: 编写程序 扑克牌 表达式 优先级 如何 
2014-08-11 14:44
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
c利c++很难分辨吗?

总有那身价贱的人给作业贴回复完整的代码
2014-08-11 14:53
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
好像在二叉树的算法里看到过24点

DO IT YOURSELF !
2014-08-11 15:03
C、期待
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-8-11
收藏
得分:0 
回复 2 楼 embed_xuel
新手   求指教   求代码
2014-08-11 15:14
C、期待
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-8-11
收藏
得分:0 
回复 3 楼 wp231957
  就是二叉树    求代码
2014-08-11 15:14
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
说实话 二叉树我也不会

不过对于你来说  如果想学知识 那还是要自己一句一句的啃代码 一个字一个字的去看书(资料)
如果只是单纯的要代码  我想24点的代码  网上肯定很多  都是开源

DO IT YOURSELF !
2014-08-11 15:30
C、期待
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-8-11
收藏
得分:0 
回复 6 楼 wp231957
。。。。。。。。。。。恩  好的  谢谢提醒!!!!!!!!!!
2014-08-12 10:49
C、期待
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-8-11
收藏
得分:0 
回复 6 楼 wp231957
能不能帮我看看哪儿出问题了?
#include<stdio.h>
char op[5]={'#','+','-','*','/'};
float cal(float x,float y,int op)
{
    switch(op)
    {
        case 1:return x+y;
        case 2:return x-y;
        case 3:return x*y;
        case 4:return x/y;
    }
}
    int get4(int i,int j,int k,int t)
{
        int op1,op2,op3;
        int flag=0;
    float cal_1(int i,int j,int k,int t,int op1,int op2,int op3); /*(A?B)?C?D*/
    {
        float r1,r2,r3;
        r1=cal(i,j,op1);
        r2=cal(r1,k,op2);
        r3=cal(r2,t,op3);
        return r3;
    }
    float cal_2(int i,int j,int k,int t,int op1,int op2,int op3); /*(A?(B?C))?D */
    {
        float r1,r2,r3;
        r1=cal(j,k,op2);
        r2=cal(i,r1,op1);
        r3=cal(r2,t,op3);
        return r3;
    }
    float cal_3(int i,int j,int k,int t,int op1,int op2,int op3); /* A?(B?(C?D)) */
    {
        float r1,r2,r3;
        r1=cal(k,t,op3);
        r2=cal(j,r1,op2);
        r3=cal(i,r2,op1);
        return r3;
    }
    float cal_4(int i,int j,int k,int t,int op1,int op2,int op3); /* A?((B?C)?D) */
    {
        float r1,r2,r3;
        r1=cal(j,k,op2);
        r2=cal(r1,t,op3);
        r3=cal(i,r2,op1);
        return r3;
    }
    float cal_5(int i,int j,int k,int t,int op1,int op2,int op3); /* (A?B)?(C?D) */
    {
        float r1,r2,r3;
        r1=cal(i,j,op1);
        r2=cal(k,t,op3);
        r3=cal(r1,r2,op2);
        return r3;
    }

    for(op1=0;op1<4;op1++)

    for(op2=0;op2<4;op2++)

    for(op3=0;op3<4;op3++)

    if(cal_1(i,j,k,t,op1,op2,op3)==24.0)
    {
        printf("((%d%c%d)%c%d)%c%d=24\n",i,op[op1],j,op[op2],k,op[op3],t);/*输出符合第一种类型的算式*/
        flag=1;
    }
    if(cal_2(i,j,k,t,op1,op2,op3)==24.0)
    {
        printf("(%d%c(%d%c%d))%c%d=24\n",i,op[op1],j,op[op2],k,op[op3],t);/*输出符合第二种类型的算式*/
        flag=1;
    }
    if(cal_3(i,j,k,t,op1,op2,op3)==24.0)
    {
        printf("%d%c(%d%c(%d%c%d))=24\n",i,op[op1],j,op[op2],k,op[op3],t);/*输出符合第三种类型的算式*/
        flag=1;
    }
    if(cal_4(i,j,k,t,op1,op2,op3)==24.0)
    {
        printf("%d%c((%d%c%d)%c%d)=24\n",i,op[op1],j,op[op2],k,op[op3],t);/*输出符合第四种类型的算式*/
        flag=1;
    }
    if(cal_5(i,j,k,t,op1,op2,op3)==24.0)
    {
        printf("(%d%c%d)%c(%d%c%d)=24\n",i,op[op1],j,op[op2],k,op[op3],t);/*输出符合第五种类型的算式*/
        flag=1;
    }
    return flag;
}
void main()
    {
        int i,j,k,t;
        printf("Please input four integer (1~10)\n");
        loop:
        scanf("%d %d %d %d",&i,&j,&k,&t);
        if(i<1||i>10||j<1||j>10||k<1||k>10||t<1||t>10) /* 判断输入的数是否符合规定    */
        {
            printf("mistake  pleasn input again\n ");
            goto loop;
        }
        if(get4(i,j,k,t));
        else
        printf("Sorry, the four integer cannot be calculated to get 24\n");
        getchar();
     }
2014-08-12 11:09
快速回复:怎么用 C++ 写任意四个整数任意运算得 23 点?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016702 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved