Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2016, 18:00   #1
mrowka
Новичок
Джуниор
 
Регистрация: 21.03.2016
Сообщений: 1
По умолчанию Игра: Быки и коровы

Помогите, пожалуйста, программа ведет неправильный подсчет

Условие:

Написать игру «Быки и коровы». Программа "загадывает" четырёхзначное число и играющий должен угадать его. После ввода пользователем числа программа сообщает, сколько цифр числа угадано (быки) и сколько цифр угадано и стоит на нужном месте (коровы). После отгадывания числа на экран необходимо вывести количество сделанных пользователем попыток. В программе необходимо использовать рекурсию.

Мое решение:

Код:
#include <iostream>
#include <time.h>
using namespace std;
int *m=new int [4];
int *q=new int [4];
static int sproba=0;
int *randNumber()
{
	for (int i = 0; i < 4; i++)
		*(m+i) = rand()%10;
	return m;
}
int *digits(int n)
{
	for (int i=3; i>=0; i--)
	{
		*(q+i)=n%10;
		n/=10;
	}
	return q;
}
void Count(int *x, int *y, int n, int *bull, int *cow)
{
   *bull = *cow = 0;
   for (int i = 0; i < n; i++)
      if (*(x+i) == *(y+i))
         (*bull)++;
   for (int i = 0; i < n; i++)
	   for (int j = 0; j < n; j++)
		   if ((*(x+i) == *(y+j)) && (i!=j))
			   (*cow)++;
}
void game(int *r, int *N)
{
	*N=sproba;
	cout << "Input your number: ";
	int number;
	cin >> number;
	int *b=digits(number);
	int bull, cow;
	Count(r, b, 4, &bull, &cow);
	cout << "Bulls = " << bull << ", cows = " << cow << endl;
	sproba++;
	if (bull == 4) cout << "OK!\n";
	else game(r, N);
} 
void main()
{
	int m = 0;
	srand(time(NULL));
	int *a=randNumber();
	game(a, &m);
	cout << "Winning in " << m << " moves!\n";
}
mrowka вне форума Ответить с цитированием
Старый 21.03.2016, 18:08   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

добавьте еще тут
Код:
if (bull == 4) cout << "OK!\n";
вывод N для
Цитата:
После отгадывания числа на экран необходимо вывести количество сделанных пользователем попыток
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Народная игра "Быки и коровы" three_cats Общие вопросы C/C++ 0 26.10.2012 14:18
Игра быки-коровы sawyer1204 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 28.06.2012 03:25
Игра Быки Коровы (Delphi) whitedeath Помощь студентам 0 17.05.2012 17:59
Игра быки и коровы Денис56 Помощь студентам 6 21.12.2009 01:09
Игра "Быки и коровы"(Паскаль) bobby2008 Помощь студентам 33 12.05.2009 23:44