⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bowling1.cpp

📁 提供计算保龄球得分的算法
💻 CPP
字号:
// Bowling1.cpp: implementation of the CBowling class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Bowling1.h"
#include "iostream.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CBowling::CBowling()
{

}

CBowling::~CBowling()
{

}

void CBowling::INitArray()
{
	for(int m=0;m<=10;m++)
	{
		m_RecordList[m].First = 0;
		m_RecordList[m].Second = 0;
		m_RecordList[m].Grade = 0;
		m_RecordList[m].All = 0;
		m_RecordList[m].iFlag = 0;
		m_RecordList[m].bFlag = 0;
	}	
}	

void CBowling::InputNum(int round)
{
	int iCount;
	m_iRound = round;

	if((m_iRound == 10) && ((m_RecordList[m_iRound-1].iFlag == 1) || //第十轮和为10处理
		(m_RecordList[m_iRound-1].iFlag == 2)))
	{
		cout<<"Please input addtion once:"<<":\n";
		cin>>iCount;
		m_RecordList[m_iRound].First = iCount;

		if(m_RecordList[m_iRound-1].iFlag == 1)
		{
			cout<<"Please input addtion once:"<<":\n";
			cin>>iCount;
			m_RecordList[m_iRound].Second = iCount;
		}

		m_RecordList[m_iRound].iFlag = 4;

	}
	else if(m_iRound != 10)											 //一般处理
	{
		cout<<"Please input the first number you have hit of round"<<m_iRound+1<<":\n";
		cin>>iCount;
		m_RecordList[m_iRound].First = iCount;

   		if(m_RecordList[m_iRound].First != 10)
		{
			cout<<"Please input the second number you have hit of round"<<m_iRound+1<<":\n";
			cin>>iCount;
			m_RecordList[m_iRound].Second = iCount;
			
			if(m_RecordList[m_iRound].First + m_RecordList[m_iRound].Second == 10)
			{
				m_RecordList[m_iRound].iFlag = 2;
			}
			else
			{
				m_RecordList[m_iRound].iFlag = 3;
			}
		}
		else
		{
			m_RecordList[m_iRound].iFlag = 1;
		}
	}
}

void CBowling::GetAll()
{
	int icount = 0;

	while(m_RecordList[icount].bFlag == 1)
	{
		if(m_RecordList[icount].All == 0)
		{
			for(int k=0;k<=icount;k++)
			{
				m_RecordList[icount].All += m_RecordList[k].Grade;
			}
		}

		icount++;
	}
}

void CBowling::GetGrade()
{
	if(m_RecordList[m_iRound].iFlag == 3)						//一般处理
	{
		m_RecordList[m_iRound].Grade = m_RecordList[m_iRound].First + m_RecordList[m_iRound].Second;
		m_RecordList[m_iRound].bFlag = 1;
	}
	
	for(int i=0;i<=m_iRound;i++)
	{	
		if((m_RecordList[i].iFlag == 1) && (m_RecordList[i+1].iFlag == 1)
			&& (m_RecordList[i+2].iFlag == 1))
		{
			m_RecordList[i].Grade= 30;
			m_RecordList[i].bFlag = 1;
		}
		else if((m_RecordList[i].iFlag == 1) && (m_RecordList[i+1].iFlag == 1)
			&& (m_RecordList[i+2].iFlag != 0) && (m_RecordList[i+2].iFlag != 1))			
		{
			m_RecordList[i].Grade = 20 + m_RecordList[i+2].First;
			m_RecordList[i].bFlag = 1;
		}
		else if((m_RecordList[i].iFlag == 1) && (m_RecordList[i+1].iFlag != 0)
			&& (m_RecordList[i+1].iFlag != 1))
		{
			m_RecordList[i].Grade = 10 + m_RecordList[i+1].First
				+ m_RecordList[i+1].Second;
			m_RecordList[i].bFlag = 1;
		}
		else if((m_RecordList[i].iFlag == 2) && (m_RecordList[i+1].iFlag != 0))
		{
			m_RecordList[i].Grade = 10 + m_RecordList[i+1].First;
			m_RecordList[i].bFlag = 1;
		}

		if((i == 9) && (m_RecordList[9].iFlag == 1) && (m_RecordList[10].bFlag == 1)		//九轮,十论处理
			&& (m_RecordList[11].iFlag == 4))
		{
			m_RecordList[9].Grade = 20 + m_RecordList[11].First;
			m_RecordList[9].bFlag = 1;
		}
		else if((i == 10) && ((m_RecordList[10].iFlag == 1) || (m_RecordList[10].iFlag == 2))
			&& (m_RecordList[11].iFlag == 4))
		{
			m_RecordList[10].Grade = 10 + m_RecordList[11].First + m_RecordList[11].Second;
			m_RecordList[10].bFlag = 1;
		}
	}
}

void CBowling::Output()
{
	for(int j=0;j<=m_iRound;j++)
	{
		cout<<j+1<<"\t";
		
		if(m_RecordList[j].iFlag != 0)
		{
			if(m_RecordList[j].First != 0)
			{
				cout<<m_RecordList[j].First<<"\t";
			}
			else
			{
				cout<<"/";
				cout<<"\t";
			}

			if(m_RecordList[j].Second != 0)
			{
				cout<<m_RecordList[j].Second<<"\t";
			}
			else
			{
				cout<<"/";
				cout<<"\t";
			}
		}

		if(j == 10)
		{
			m_RecordList[11].All = 0;
			cout<<"/"<<"\t"<<"/"<<"\n";
		}
		else
		{
			cout<<m_RecordList[j].Grade<<"\t"<<m_RecordList[j].All<<"\n";
		}
	}
}

int CBowling::GetiFlag(int round)
{
	return m_RecordList[round].iFlag;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -