вторник, 8 октября 2013 г.

Задача "Угадай число"

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

1. Сгенерируем случайное целое число из диапазона -10,10;
2. Если генерируется 0, мы должны повторить генерацию, пока не получим число из нужного диапазона, но не 0;
3. Создадим обект Scanner и попросим пользователся ввести целое число, из заданного отрезка;
4. Проверим является ли заданное число целым, если нет - укажем на ошибку;
5. Проверим находится ли введенное число в заданном диапазоне, если нет - укажем на ошибку и попросим ввести число заново;
6. Проверим - угадал ли пользователь загаданное число, если да - выведем поздравительное сообщение. Переменная с будет увеличиваться на один, каждый, когда число введено неправильно;
7. Если число не угадано проверим какое из чисел больше, и сообщим пользователю. Также, проверим совпадают ли знаки загаданного числа и введенного пользователем;

import java.util.Scanner;
public class Zadachi{
    public static void main(String[] args){
        int a,b,c=0;
        //Генерируем случайное целое число из диапазона -10,10 
        //Если a=0 повторяем генерацию
        do{
           a= (int)(Math.random()*20+1)-10; 
        }
        while(a==0);
        Scanner scn=new Scanner(System.in);
        System.out.println("Введите целое число из отрезка -10,10");
        if(scn.hasNextInt()){
            do{
                b=scn.nextInt();
                if(b<-10||b==0||b>10){
                    System.out.println("Вы ввели число не из-заданного диапазона или 0");
                    System.out.println("Повторите ввод");
                    }
                    else{
                        ++c;
                        if(b==a){
                            System.out.println("Вы угадали с "+c+" попытки");
                        }
                        else{
                            if(b<a)System.out.println("Число больше");
                            else System.out.println("Число меньше");
                            if((b<0&a>0)||(b>0&a<0))
                                System.out.println("Число с другим знаком");
                        }
                    }
                }
            
            while(b!=a);
        }
        else System.out.println("Ошибка. Введено не целое число");
        
    }
}

Комментариев нет:

Отправить комментарий