Здавствуйте, изучаю потихоньку C++ по книге Бьерна Страуструпа. В конце каждой главы есть небольшие задания, в частности есть задачка на угадывание целого числа от 1 до 100 за максимум 7 попыток. Набрасал следующий код:
#include <iostream>
#include <string>
#include <cmath>
#include <vector>
double round(double number)
{
return int(number + .5);
}
int main()
{
std::vector<double> a(9);
std::vector<std::string> s(8);
a[0] = 105; s[0] = "???";
a[1] = 50;
std::string c = "???";
std::cout << "Задумайте любое целое число от '1' до '100' \n" << "Программа будет задавать вопросы, если соглашаетесь введите 'y', иначе 'n'. \n";
for (int i=0; i < 7; ++i)
{
/* for (int k = 0; k < i+1; ++k)
{
if (a[k] == a[i+1])
{
s[i+1]=s[k];
c = s[i+1];
goto metka2;
}
}
*/
std::cout << i+1<<") Задуманное число меньше " << a[i+1] <<"? Ваш ответ: " ;
metka1:
std::cin >> c;
s[i+1] = c;
// metka2:
double r = a[i] - a[i+1];
double m = pow(r,2);
double m1 = pow(m,0.5);
if (c == "y") a[i+2] = a[i+1] - m1/2; //*
else if (c == "n") a[i+2] = a[i+1] + m1/2; //*
// if (c == "y") a[i+2] = round(a[i+1] - m1/2);
// else if (c == "n") a[i+2] = round(a[i+1] + m1/2);
else goto metka1;
}
std::cout << "\nВы задумали число " << round(a[8]) <<"\n"; //*
// std::cout << "\nВы задумали число " << a[8] <<"\n";
return 0;
}
Программа работает, но не так как мне хотелось бы, а хочется, чтобы вместо рациональных чисел она выводила целые в вопросах, но фокус с округлением не удался :( (случай если закоментировать строки, которые я обозначил «*», и раскоментировать те, что закоментены в приведённом примере). Что мне нужно изменить, чтобы добиться желаемого результата? Спасибо.