4 / 4 / 1
Регистрация: 02.11.2013
Сообщений: 164
1

Выбор наименьшего и наибольшего числа

07.03.2015, 17:10. Показов 2025. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создан командный файл следующего содержания:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
setlocal enabledelayedexpansion
set /P "number=Enter your numbers here: "
 
for %%i in (%number%) do (
  set /A n+=1& if !n!==1 (set min=%%i& set max=%%i)
  if "%%i"=="-" goto break
  if %%i LSS !min! set min=%%i
  if %%i GTR !max! set max=%%i
)
:break
 
Echo Min: %min%
Echo Max: %max%
pause
Пожалуйста, объясните как работает код. В особенности интересуют строки setlocal enabledelayedexpansion и set /A n+=1& if !n!==1 (set min=%%i& set max=%%i).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.03.2015, 17:10
Ответы с готовыми решениями:

Поиск в каталоге файлов наибольшего и наименьшего размеров
Помогите написать командный файл: Разработать и выполнить командный файл (КФ), выполняющий поиск...

Выбор наибольшего и наименьшего значения из колонки табличной части документа
Добрый вечер. Как можно найти наибольшее и наименьшее значение в колонке табличной части (на...

Определить позицию наименьшего числа и наибольшего числа и произвести сортировку
Дан массив, int ar2 = {4,7,2,1,9,12,32,6,5,74,69,11,3,60,17} Необходимо определить позицию...

Вводятся три числа A, B, C. Выведите все целые числа от наименьшего из них до наибольшего
Вводятся три числа A, B, C. Выведите все целые числа от наименьшего из них до наибольшего. Сделать...

4
1744 / 349 / 41
Регистрация: 15.10.2012
Сообщений: 548
07.03.2015, 17:48 2
setlocal enabledelayedexpansion разрешает подставлять переменные как !var!
А строка set /A n+=1& if !n!==1 (set min=%%i& set max=%%i) это такой кривой способ иницилизации переменных min и max. Кривой потому что, во-первых, выполняется при каждой итерации, во-вторых, сама переменная n не иницилизирована (видимо, в надежде, что такой переменной с числовым значением никогда в системе не будет).
Я бы сделал так
Bash
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
setlocal enabledelayedexpansion
set /P "number=Enter your numbers here: "
set min=2147483647
set max=-2147483648
for %%i in (%number%) do (
    if %%i LSS !min! set min=%%i
    if %%i GTR !max! set max=%%i
)
Echo Min: %min%
Echo Max: %max%
pause
0
4 / 4 / 1
Регистрация: 02.11.2013
Сообщений: 164
07.03.2015, 18:08  [ТС] 3
Smitis, спасибо.
Но Ваш вариант считает неправильно: минимальное число выбирает верно, а максимальное - нет (тупо берет последнее введенное число и записывает его в максимальное)
0
1744 / 349 / 41
Регистрация: 15.10.2012
Сообщений: 548
07.03.2015, 18:46 4
Забавно
Bash
1
if 1234567890 gtr -1234567890 echo !!!
Видимо, глюк cmd. Такое впечатление, что при сравнении на уровне машинного кода проверяются не те (не все) флаги и в случае переполнения результат сравнения получается не правильным.
1
Эксперт WindowsАвтор FAQ
18068 / 7671 / 891
Регистрация: 25.12.2011
Сообщений: 11,444
Записей в блоге: 17
08.03.2015, 14:50 5
Smitis, Ограничение математики для оператора IF при сравнении чисел.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.03.2015, 14:50
Помогаю со студенческими работами здесь

Поиск наибольшего и наименьшего числа
Всем привет! Нужно найти максимально и минимальное числа из ниже приведенных переменных dim e1,...

Нахождение в масивах наибольшего,наименьшего числа.
Доброго времени суток.Скажите пожалуйста,как найти наибольший элемент в двумерном масиве,и как...

Нахождение наибольшего и наименьшего числа в stringgrid
Доброго времени суток! В общем имеется Srtinggrid величина которого меняется, по нажатию кнопки....

Процедура нахождения наибольшего и наименьшего числа
Привет всем ) столкнулся с очердной проблемой а точнее с процедурой и функцией . Кому не сложо...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru