Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
5
Добавлен:
01.05.2014
Размер:
3.53 Кб
Скачать
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "MainUnit.h"
#include <stdio.h>
#include <fstream>
using namespace std;
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
char TypeOfGame=0;
int NumC=0,NumB=0;
Num *NFirst=NULL,*NCur=NULL;
Wrd *WFirst=NULL,*WCur=NULL;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::OnClick(TObject *Sender)
{
EditStr->SetFocus();

if(Sender==N11)
{
	MemoLog->Lines->Clear();

	MemoLog->Lines->Add(">> 00000?");

	EditStr->Text="";
	for(NCur=NFirst;NCur!=NULL;NCur=NFirst)
	{
		NFirst=NFirst->next;
		free(NCur);
	}
 /*	for(WCur=WFirst;WCur!=NULL;WCur=WFirst)
	{
		WFirst=WFirst->next;
		free(WCur);
	}  */
  return;
}
if(Sender==N12) MainForm->Close();
if(Sender==ButtonSend)
{
	if(EditStr->Text!="")
	{
		MemoLog->Lines->Add("<< " + EditStr->Text);
		if(sscanf(EditStr->Text.c_str(),"%d %d",&NumC,&NumB)==2)
		if(NumC==5&&NumB==5) MemoLog->Lines->Add(">> Игра закончена");
		else
		{
			NumGame();
			if(!NCur)
		{
			MemoLog->Lines->Add(">> Вы допустили ошибку");
			MemoLog->Lines->Add(">> Игра закончена");
		}
		else MemoLog->Lines->Add(IntToStr(NCur->n[0])+IntToStr(NCur->n[1])+IntToStr(NCur->n[2])+IntToStr(NCur->n[3])+IntToStr(NCur->n[4])+"?");
		}
	}
	EditStr->Clear();
}
}

//---------------------------------------------------------------------------


void __fastcall TMainForm::FormClose(TObject *Sender, TCloseAction &Action)
{if(Application->MessageBox("Вы действительно хотите выйти?","Выход",MB_ICONQUESTION+MB_YESNO)==IDNO)
  Action=caNone;
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::FormShow(TObject *Sender)
{EditStr->SetFocus();
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::EditStrKeyPress(TObject *Sender, char &Key)
{
if(Key==13)
OnClick(ButtonSend);
}
//---------------------------------------------------------------------------

void TMainForm::NumGame()
{int CCount,BCount;
 if(!NFirst)
 {int N[5],i;
  for(N[0]=0;N[0]<=9;N[0]++)
   for(N[1]=0;N[1]<=9;N[1]++)
	for(N[2]=0;N[2]<=9;N[2]++)
	 for(N[3]=0;N[3]<=9;N[3]++)
	  for(N[4]=0;N[4]<=9;N[4]++)
	  {CCount=0;
	   BCount=0;
	   for(i=0;i<5;i++)
		if(N[i]==0)
		 BCount++;
	   for(i=0;i<5;i++)
		if(N[i]==0)
		{CCount+=5;
		 break;
		}
	   if(BCount==NumB&&CCount==NumC)
	   {Num *temp=new Num(N,NULL);
		if(!NFirst)
		 NFirst=NCur=temp;
		else
		{NCur->next=temp;
		 NCur=temp;
		}
	   }
	  }
	  NCur=NFirst;
 }
 else
 {for(Num *prev=NCur,*temp=NCur->next;temp!=NULL;)
  {CCount=0;
   BCount=0;
   int i,j;
   for(i=0;i<5;i++)
    if(NCur->n[i]==temp->n[i])
	 BCount++;
   for(i=0;i<5;i++)
    for(j=0;j<5;j++)
     if(NCur->n[i]==temp->n[j])
     {CCount++;
      break;
     }
   if(BCount==NumB&&CCount==NumC)
   {prev=temp;
    temp=temp->next;
   }
   else
   {prev->next=prev->next->next;
    delete(temp);
    temp=prev->next;
   }
  }
  NCur=NCur->next;
 }
}
//---------------------------------------------------------------------------

Num::Num(int *N,Num *NEXT)
{for(int i=0;i<5;i++)
  n[i]=N[i];
 next=NEXT;
}




Соседние файлы в папке Быки и Коровы
  • #
    01.05.20141.12 Кб5Lab3.cpp
  • #
    01.05.201410.61 Кб5Lab3.obj
  • #
    01.05.2014876 б5Lab3.res
  • #
    01.05.20146.75 Mб5Lab3.tds
  • #
    01.05.20143.74 Кб5Lab3.~bpr
  • #
    01.05.20143.53 Кб5MainUnit.cpp
  • #
    01.05.201451 б5MainUnit.ddp
  • #
    01.05.201439.9 Кб5MainUnit.dfm
  • #
    01.05.20141.54 Кб5MainUnit.h
  • #
    01.05.201464.4 Кб5MainUnit.obj
  • #
    01.05.20148.64 Кб5MainUnit.~cpp