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

Вводить с клавиатуры целые числа, пока не нарушается возрастание этой последовательности

12.08.2014, 11:39. Показов 4941. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Составьте программу, позволяющую пользователю вводить с клавиатуры
целые числа, пока не нарушается возрастание этой последовательности
или пока пользователь не введет число, равное 100.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int val = 0;
            int x = 0;
            do
            {
            metka:
                    try
                    {
                        x = val;
                        Console.Write("Введите целое число: ");
                        val = int.Parse(Console.ReadLine());
                        Console.WriteLine("x = {0}, val = {1}", x, val);
                    }
                    catch (FormatException e)
                    {
                        Console.WriteLine(e.Message);
                        goto metka;
                    }                               
            }
            while(val != 100 && x < val);
Ничего сложного в программе нет, но я не могу понять почему в куске кода while(val != 100 && x < val); используется &&? Когда я писал, то использовал ||, т.е. даже если одно из этих уловий выполняется, то цикл прерывается, но с || не работает, почему?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.08.2014, 11:39
Ответы с готовыми решениями:

Вводить с клавиатуры целые числа пока их сумма меньше 100
Вводить с клавиатуры целые числа пока их сумма меньше 100 (запоминать введённые числа не требуется), посчитать и вывести на экран...

Вводить с клавиатуры целые положительные числа до тех пор, пока не будут введены два одинаковых числа подряд
Вводить с клавиатуры целые положительные числа до тех пор, пока не будут введены два одинаковых числа подряд. Вывести на экран среднее...

Вводить с клавиатуры любые целые числа до тех пор, пока не будет введено число 99
1-я задача Вводить с клавиатуры любые целые числа до тех пор, пока не будет введено число 99. Сколько чисел из введённых было...

9
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
12.08.2014, 12:06
C#
1
2
3
4
5
6
7
int x=0;
do
{
   
      Console.WriteLine("Введите целое число: ");
}
while(!int.TryParse(Console.ReadLine(), out x))
1
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
12.08.2014, 12:26
gen3, почитайте внимательно как работают операторы &, &&, |, ||.
Цитата Сообщение от gen3 Посмотреть сообщение
даже если одно из этих условий выполняется, то цикл прерывается
Наоборот не прерывается. Когда выполняется while? до тех пор пока условие верно. А ваше условие val != 100 || x < val возвращает верно, когда верно хотя бы одно из подусловий. Программа остановится только если ввести два раза подряд 100, тогда нарушатся сразу оба условия.
1
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
12.08.2014, 12:52
прошу прощения, недочитал
C#
1
2
3
4
5
6
7
int x=0, val;
do
{   
      val = x;
      Console.WriteLine("Введите целое число: ");
}
while((!int.TryParse(Console.ReadLine(), out x) || x>val) && x!=100)
0
4 / 4 / 3
Регистрация: 30.04.2013
Сообщений: 31
12.08.2014, 13:14  [ТС]
Learx,
Цитата Сообщение от Learx Посмотреть сообщение
while((!int.TryParse(Console.ReadLine(), out x) || x>val) && x!=100)
можно подробнее про эту строчку?
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
12.08.2014, 14:48
gen3,
обозначим A=!int.TryParse(Console.ReadLine(), out x) (истина, если не получилось получить число)
B = x>val (Новое число больше предыдущего)
и C = x!=100 (х не равен 100)
если x=100, то C будет ложью и все выражение (A||B) && C будет ложь
если введеное число не удастся перевести, то А вернет истину и выражения B и C даже не будут вычислятся(ленивая проверка уловия) и цикл повторится
если число счталось, то выполняется проверка В.
если число не больше предыдущего, то В будет ложь и ввод прервется
если же больше, то В истина и цикл повторится
2
6 / 4 / 0
Регистрация: 07.02.2014
Сообщений: 17
12.08.2014, 15:46
Learx,
По поводу, если число не удастся перевести, то... . Если я не ошибаюсь B не выполнится(ввиду оператора ||), а C все таки пройдет проверку. Исправьте если я не прав.
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
12.08.2014, 16:39
У меня вообще код Learx не запустился. Хотя возможно дело в онлайн компиляторе
В любом случае, мне кажется пихать все подряд в while(...) не очень хорошая идея. Малочитабельно, малорасширяемо. Вместо перехвата ошибок программа считает цикл завершенным.
У автора лично мне не понравилось использование goto. Я бы оформил это в виде метода+рекурсия.
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
12.08.2014, 16:55
elfrei, да,вы правы... но в данном случае это не критично.

Добавлено через 5 минут
tarasalk, можно и так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int x=0, val; bool f=true;
do
{   
      val = x;
      Console.WriteLine("Введите целое число: ");
      f = !int.TryParse(Console.ReadLine(), out x);
      if(f)
      {
          Console.WriteLine("Это не целое число!!!");
          continue;
      }
      if(x<=val)
      {
          Console.WriteLine("Должна быть возрастающая последовательность!!!");
          continue;
      }
      if(x>=100) break;
}
while(true)
1
6 / 4 / 0
Регистрация: 07.02.2014
Сообщений: 17
12.08.2014, 17:20
Learx, спасибо, это я для самопонимания
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.08.2014, 17:20
Помогаю со студенческими работами здесь

Вводить с клавиатуры целые числа и суммировать четные, пока сумма <=10. На экран вывести сумму и количество слагаемых
Всем привет. Необходимо решить задачу по Scilab: &quot;Вводить с клавиатуры целые числа и суммировать четные, пока сумма &lt;=10. На экран...

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

Вводить с клавиатуры целые числа (>0) и выводить на экран квадраты этих чисел до тех пор, пока не будет введено число 0 (while-do)
Вводить с клавиатуры целые числа (&gt;0) и выводить на экран квадраты этих чисел до тех пор, пока не будет введено число 0

Вводить с клавиатуры целые числа до тех пор, пока не будет введено число 0. На экран вывести количество введеных чисел
Вводить с клавиатуры целые числа до тех пор, пока не будет введено число 0. На экран вывести количество введеных чисел (в программе не...

Вводить с клавиатуры целые числа (>0) и выводить на экран квадраты этих чисел до тех пор, пока не будет введено число 0. Использовать цикл do...while.
Вводить с клавиатуры целые числа (&gt;0) и выводить на экран квадраты этих чисел до тех пор, пока не будет введено число 0. Использовать цикл...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru