Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программа угадывания числа - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ динамический двумерный массив http://www.cyberforum.ru/cpp-beginners/thread114378.html
Помогите пожалуйста!!!нужно срочно написать программу! Сформировать динамический двумерный массив, заполнить его случайными числами и вывести на печать. Добавить строку с заданным номером и...
C++ в массиве найти сумму и количество элементов каждого столбца с заданным условием 3. В прямоугольной матрице, размерностью n*m, заполненной случайным образом числами из промежутка , найти сумму и количество элементов каждого столбца с заданным условием (хранить эти значения в... http://www.cyberforum.ru/cpp-beginners/thread114361.html
C++ Удаление элемента из связанного списка.
День добрый. Вот пытаюсь написать функцию, которая удалала бы элемент из списка, где его цыфровое значение = 0: struct elem { int num; elem *next; }; void sort (elem*&first)
C++ FileT
Скажите как открыть файл txt для чтения, и где указывается путь
C++ Перегрузка оператора, ошибочка http://www.cyberforum.ru/cpp-beginners/thread114301.html
bool MyString::operator==(const MyString &rhs){ if (this->Length() != rhs.Length()) return false; for(unsigned int i=0;i<this->Length();i++) if(this->c!=rhs.c) return false; ...
C++ Двумерные массивы Дан массивы W (N, M) и Х (N), сформировать массив Y(N), где Yi=1, 2...N, есть сумма элементов i-ой строки массива, если она больше хi, иначе yi=xi. Заранее спасибо))) подробнее

Показать сообщение отдельно
insideone
Модератор
Автор FAQ
3642 / 921 / 49
Регистрация: 10.01.2010
Сообщений: 2,472
09.04.2010, 16:15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if(answer == 'y') {     
        temp = chislo;  
        if(chislo > lastchislo)
                chislo += round((chislo - lastchislo) / 2.0);  
        else
                chislo += round((lastchislo - chislo) / 2.0); 
        lastchislo = temp;
}
else
{          
        temp = chislo;   
        if(chislo > lastchislo)
                chislo -= round((chislo - lastchislo) / 2.0);  
        else
                chislo -= round((lastchislo - chislo) / 2.0);
        lastchislo = temp;
}
Смысл же в том чтобы отнять или прибавить к угадываемому числу разность предыдущего и текущего деленного на 2 Поэтому все это можно сократить до
chislo = chislo знак round(abs(lastchislo - chislo) / 2.0);
Если ответ answer == 'y' мы должны сделать больше => прибавить. Знак должен быть "+"
chislo = chislo + round(abs(lastchislo - chislo) / 2.0);
Если ответ не 'y' мы должны сделать меньше => отнять. Знак должен быть "-"
chislo = chislo - round(abs(lastchislo - chislo) / 2.0);

Вместо if и двух формул можно добавить переменную в формулу и сделать две в одном
chislo = chislo + answer * round(abs(lastchislo - chislo) / 2.0);
Если answer у нас +1 то формула будет
chislo = chislo + 1 * round(abs(lastchislo - chislo) / 2.0);
=> chislo = chislo + round(abs(lastchislo - chislo) / 2.0);

Если answer у нас -1 то формула будет
chislo = chislo + (-1) * round(abs(lastchislo - chislo) / 2.0);
=> chislo = chislo - round(abs(lastchislo - chislo) / 2.0);

Что нам и требовалось
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru