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

Цикл if должен определять, подходит ли число под указанные критерии

08.11.2022, 14:17. Показов 594. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возможно код выглядит громоздко, но надеюсь, что кто нибудь его поймет ))

Цикл if должен определять, подходит ли число под указанные критерии. Если нет, то по задумке, continue в else должен возвращать в начало цикла, пока не введем правильное значение.

В первой половине кода всё работает, как и было задумано. Но по неизвестной мне причине, для второго юзера continue не возвращает нас в начало цила и выполнение кода идет дальше.

В чем проблема?


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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
Random rand = new Random();
 
            Console.Write("Set user 1 name: ");
 
            string user1 = Console.ReadLine();
 
            Console.Write("Set user 2 name: ");
 
            string user2 = Console.ReadLine();
 
            int gameNumber = rand.Next(12, 121);
 
            Console.Write("Minimum number: ");
            int min = int.Parse(Console.ReadLine());
 
            Console.Write("Maximum number");
            int max = int.Parse(Console.ReadLine());
 
            Console.WriteLine($"The number is {gameNumber}. Let the game begin!");
 
            while (gameNumber > 0)
            {
                Console.WriteLine($"{user1} turn! Set the number from {min} to {max}");
                int hit1 = int.Parse(Console.ReadLine()); 
 
                if (hit1 >= min && hit1 <=max)     
                {
                    gameNumber -= hit1;
                    
                    int phraseIndex = rand.Next(1, 4); 
                    switch (phraseIndex)  
                    {
                        case 1:
                            Console.WriteLine($"Great job {user1}! The number is {gameNumber}");
                            break;
                        case 2:
                            Console.WriteLine($"Thanks, {user1}! The number is {gameNumber}");
                            break;
                        case 3:
                            Console.WriteLine($"Keep it going, {user1}! The number is {gameNumber}");
                            break;
                    }
 
                    
                    if (gameNumber <= 0)                         
                    {
                        Console.WriteLine($"{user1} wins!");
                        break;
                    }    
                }
                else
                {
                    Console.WriteLine($"Wrong number! Please choose between {min} and {max}.") ;
                    continue;
                    
                }
 
                Console.WriteLine($"{user2} turn! Set the number from {min} to {max}");
                int hit2 = int.Parse(Console.ReadLine()); 
 
                if (hit2 >= min && hit2 <= max)
                {
                    gameNumber -= hit2;
 
                    int phrase2Index = rand.Next(1, 4); 
                    switch (phrase2Index)  
                    {
                        case 1:
                            Console.WriteLine($"Great job {user2}! The number is {gameNumber}");
                            break;
                        case 2:
                            Console.WriteLine($"Thanks, {user2}! The number is {gameNumber}");
                            break;
                        case 3:
                            Console.WriteLine($"Keep it going, {user2}! The number is {gameNumber}");
                            break;
                    }
                    if (gameNumber <= 0)                                           
                    {
                        Console.WriteLine($"{user2} wins!");
                        break;
                    }
                }
                else
                {
                    Console.WriteLine($"Wrong number! Please choose between {min} and {max}.");
                    continue;       //вот тут оно не хочет работать
 
                }
            }
 
            Console.ReadKey();
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.11.2022, 14:17
Ответы с готовыми решениями:

Проверить, подходит ли число под условие
Доброго времени суток, дали мне задание Проверить подходит ли число под условие (True or False) − запись в двоичной и шестеричной...

Описать функцию, которая найдет первое число подходящее под указанные в условии требования
Помогите пожалуйста.Описать функцию,которая найдет первое число , меньшее некоторого указанного N , которое при делении на 2 дает в остатке...

Если число подходит под заданный интервал - выводим в Memo, если нет - берем следующее
Если число подходит под заданный интервал - выводим в Memo, если нет - берем следующее Вобщем не пойму как реализовать, интервал от 1...

