//类名:CIRNUM3.H
//功能:循环计数器类的头文件。
//类名:CIRCULAR_NUMBERS
//功能:实现一个循环计数器
class CIRCULAR_NUMBERS{
public:
void set_mode(int min,int max);//设置循环计数器的上、下限
void set_value(int value);//设置循环计数器的当前值
int get_value();//查询循环计数器的当前值
void increment();//循环计数器加1
void decrement();//循环计数器减1
private:
int min_val;//最小值
int max_val;//最大值
int current;//当前值
};
//程序:CIRNUM3.CPP
//功能:循环计数器类的实现文件。
#include "cirnum3.h"
//设置循环计数器的上、下限
void CIRCULAR_NUMBERS::set_mode(int min,int max)
{
//保证起点比终点小
min_val=(min<=max) ? min:max;
max_val=(min<=max) ? max:min;
return;
}
//设置循环计数器的当前值
void CIRCULAR_NUMBERS::set_value(int value)
{
//将当前值约束在取值范围内
if (value<min_val) current=min_val;
else{
if(value>max_val) current=max_val;
else cerrent=value;
}
return;
}
//查询循环计数器的当前值
int CIRCULAR_NUMBERS::get_value()
{
return current;
}
//循环计数器加
void CIRCULAR_NUMBERS::increment()
{
int mode=max_val - min_val+1;
current=((current-min_val)+1)% mode +min_val;
return;
}
//循环计数器减1
void CIRCULAR_NUMBERS::decrement()
{
int mode=max_val-min_val+1;
current=((current-min_val)-1+mode)% mode+min_val;
return;
}
//程序:CIRDEMO3.CPP
//功能:演示使用循环计数器的程序。
#include "cirnum3.h"
#include <iostream.h>
int main()
{
//局部变量
int loop;//循环变量
//创建两个循环计数器对象
CIRCULAR_NUMBERS angle;//角度循环计数器
CIRCULAR_NUMBERS month;//月份循环计数器
//初始化对象
angle.set_mode(0,359);//设置角度取值范围从0~359
angle.set_value(250);//设置当前角度为250
month.set_mode(1,12);//设置月份取值范围从1~12
month.set_value(11);//设置当前月为11月
//显示对象的初始化状态
cout<<"The initial angle is"<<angle.get_value()<<"\n";
cout<<"The initial month is"<<month.get_value()<<"\n";
//使用对象上的操作改变对象的状态
for (loop=1;loop<=100;loop=loop+1)angle.increment();//角度加100
for (loop=1;loop<=300;loop=loop+1)angle.decrement();//角度再减回300
for (loop=1;loop<=10;loop=loop+1)month.increment();//月份加10
for (loop=1;loop<=15;loop=loop+1)month.decrement();//月份再减回15
//显示对象上的终止状态
cout<<"The last angle is"<<angle.get_value()<<"\n";
cout<<"The last month is"<<month.get_value()<<"\n";
return 0;
}
//功能:循环计数器类的头文件。
//类名:CIRCULAR_NUMBERS
//功能:实现一个循环计数器
class CIRCULAR_NUMBERS{
public:
void set_mode(int min,int max);//设置循环计数器的上、下限
void set_value(int value);//设置循环计数器的当前值
int get_value();//查询循环计数器的当前值
void increment();//循环计数器加1
void decrement();//循环计数器减1
private:
int min_val;//最小值
int max_val;//最大值
int current;//当前值
};
//程序:CIRNUM3.CPP
//功能:循环计数器类的实现文件。
#include "cirnum3.h"
//设置循环计数器的上、下限
void CIRCULAR_NUMBERS::set_mode(int min,int max)
{
//保证起点比终点小
min_val=(min<=max) ? min:max;
max_val=(min<=max) ? max:min;
return;
}
//设置循环计数器的当前值
void CIRCULAR_NUMBERS::set_value(int value)
{
//将当前值约束在取值范围内
if (value<min_val) current=min_val;
else{
if(value>max_val) current=max_val;
else cerrent=value;
}
return;
}
//查询循环计数器的当前值
int CIRCULAR_NUMBERS::get_value()
{
return current;
}
//循环计数器加
void CIRCULAR_NUMBERS::increment()
{
int mode=max_val - min_val+1;
current=((current-min_val)+1)% mode +min_val;
return;
}
//循环计数器减1
void CIRCULAR_NUMBERS::decrement()
{
int mode=max_val-min_val+1;
current=((current-min_val)-1+mode)% mode+min_val;
return;
}
//程序:CIRDEMO3.CPP
//功能:演示使用循环计数器的程序。
#include "cirnum3.h"
#include <iostream.h>
int main()
{
//局部变量
int loop;//循环变量
//创建两个循环计数器对象
CIRCULAR_NUMBERS angle;//角度循环计数器
CIRCULAR_NUMBERS month;//月份循环计数器
//初始化对象
angle.set_mode(0,359);//设置角度取值范围从0~359
angle.set_value(250);//设置当前角度为250
month.set_mode(1,12);//设置月份取值范围从1~12
month.set_value(11);//设置当前月为11月
//显示对象的初始化状态
cout<<"The initial angle is"<<angle.get_value()<<"\n";
cout<<"The initial month is"<<month.get_value()<<"\n";
//使用对象上的操作改变对象的状态
for (loop=1;loop<=100;loop=loop+1)angle.increment();//角度加100
for (loop=1;loop<=300;loop=loop+1)angle.decrement();//角度再减回300
for (loop=1;loop<=10;loop=loop+1)month.increment();//月份加10
for (loop=1;loop<=15;loop=loop+1)month.decrement();//月份再减回15
//显示对象上的终止状态
cout<<"The last angle is"<<angle.get_value()<<"\n";
cout<<"The last month is"<<month.get_value()<<"\n";
return 0;
}