Не могу придумать нормальный алгоритм для подсчета коров, программа при вводе двух одинаковых двузначных чисел("3 6 3 6"сравниваем с "3 6 7 5") считает 4 коровы.
#include "std_lib_facilities.h"
//"БЫки и Коровы" v0.2
int main(int argc, char const *argv[])
{
bool condit=false,
condit1=true;//условие
vector<int> num;//вектор для хранения загадонного числа
int h=0,//загадонные числ
j=0,//отгадываемые числа
cow=0,//коровы
bull=0;//быки
hello_user("Быки и Коровы", 1);
cout<<"Читай правила внимательно!\n\n"
<<"///////////////////////////\n\n"
<<"Компьютер загадыват четырех значное число,\n"
<<"а ваша задача его отгадать.\n"
<<"Компьютер будет вам помогать:\n"
<<"Коровы - это отгаданые числа, но стоят не на своих местах.\n"
<<"Быки - это отгаданые числа, которые стоят на своих местах.\n\n"
<<"///////////////////////////\n\n";
cout<<"Если ты понял правиа нжимай 'Enter'\n";
do{
cin.clear(); // сбрасываем флаг ошибки
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
if(condit1==true){
//загадываем число
for (int i = 0; i < 4; ++i)
{
h=randint(10);
num.push_back(h);
if(num.size()>4)num.clear();
//cout<<num[i]<<endl;
}
condit1=false;
cout<<"Можешь отгадывать я загадал числа от 0 до 9\n";
array_print(num);}
//////цикл для ввода чисад/////
{ vector<int> num1;//для вводимого ползователем числа
for (int i = 0; i < num.size(); ++i)
{
cin>>j;
num1.push_back(j);
}
array_print(num1);//создано для просмотра вектора
//////////////////////////////
for (int i = 0; i < num.size(); ++i)
{
if(num1[i]==num[i]) bull++;
if(num1[0]==num[i]) cow++;
if(num1[1]==num[i]) cow++;
if(num1[2]==num[i]) cow++;
if(num1[3]==num[i]) cow++;
}
}
cout<<"Быков: "<<bull<<'\n'
<<"Коров: "<<cow<<endl;
if(bull==4){
cout<<"Ты победил!\n"
<<"Я загодал число: \n";
array_printl(num);
num.clear();
condit=true;
condit1=true;
char i =' ';
i = ask_user("Хочешь сыграть еще");
if(i=='y'){
condit=false;}
}
cow=0;
bull=0;
}while(condit==false);
return 0;
}
"std_lib_facilities.h"
#include <limits>
#include <iostream>
#include <fstream>
#include <sstream>
#include <cmath>
#include <cstdlib>
#include <string>
#include <list>
#include <vector>
#include <algorithm>
#include <stdexcept>
using namespace std;
void array_printl(vector<int> & arr)
{
for (int i = 0; i < arr.size(); ++i) cout<<arr[i];
cout<<endl;
}
void array_print(vector<int> & arr){for (int i = 0; i < arr.size(); ++i) cout<<i<<" Ячейка массива:"<<arr[i]<<endl;}
char ask_user(string question)
{
cout<<question<<" ? (yes/no)\n";
string answer = " ";
cin>>answer;
if(answer=="yes"||answer=="y") return 'y';
if(answer=="No"||answer=="n") return 'n';
}
Так вам наверное надо исключить из дальнейших расчётов то число, которое отгадано:
for (int i = 0; i < num.size(); ++i)
{
if(num1[i]==num[i]) { bull++; continue;}
if(num1[0]==num[i]) { cow++; continue;}
if(num1[1]==num[i]) { cow++; continue;}
if(num1[2]==num[i]) { cow++; continue;}
if(num1[3]==num[i]) { cow++; continue;}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Недавно возникла проблема, что программа не работала при инициализации через :v_(v), а при обычном сработало, но разобраться, в чем проблема,...
Я не могу понять почему компилятор выдает мне ошибку Ошибка C4700 использована неинициализированная локальная переменная "TempNode"Вот мой код: