Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 0
Регистрация: 23.02.2014
Сообщений: 72
1

Поиск числа (бинарный поиск)

26.11.2017, 11:51. Показов 473. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, пытаюсь написать программу, которая угадывает загаданное пользователем четырехзначное число. Основную часть кода написал, но возникает проблема с тем, что не всегда значения совпадают (расхождения на +-1). Подпрограмма select() позволяет выбрать да или нет, и возвращает 1 для да, и 2 для нет
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 private static int choice(int avg, int type)
        {
            string text = "";
            if (type == 1) text = "Заданное число больше {0}?"; 
            else text = "Заданное число равно {0}?";
 
            Console.Clear();
            Console.WriteLine( text, avg);
            Console.WriteLine("Да Нет");
            return select();
        }
 
        private static void game()
        {
            int min = 1000, max = 9999, avg = 0;
            int choice = -1;
            bool ch = true;
            int num = -1;
 
            while (ch)
            {
                avg = (min + max) / 2;                
                choice = Program.choice(avg, 1);
                if (choice == 1) max = avg;
                else if (choice == 2) min = avg;
                if (max - min == 1) ch = false;
            }
            
            choice = Program.choice(avg, 2);
 
            Console.Clear();
            /*if ((max - min == 1) && choice == 1) num = min;
            else if ((max - min == 1) && choice == 2) num = max ;*/
 
            if (avg >= 5002 )
            {
                if ((max - min == 1) && choice == 1) num = max;
                else if ((max - min == 1) && choice == 2) num = min;
            }
            else if (avg <= 5001 )
            {
                if ((max - min == 1) && choice == 1) num = min;
                else if ((max - min == 1) && choice == 2) num = max;
            }       
            
            Console.WriteLine("Ваше число: {0}", num);
 
 
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2017, 11:51
Ответы с готовыми решениями:

Бинарный поиск загаданного числа
Я все и вики читал, и у друзей спрашивал. Ни кто толком объяснить не может, что такое бинарный...

Бинарный поиск заданного числа в одномерном массиве
Бинарный поиск заданного числа в одномерном массиве

Бинарный поиск числа, значение которого равно его индексу
Нужно используя бинарный поиск, найти позицию элемента, значение которого совпадает с его номером в...

Бинарный поиск На c#
В институте сразу же начали писать на C#, конечно же, никто ничего не объяснил. Второй день мучаюсь...

0
26.11.2017, 11:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2017, 11:51
Помогаю со студенческими работами здесь

Бинарный поиск
Найти в массиве елемент со значением Х с помощью бинарного поиска. Добавлено через 1 минуту...

Бинарный поиск
Доброе время суток! Подскажите пожалуйста, в чем заключается ошибка? иногда выводит все правильно, ...

Бинарный поиск
Элементы массивов вводятся пользователем вручную с клавиатуры. При вводе данных предусмотреть...

Рекурсивный бинарный поиск
Помогите, ребята) нужна программа для рекурсивного бинарного поиска. Этот кусок кода может поможет....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru