口袋中有红黄蓝白黑5种颜色的球若干个。每次从口袋中任意取出三个球,问得到3中不通过颜色的球的可能取法。(枚举)
来源:互联网 发布:mv播放器软件 编辑:程序博客网 时间:2024/05/01 21:31
// 121212 第七章例7.7.cpp : 定义控制台应用程序的入口点。///* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作 者: 刘同宾 * 完成日期:2012 年 12 月 12 日 * 版 本 号:v1.0 * * 输入描述:口袋中有红黄蓝白黑5种颜色的球若干个。每次从口袋中任意取出三个球,问得到3中不通过颜色的球的可能取法。(枚举) * 问题描述: * 程序输出:* 问题分析:略 * 算法设计:略 */#include "stdafx.h"#include<iostream>#include<iomanip>using namespace std;int main(){enum color{red,yellow,blue,white,black};//声明枚举类型colorcolor pri; //定义color类型的变量priint i,j,k,n=0,loop;//n是累计不同颜色的组合数for(i=red;i<=black;i++)//当i为某一颜色时{for(j=red;j<=black;j++)//当j为某一颜色时{if(i!=j)//若前两个球的颜色不同{for(k=red;k<=black;k++)//只有前两个球的颜色不同,才需要检查第3个球的颜色{if(k!=i&&k!=j)//三个球的颜色都不同{n=n+1;//使累计值n加1cout<<setw(3)<<n;//输出当前的n值,字符宽度为3for(loop=1;loop<=3;loop++)//先后对三个球做处理{switch(loop)//loop的值先后为1,2,3{case 1:pri=color(i);break;//color(i)是强制类型转换,使pri的值为icase 2:pri=color(j);break;// jcase 3:pri=color(k);break;// kdefault :break;}switch(pri) //判断pri的值,输出相应的颜色{case red:cout<<setw(8)<<"red";break;case yellow:cout<<setw(8)<<"yellow";break;case blue:cout<<setw(8)<<"blue";break;case white:cout<<setw(8)<<"white";break;case black:cout<<setw(8)<<"black";break;default :break;}}cout<<endl;}}}}}cout<<"total:"<<n<<endl; //输出符合条件的组合的个数return 0;}