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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.09.2011, 11:55   #1
turtles
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 59
По умолчанию Угадайте число

Программа должна считать количество попыток, которое потребовалось пользователю, чтобы угадать число. И в конце сообщать, сколько было попыток, также должна подсказывать пользователю, что он ошибся в знаке, если программа загадала положительное число, а пользователь ввёл отрицательное. И наоборот.
Программа должна загадывать целое число из отрезка от [−10;10], исключая ноль. При этом, постараться, чтобы распределение случайных чисел генерируемых программой было равномерных (т. е. в случае выпадения нуля его нельзя просто заменить на какое-то другое подходящее число, например, на 1, ведь тогда 1 буде выпадать с вдвое большей вероятностью, чем остальные числа).

Код:
import java.util.Scanner;
import java.lang.Math;
public class Main {
    public static void main(String[] args) {
       
        double prog, user;
        prog = Math.floor(Math.random() * (10 - 10) + 10);
        System.out.println("Я загадала число от -10 до 10, отгадайте его.");
        do {
            System.out.print("Вводите ваше число: ");
         
            Scanner input = new Scanner(System.in);
         
            user = input.nextDouble();
            if(user == prog) {
                System.out.println("Вы угадали!");
            } else {
             
                if ( user == Math.floor(user) && user > -10 && user < 10) {
                    System.out.print("Вы не угадали! ");
                 
                    if( prog < user ) {
                        System.out.println("Моё число меньше.");
                    } else {
                        System.out.println("Моё число больше.");
                    }
                } else {
                    System.out.println("Вы ввели не подходящее число!");
                }
            }
        } while( user != prog );
        System.out.println("До свиданья!");
    }
}
turtles вне форума Ответить с цитированием
Старый 12.09.2011, 12:08   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

И что? Проблема-то в чем?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.09.2011, 12:31   #3
turtles
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 59
По умолчанию

Подскажите как дописать код к программе? По заданию в верху?
turtles вне форума Ответить с цитированием
Старый 12.09.2011, 12:59   #4
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

Вот тут надо поправить
Код:
prog = Math.floor(Math.random() * (10 - 10) + 10);
т.к. (10-10) будет ноль, который вы умножете на случайное число получите ноль к которому прибавете 10 и округлите, в итоге всегда будет загадываться число 10.
я бы число в цикле while генерировал, типа пока число = 0 генерируем по новой, тогда программа 0 не будет загадывать, а все числа будут случайно распределены в нужном интервале.
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 12.09.2011, 13:35   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Эта игрушка вообще обычно самая первая . Из того что доступно начинающим. Однако она у Вас немного усложненная. Обычно число от нуля до 100 и число попыток строго фиксировано и равно 10 . Там все должно быть немного проще.
1. Загадываете число (это у Вас есть), только надо скорректировать для получения правильных значений.
2. В цикле пытаться угадать число. Цикл также while. Для попыток нужна еще одна переменная, которая должна увеличиваться, до тех пор, пока пользователь не угадает .
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 12.09.2011, 13:41   #6
turtles
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 59
По умолчанию

Спасибо за совет "Utkin"
turtles вне форума Ответить с цитированием
Старый 13.09.2011, 13:59   #7
turtles
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 59
По умолчанию

Подскажите что не правильно в цикле который подсчитает количество попыток и выводит их результат на экран в веденных пользователем,не могу понять что не правильно?
Выводит не тот результат который нужно.

Код:
import java.util.Scanner;
import java.lang.Math;
public class Main {
    public static void main(String[] args) {
 
        double prog, user;
 
        prog = Math.floor(Math.random() * 20 - 10);
        System.out.println("Я загадала число от -10 до 10, отгадайте его.");
 
 
        do {
 
            System.out.print("Вводите ваше число: ");
 
            Scanner input = new Scanner(System.in);
 
            user = input.nextDouble();
            
           {
               for(int count = 0;count < user;count++){
 
               if(user == prog) {
                System.out.println("Вы угадали!");
            } else {
 
                if ( user == Math.floor(user) && user > -10 && user < 10) {
                    System.out.print("Вы не угадали! ");
 
                    if( prog < user ) {
                        System.out.println("Моё число меньше.");
                    } else {
                        System.out.println("Моё число больше.");
                    }
                } else {
                    System.out.println("Вы ввели не подходящее число!");
                 }
               }
 
              System.out.println("Количество попыток " + count);  }
           }
        } while( user != prog );
         System.out.println("До свиданья!");
 
        }
}
цикл
Код:
 for(int count = 0;count < user;count++)
Как можно его исправить?
turtles вне форума Ответить с цитированием
Старый 13.09.2011, 14:09   #8
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Что Вы хотели сказать этим циклом?
У вас получается некий перебор от 0 до user, если я все правильно понял, вложенный в цикл do {...} while. Это вам не надо.
Замените
Код:
for(int count = 0;count < user;count++)
на просто
Код:
count++
, а
Код:
int count = 0
оставьте вне цикла do {...} while, тогда программа будет именно считать прогоны цикла, т.е. попытки пользователя.
И да, 0 у Вас все равно может быть загадан.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 13.09.2011, 14:41   #9
turtles
Пользователь
 
Регистрация: 17.02.2011
Сообщений: 59
По умолчанию

Спасибо за ответ "Vanta11a"

Подскажите "Vanta11a" как теперь сделать в коде , чтоб например я ввожу отрицательное число, а программа загадала положительное число и вы водило об этом ошибку что я ввел не правильное число как бы выдавала подсказку какое число нужно вводить.
turtles вне форума Ответить с цитированием
Старый 14.09.2011, 09:38   #10
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

Поменяй
Код:
                    if( prog < user ) {
                        System.out.println("Моё число меньше.");
                    } else {
                        System.out.println("Моё число больше.");
                    }
на
Код:
                   if( prog * user <0) {
                        System.out.println("Моё число другого знака.");
                    else if( prog < user ) {
                        System.out.println("Моё число меньше.");
                    } else {
                        System.out.println("Моё число больше.");
                    }
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны действительное число a, натуральное число n. Вычис- лить: Petrovich83 Помощь студентам 1 09.04.2011 11:30
Написать программу, которая за меньшее число ходов отгадывает загаданное число gomz007 Помощь студентам 16 08.11.2009 12:57
Вывести число, предшествующее первому отрицательному и число, следующее за последним отрицательным Rid Паскаль, Turbo Pascal, PascalABC.NET 4 22.12.2008 16:50
Найти и вывести все слова,у котоpых число гласных букв пpевышает число согласных. Briz Помощь студентам 2 11.05.2008 00:56
Ввести число N и определить делится ли оно без остатка на число M (VBA) Ivanich Microsoft Office Excel 7 24.04.2008 19:43