9
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3427 / 2746 / 575
Регистрация: 04.09.2018
Сообщений: 8,620
Записей в блоге: 3
08.11.2022, 14:23
Цитата Сообщение от ruser1 Посмотреть сообщение
Но по неизвестной мне причине
Причина только одна - не "попадание" в блок else, содержащий continue.
Ну и проверка на равенство в if (hit2 >= min && hit2 <= max) бессмысленная, т.к. hit2 не может одновременно быть равным min и max, если сами min и max различны.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
08.11.2022, 14:24
Цитата Сообщение от ruser1 Посмотреть сообщение
//вот тут оно не хочет работать
А как вы определили что "не хочет"?
И зачем там continue если второе условие уже в конце цикла и после него все равно ничего нет?

Ну и это, вы функции/методы не проходили еще? Зачем у вас так много дублирования?
0
20 / 13 / 7
Регистрация: 04.02.2022
Сообщений: 69
08.11.2022, 15:04
Лучший ответ Сообщение было отмечено ruser1 как решение

Решение

ruser1, по логике программы создается впечатление, что после неправильного ввода значения вторым юзером должно идти перенаправление на повторный запрос для него (строку 58), а continue отправляет на запрос для первого юзера (строку 23). Поэтому первая половина отрабатывает правильно, а во второй логика ломается.

Добавлено через 14 минут
Цитата Сообщение от wizard41 Посмотреть сообщение
Ну и проверка на равенство в if (hit2 >= min && hit2 <= max) бессмысленная
Тоже так сразу показалось, но условие должно быть верно для hit2, включая крайние значения: min и max.
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
08.11.2022, 15:10
Подобные проблемы решаются отладчиком за несколько секунд...
1
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3427 / 2746 / 575
Регистрация: 04.09.2018
Сообщений: 8,620
Записей в блоге: 3
08.11.2022, 15:15
Цитата Сообщение от Dim_en Посмотреть сообщение
но условие должно быть верно для hit2
это уже дело десятое. Я говорю про то, что знак равенства в данном сравнении с AND лишний.
0
2394 / 1923 / 763
Регистрация: 27.07.2012
Сообщений: 5,567
08.11.2022, 15:15
Думаю, корень зла во фразе
Цитата Сообщение от ruser1 Посмотреть сообщение
Цикл if
3
20 / 13 / 7
Регистрация: 04.02.2022
Сообщений: 69
08.11.2022, 16:00
Цитата Сообщение от wizard41 Посмотреть сообщение
Я говорю про то, что знак равенства в данном сравнении с AND лишний.
Почему лишний? Проверяется принадлежность числа диапазону, включая границы диапазона. Без знака равенства была бы проверка с исключением границ диапазона.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3427 / 2746 / 575
Регистрация: 04.09.2018
Сообщений: 8,620
Записей в блоге: 3
08.11.2022, 16:08
Цитата Сообщение от Dim_en Посмотреть сообщение
Почему лишний?
Да эт я запутался. хит - хат...
0
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
08.11.2022, 16:18
Цитата Сообщение от ruser1 Посмотреть сообщение
Но по неизвестной мне причине, для второго юзера continue не возвращает нас в начало цила и выполнение кода идет дальше.
а вы проверяли логику кода?
у вас если сработает это "continue", то ход перейдет первому игроку
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.11.2022, 16:18
Помогаю со студенческими работами здесь

Найти хостинги под критерии
Добрый день. Немного пердисловия: Мне 17, начал стажироваться у сисадмина, набираюсь опыта, учусь. Задание: Нужно найти 3 разных(!)...

Критерии выбора площадок под статьи
Здравствуйте! Интересует Ваша политика по отношению к выбору площадок под статьи. Хотел бы узнать всё в подробностях, интересуют все...

Разработать программу, которая будет определять, какое минимальное расстояние должен проплыть Вася, чтобы выбраться
Василий плавал в бассейне размером N x M метров (N ≠ M) и устал. В этот момент он обнаружил, что на расстоянии x метров от одной из...

Создать текстовый файл, содержащий произвольное количество букв русского алфавита. Длину каждой строки должен определять
Не могу понять как сделать

Отладить программу. Для повторения работы программы должен быть организован цикл while или цикл repeat
Отладить программу. Для повторения работы программы должен быть организован цикл while или цикл repeat. Сделать так, чтобы при вводе...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru