首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 计算机考试 > 等级考试 > 复习指导 >

C++应用实例二十(2)

2009-01-11 
假币问题(C++解决方案)

else
  {//2//确定真币的重量币种
  if( from>1 )
  A[0] = A[1] ;
  else
  A[0] = A[to+1] ;
  Check_Degree(A ,false_sign ,from ,to ) ;
  }
  }
  else
  {
  int i = (tofrom+1)/4 ;
  int mid1 = from+i1 ;
  int mid2 = mid1+i ;
  if( Sum_Coin(A ,from ,mid1)==Sum_Coin(A ,mid1+1 ,mid2) )
  {
  if( degree==1)
  {//判断假币的轻重
  if(which_heavy==LEFT_HEAVY)
  degree = LIGHT ;
  if(which_heavy==RIGHT_HEAVY)
  degree = HEAVY ;
  }
  Check_Coin_3(A ,false_sign ,mid2+1 ,to) ;
  }
  else
  {
  if( degree==1)
  {//判断假币的轻重
  if(which_heavy==LEFT_HEAVY)
  degree = HEAVY ;
  else
  {
  if(which_heavy==RIGHT_HEAVY)
  degree = LIGHT ;
  else
  {
  if( Sum_Coin(A ,from ,mid1) > Sum_Coin(A ,mid1+1 ,mid2) )
  which_heavy = LEFT_HEAVY ;
  else
  which_heavy = RIGHT_HEAVY ;
  }
  }
  }
  Check_Coin_3(A ,false_sign ,from ,mid2) ;
  }
  }
  }
  //
  void Print_Coin(const int coin[] ,int coin_num)
  {
  for(int i=1 ;i<=coin_num ;++i)
  cout << coin[i] << " " ;
  }
  void main()
  {
  int* coin ;
  int coin_num ;
  int false_coin ; //1 ,假币较重; 0 ,假币较轻
  time_t t;
  srand((unsigned) time(&t));
  char c ;
  do
  {
  system("cls") ;
  cout << "\n\n 请输入货币总数: " ;
  cin >> coin_num ;
  coin = new int[coin_num+1] ;
  for(int i=1 ;i<=coin_num ;++i)
  {
  coin[i] = 1 ;
  }
  false_coin = rand()%2 ;
  int false_position = (rand()%coin_num)+1 ;
  if(false_coin==0)
  coin[false_position] = 0 ;
  else
  coin[false_position] = 2 ;
  Print_Coin(coin ,coin_num) ;
  int false_sign = 1 ; //假币位置
  degree = 1 ;//轻重标志,初始化为1 ,即未确定
  which_heavy = 0 ;//那一边比较重,初始化为0 ,即未确定
  Check_Coin_2(coin ,false_sign ,1,coin_num ) ;
  cout << "\n 二分法求解 ,假币位置:" << false_sign ;
  if( degree==LIGHT )
  cout << " 假币较轻!\n" ;
  else
  cout << " 假币较重!\n" ;
  /************************************************/
  false_sign = 1 ; //假币位置
  degree = 1 ;//轻重标志,初始化为1 ,即未确定
  which_heavy = 0 ;//那一边比较重,初始化为0 ,即未确定
  Check_Coin_3(coin ,false_sign ,1,coin_num ) ;
  cout << "\n 三分法求解 ,假币位置:" << false_sign ;
  if( degree==LIGHT )
  cout << " 假币较轻!\n" ;
  else
  cout << " 假币较重!\n" ;
  /************************************************/
  cout << "\n\n !!!按任意键继续,Esc退出程序!!!" << endl ;
  }while( (c=getch())!=27 ) ;
  return ;
  }
  /***********************************************

 

3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.net/exam/

热点排行