#include <stdio.h>
#include <vcl.h>
#include <conio.h>
#include <time.h>
#include <dos.h>
#include <iostream.h>
int Add(int,int);
int Sub(int,int);
int Mul(int,int);
int Div(int,int);
int shashki[24]={1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,25,50,75,100};
int user_nums[6];
int chislo,x,Result;
long time_start,time_stop,time_now,time_x,timer;
long b;
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
char bufRus[256];
char* Rus(const char* text)//Функция для русификации выводимой информации
{
CharToOem(text,bufRus);
return bufRus;
}
int Add(int x,int y)//функция сложения
{
Result=x+y;
return Result;
}
int Sub(int x,int y)//функция вычитания
{
Result=x-y;
return Result;
}
int Mul(int x,int y)//функция умножения
{
Result=x*y;
return Result;
}
int Div(int x,int y)//функция деления
{
Result=x/y;
if (Result*y==x)
{
return Result;
}
}
void Select_Operation(int j, int x, int y) //функция для выбора операции
{
switch (j)
{
case 0:
Add(x,y);
case 1:
Sub(x,y);
case 2:
Mul(x,y);
case 3:
Div(x,y);
}
}
void Wait(void)
{
time_start=GetTickCount();
time_stop=GetTickCount()+45000;
for (int i=0;i<=45;i++)
{
time_now=GetTickCount();
if (time_now!=time_stop)
{
timer=GetTickCount()+1000;
update: time_x=GetTickCount();
while (time_x<=timer)
{
goto update;
}
cout<<45-i<<endl;
}
}
}
int main(int argc, char* argv[])// Основная программа
{
randomize();
chislo=random(999);
while (chislo<=99)
{
randomize();
chislo=random(999);
}
x=random(24);
user_nums[0]=shashki[x];
x=random(24);
user_nums[1]=shashki[x];
x=random(24);
user_nums[2]=shashki[x];
x=random(24);
user_nums[3]=shashki[x];
x=random(24);
user_nums[4]=shashki[x];
x=random(24);
user_nums[5]=shashki[x];
cout<<Rus("Твоя песенка спета, любопытный!")<<endl<<endl;
cout<<Rus(" Случайным образом получены 6 шашек среди 24, образованных следующим")<<endl;
cout<<Rus("образом: двойной набор из 10 шашек с числами от 1 до 10; четыре шашки с ")<<endl;
cout<<Rus("числами 25,50,75,100.")<<endl;
cout<<Rus(" Случайным образом выбирается трехзначное целое число (100 - 999,включая")<<endl;
cout<<Rus("границы).")<<endl<<endl;
cout<<Rus("Задача состоит в том, что нужно за 45 сек. обнаружить последовательность")<<endl;
cout<<Rus("операций, использующих только значения выбранных шашек, причем каждую не")<<endl;
cout<<Rus("более одного раза, и соединить их знаками + - * / (деление разрешается")<<endl;
cout<<Rus("только нацело, без остатка).")<<endl<<endl;
cout<<Rus("Ваше число: ")<<chislo<<endl;
cout<<Rus("Ваши шашки: ")<<user_nums[0]<<" "<<user_nums[1]<<" "<<user_nums[2]<<" "<<user_nums[3]<<" "<<user_nums[4]<<" "<<user_nums[5]<<endl;
Wait();
Result=user_nums[0];
repeat: for (int i=0,k=5;i<=5,k>=0;i++,k--)
{
for (int j=0;j<=3;j++)
{
Select_Operation(j,Result,user_nums[k]);
}
}
if (Result!=chislo)
{
cout<<Result<<endl;
goto repeat;
}
cin>>"";
return 0;
}
Задача поиска последовательности операций над числами на C++
Пытался решить, вот что получилось:
Код:
Но не получается найти подходящий алгоритм. Помогите!