码迷,mamicode.com
首页 > 其他好文 > 详细

关于随机四则运算的小程序

时间:2015-03-12 22:17:35      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

2015-03-12

基本上是按上一篇博文中的思想,粗略的编写了一个beta版,不足也是有的,一些判断机智,程序的健壮性有待改进。

  1 #include<iostream>
  2 #include<time.h>
  3 using namespace std;
  4 typedef struct node{
  5     int num1;
  6     int num2;
  7     char ope;
  8     struct node *next;
  9 }node,*linknode;                                                        //定义三个操作数的数据结构,用于对产生数据的记录   
 10 
 11 void Math(int num,linknode &L,int chengchu,int fanwei,int yushu);       //产生数据
 12 void InitList(linknode &L);                                             //链表初始化
 13 void Insertlist(linknode &L,int one,int two,char thr);                  //插入数据
 14 int Serchlist(linknode L,int one,int two,char thr);                     //查询节点
 15 void Printrecord(linknode &L,int hang);                                 //输出数据
 16 void menu1();                                                           //大要求的菜单选项
 17 void choice(int *n);                                                    //对用户的提供的选择
 18 void menu2();                                                           //是否有乘除法,数值范围,打印中每行的间隔可调整,除法有无余数,
 19 void standerd(int *n,int *f,int *y,int *h);
 20 
 21 void main()
 22 {
 23     int num=5;        //出题数量
 24     int chengchucan=0;
 25     int fanweican=100;
 26     int yushucan=0;
 27     int hangcan=0;
 28     linknode l;
 29     InitList(l);
 30     choice(&num);    
 31     standerd(&chengchucan,&fanweican,&yushucan,&hangcan);
 32     Math(num,l,chengchucan,fanweican,yushucan);         //调用函数,产生数据
 33     Printrecord(l,hangcan);
 34 }
 35 
 36 void menu1()
 37 {
 38     cout<<"- - - - -  - - - - - - 菜单- - - - - - -- - - - - - "<<endl;
 39     cout<<"                   1.定制出题数量                   "<<endl;
 40     cout<<"                   2.定制打印                       "<<endl;                      //附加功能??
 41     cout<<"                   3.退出菜单                       "<<endl;
 42     cout<<"                   4.使用说明                       "<<endl;
 43     cout<<"- - - - -  - - ---------------二柱子- "<<endl;
 44 }
 45 
 46 void menu2()
 47 {
 48     cout<<"~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~菜单~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~"<<endl;
 49     cout<<"                   1.是否有乘除法                  "<<endl;
 50     cout<<"                   2.数值范围                       "<<endl; 
 51     cout<<"                   3.除法有无余数                   "<<endl; 
 52     cout<<"                   4.打印中每行的间隔可调整         "<<endl; 
 53     cout<<"                   5.退出菜单                       "<<endl;
 54     cout<<"~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~~ ~ ~~ ~ ~ ~ ~ ~ ~ ~ 二柱子 ~"<<endl;
 55 
 56 }
 57 
 58 void choice(int *n)
 59 {
 60     int choi,number;
 61     menu1();
 62     cout<<"请输入选择"<<endl;
 63     cin>>choi;
 64     while(choi!=3)
 65     {
 66         switch(choi)
 67         {
 68         case 1:
 69             {
 70                 cout<<"请输入题目数量"<<endl;
 71                 cin>>number;
 72                 *n=number;
 73                 menu1();
 74                 cin>>choi;
 75                 break;
 76             }
 77         case 2:
 78             {
 79                 cout<<"定制打印"<<endl;
 80                 menu1();
 81                 cin>>choi;
 82                 break;
 83             }
 84         case 4:
 85             {
 86                 cout<<" 使用说明书"<<endl;
 87                 menu1();
 88                 cin>>choi;
 89                 break;
 90             }
 91             
 92         }
 93     }
 94 }
 95 
 96 void standerd(int *chengchu,int *fanwei,int *yushu,int *hangjian)
 97 {
 98     int select,can1,can2,can3,can4;
 99     menu2();
100     cout<<"请输入选择"<<endl;
101     cin>>select;
102     while(select!=5)
103     {
104         switch(select)
105         {
106         case 1:          //是否有乘除法
107             {
108                 cout<<"请输入选择 0代表设定乘除法1代表不设定乘除法(程序默认拥有乘除法)"<<endl;
109                 cin>>can1;
110                 if(can1==1)
111                     *chengchu=1;
112                 menu2();
113                 cin>>select;
114                 break;
115             }
116         case 2:        //数值范围
117             {
118                 cout<<"请输入 您想要的出题数值范围(程序默认数值范围为100以内)"<<endl;
119                 cin>>can2;
120                 *fanwei=can2;
121                 menu2();
122                 cin>>select;
123                 break;
124             }
125         case 3:       //除法有无余数 
126             {
127                 cout<<"请输入选择 0代表设定允许余数1代表不允许除法有余数(程序默认会有余数)"<<endl;
128                 cin>>can3;
129                 *yushu=can3;
130                 menu2();
131                 cin>>select;
132                 break;
133             }
134         case 4:       //打印中每行的间隔可调整
135             {
136                 cout<<"请输入 您想要的打印题目之间的间隔(程序默认打印题目之间的间隔为0)"<<endl;
137                 cin>>can4;
138                 *hangjian=can4;
139                 menu2();
140                 cin>>select;
141                 break;
142             }
143         }
144     }
145 
146 }
147 void Math(int num,linknode &L,int chengchu,int fanwei,int yushu)
148 {
149     srand(time(NULL));
150     int a,b,c,rule;
151     char d;
152     int sancan=4;
153     int onecan=100;
154     if(chengchu==1)               //对乘除参数进行判断,为1时设置参数的改变
155         sancan=2;
156 
157     onecan=fanwei;                //对数值范围的修改,默认为
158     for(int x=0;x<num;x++)
159     {        
160         a=rand()%onecan;
161          b=rand()%onecan;
162         c=rand()%sancan;
163         //cout<<"连续输入三个数"<<endl;       //测试产生数据相同时的结构是否成立
164         //cin>>a>>b>>c;
165         rule=0;
166         switch(c)
167         {
168         case 0:
169             d=+;
170             break;
171         case 1:
172             d=-;
173             break;
174         case 2:
175             d=*;
176             break;
177         case 3:
178             d=/;
179             break;
180         } 
181         rule=Serchlist(L,a,b,d);
182         if(rule==0)
183         {
184             x--;
185             //cout<<"ji zhi "<<endl;
186         }
187         else if(yushu==1&&c==3&&a%b!=0)
188         {
189             x--;
190             cout<<"余数设置规则"<<endl;
191         }
192         else
193             Insertlist(L,a,b,d);
194         
195     }
196 }
197 
198 void InitList(linknode &L)
199 {
200     L=new node;
201     L->next=NULL;
202 }
203 
204 void Insertlist(linknode &L,int one,int two,char thr)
205 {
206     linknode p=L;
207     while(p->next!=NULL)
208         p=p->next;
209     node * s=NULL;
210     s = (node *) malloc (sizeof(node));
211     s->num1=one;
212     s->num2=two;
213     s->ope=thr;
214     s->next=p->next;
215     p->next=s;
216 }
217 
218 int Serchlist(linknode L,int one,int two,char thr)
219 {
220     if(L->next==NULL)
221         return 1;
222     linknode p=L->next;
223     while(p!=NULL)
224     {
225         if(p->num1==one&&p->num2==two&&p->ope==thr)
226             return 0;
227         p=p->next;
228     }
229     return 1;
230 }
231 
232 void Printrecord(linknode &L,int hang)
233 {
234     int a=hang;
235     linknode p=L->next;
236     while(p    !=NULL)
237     {
238         cout<<p->num1<<p->ope<<p->num2<<"="<<endl;
239         while(hang>0)
240         {
241             cout<<endl;
242             hang--;
243         }
244         hang=a;
245         p=p->next;
246     }
247 }
技术分享

技术分享技术分享

 

关于随机四则运算的小程序

标签:

原文地址:http://www.cnblogs.com/zZ-ily/p/4333814.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!