10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
|
||||||
1 | ||||||
Программа угадывания числа08.04.2010, 19:42. Показов 4826. Ответов 15
Метки нет (Все метки)
Помогите дописать программу. Косяк такой что если я загадал 48 то она не может спросить это число т.к. с делением траблы... Вообщем все по коду видно.
0
|
08.04.2010, 19:42 | |
Ответы с готовыми решениями:
15
Программа угадывания числа=)) Программа угадывания случайно выбранных координат цели Подсчет попыток угадывания числа Программа угадывания числа все время выдает "меньше", независимо от значения в TextBox |
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
08.04.2010, 19:45 | 2 |
Что не так? Может нужно делить на "2.0" ?
0
|
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
|
|
08.04.2010, 19:54 [ТС] | 3 |
всеравно идет округлеине и зависает на 47 а я загадал 48...
0
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
||||||
08.04.2010, 20:10 | 4 | |||||
1
|
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
|
|
08.04.2010, 20:23 [ТС] | 5 |
Чет я не вдуплил. расскажи на словах плз)
0
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
08.04.2010, 20:46 | 6 |
А что? Проблема же была в том что (chislo - lastchislo) / 2 получалось равным 0.5 что в приведении к int равняется 0. Но нам же нужно выдать другое число - поэтому делается округление и получается единица
0
|
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
|
||||||
08.04.2010, 21:50 [ТС] | 7 | |||||
у тебя всегда chislo += а у меня было и chislo -= а также answer быввет 1 и -1 видимо этим ты балансируешь... в проге твоей есть баг.если сначала сказать что число меньше 50 а потм всегда говорить больше то она будет предлагать опять больше 50.. а у меня такого небыло...
0
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
08.04.2010, 23:51 | 9 |
А как она должна реагировать на ложь?) Форматнуть винт?) Если текущее число 49 а пользователь говорит "больше" то деваться ей не куда. Используйте свой старый код просто оберните (chislo - lastchislo) / 2.0 в функцию round и все будет так же А answer 1 и -1 это просто для сокращения кода, не люблю когда почти одинаковый код идет, такая мания... все сокращать
Загадываешь в уме число, программа делает предположение, потом говоришь больше или меньше и т.к. в цикле пока программа не угадает
0
|
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
|
|||||||||||
09.04.2010, 12:06 | 10 | ||||||||||
Добавлено через 33 секунды хотя щас попробую на работоспособность Добавлено через 6 минут
0
|
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
|
|
09.04.2010, 14:42 [ТС] | 11 |
МедведЪ, чилсо от 1 до 100
Загадал 32 а программа угадать не может... chislo -= round((lastchislo - chislo) / 2); 33 -= round((34 - 33) / 2); //Идет округление round(0.5) { return 0; } получается 33 -= 0
0
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
||||||
09.04.2010, 15:04 | 12 | |||||
Krist_ALL,
0
|
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
|
||||||
09.04.2010, 15:07 [ТС] | 13 | |||||
а расскажи теперь еще раз про -1 а то невъехал((
0
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
||||||
09.04.2010, 16:15 | 14 | |||||
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
|
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
|
||||||
09.04.2010, 19:50 [ТС] | 16 | |||||
Округление если например пердыдущее число было 7 и программе надо сгенерировать число 3
ПОлный код исправленый
0
|
09.04.2010, 19:50 | |
09.04.2010, 19:50 | |
Помогаю со студенческими работами здесь
16
Программа угадывания чисел Программа угадывания букв Программа для угадывания чисел Угадывания числа Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |