Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
nmv
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 26
1

Подсчет количества положительных и отрицательных чисел

12.09.2012, 15:42. Просмотров 2569. Ответов 12
Метки нет (Все метки)

Мне очень нужна помощь в создании bat-файла

Задание: разработать командный файл для интерпретатора командной стоки CMD OC WindowsXP-Windows7 для подсчета количества положительных и отрицательных чисел в текстовом файле. Считать что слова в файле записаны в формате ОДНО СЛОВО В СТРОКЕ. Имя файла задается первым параметром КФ. Кто знает, напишите код полностью.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2012, 15:42
Ответы с готовыми решениями:

Подсчет количества вещественных чисел и целых чисел в текстовом файле
Подсчет количества вещественных чисел и целых чисел в текстовом файле. Вещественные и целые числа...

Подсчет количества введенных чисел
Доброго времени суток! Нужно сделать программку, которая подсчитывает количество введенных чисел в...

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

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

Подсчет количества файлов и т.д
Люди помогите пожалуйста! Никак не могу решить задачу( "Создать командный файл, который во все...

12
Dragokas
Эксперт WindowsАвтор FAQ
17065 / 7120 / 861
Регистрация: 25.12.2011
Сообщений: 10,931
Записей в блоге: 16
12.09.2012, 15:52 2
Цитата Сообщение от nmv Посмотреть сообщение
ОДНО СЛОВО В СТРОКЕ
может быть
"Одно число в строке" ?
0
nmv
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 26
12.09.2012, 15:53  [ТС] 3
Нет, в задании "в формате ОДНО СЛОВО В СТРОКЕ".
0
Dragokas
Эксперт WindowsАвтор FAQ
17065 / 7120 / 861
Регистрация: 25.12.2011
Сообщений: 10,931
Записей в блоге: 16
12.09.2012, 15:54 4
Я понимаю, что в задании так написано.

Но Вы сами подумайте.
Там что кроме чисел еще и слова могут быть?
0
12.09.2012, 15:54
nmv
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 26
12.09.2012, 16:08  [ТС] 5
Скорей всего да, могут быть и слова и числа, как положительные, так и отрицательные. Создается bat-файл. Запускается. Вписываются числа, слова. Выдается результат на экран.
Сессия началась К зачету не допускают, пока не будет решена задача:-(

Добавлено через 5 минут
Пробовал сам, но допустил ошибки, где - не знаю, потому как не разбираюсь. Помогите
Вот что у меня есть:
@echo off
set n=%1
set result=1
if %1 LSS 0 (
echo "Error"
goto end
)
rem
if %1 GTR 12 (
echo "Error"
goto end)
for /f %%i in ('findstr /x "[0-9]*" %1') do set /a n+=1
echo %n%
echo end
:end
@echo on

Добавлено через 1 минуту
Преподаватель попросил обратить внимание на подчернотое. Но так как я в этом не понимаю, то исправить не могу. Да и файл поэтому не запускается
0
Dragokas
Эксперт WindowsАвтор FAQ
17065 / 7120 / 861
Регистрация: 25.12.2011
Сообщений: 10,931
Записей в блоге: 16
12.09.2012, 16:55 6
Какой-то неправильный код

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

И Вы точно уверены, что стоит усложнять так задачу - "Слова в перемешку с числами" ?

Добавлено через 7 минут
Цитата Сообщение от nmv Посмотреть сообщение
Bash
1
for /f %%i in ('findstr /x "[0-9]*" %1') do set /a n+=1
К примеру, эта часть считает кол-во строк, в которых первым символом является цифра (не знак).
При этом %1 заменяется на имя переданного CMD аргумента, коим является текстовой файл.
0
nmv
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 26
13.09.2012, 12:06  [ТС] 7
нет, я не уверен. Часть кода нашел в инете, часть сам пытался писать по методичке. В итоге не получилось. Что не так, не могу понять. Дали задание, надо выполнить (учусь на заочном), чтобы до зачета допустили. Вот бьюсь, пока без результатно.... Поэтому и прошу помощи. Нужен рабочий bat. А задание я уже писал выше
0
Dragokas
Эксперт WindowsАвтор FAQ
17065 / 7120 / 861
Регистрация: 25.12.2011
Сообщений: 10,931
Записей в блоге: 16
13.09.2012, 15:36 8
Bash
1
2
3
4
5
6
7
8
9
@echo off
For /f "usebackq delims=" %%a in ("file.txt") do for %%i in (%%a) do (
  echo %%i | FindStr.exe /BRC:"+*[0-9]" > nul && set /a pos+=1
  echo %%i | FindStr.exe /BRC:"-[0-9]" > nul && set /a neg+=1
  )
)
echo Positive = %pos%
echo Negative = %neg%
pause>nul
file.txt заменить на %~1 для передачи имени файла как параметра командной строки.
1
nmv
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 26
13.09.2012, 16:02  [ТС] 9
БОЛЬШОЕ СПАСИБО!!!!
0
niki598
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 5
12.02.2013, 08:46 10
А можно подробней описать команды... Что бы знать что к чему. Если вас не затруднит конечно.
0
nmv
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 26
12.02.2013, 09:19  [ТС] 11
Цитата Сообщение от niki598 Посмотреть сообщение
А можно подробней описать команды... Что бы знать что к чему. Если вас не затруднит конечно.
И задание и решение (команды) написаны выше
0
Dragokas
Эксперт WindowsАвтор FAQ
17065 / 7120 / 861
Регистрация: 25.12.2011
Сообщений: 10,931
Записей в блоге: 16
12.02.2013, 14:02 12
For /f "usebackq delims=" %%a in ("file.txt") do for %%i in (%%a) do (
1) Чтение файла file.txt построчно
2) 2 цикл строку разбивает на слова по пробелам, хотя в задании и не было сказано этого делать ("ОДНО СЛОВО В СТРОКЕ")
echo %%i | FindStr.exe /BRC:"+*[0-9]" > nul && set /a pos+=1
Передача слова через канал команде FindStr для поиска образца.
FindStr использует регулярное выражение /R
Образец означает: знак ведущий знак + и за ним * - этот знак не в обычном понимании (как маска), а модификатор, т.е. он обозначает, что предыдущий символ (+) может указываться 0 или более раз (по тому, что число без знака + это тоже положительное число). Далее проверяется, чтобы была хоть одна цифра. Что после нее - не важно.
&&set /a pos+=1
В случае успеха предыдущей операции выполняется инкремент. К числу, которое хранится в переменной pos добавляется единичка и сохраняется в эту же переменную.
По-умолчанию, в батниках переменную не нужно инициализировать. Дефолтовое значение = 0. /A - обозначает числовой тип данных.

Строка 4 по тому же принципу, только знак (-) обязателен.
Строки 7-8 - вывод на экран.
Строка 9 - ожидания нажатия клавиши без вывода сообщения на экран.

Подробно о работе цикла расписано в теме: http://www.cyberforum.ru/cmd-bat/thread778462.html
1
Eva Rosalene
Ladybug
4057 / 1595 / 304
Регистрация: 06.01.2013
Сообщений: 4,190
Завершенные тесты: 2
09.05.2013, 12:02 13
Цитата Сообщение от niki598 Посмотреть сообщение
Если вас не затруднит конечно.
1. - вырубаем вывод названий выполняемых команд
2. - создаем цикл, который разбирает каждую строчку файла file.txt как отдельную переменную %%a, которая ещё одним циклом разделяется на отдельные части, которые разбираются, как переменная %%i
3. - выводим полученную строку файла в команду findstr, которая регулярным выражением ищет там знак плюса и цифры, && значит, что если он нашла, то только тогда выполняется следующая команда, в нашем случае это прибавление единицы к числу положительных чисел
4. - то же самое для отрицательных
7, 8 - вывод
9 - пауза до нажатия клавиши
0
09.05.2013, 12:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2013, 12:02

Подсчет количества файлов в папке
ПОМОГИТЕ плз!!!!!!! как написать батник для подсчета количества файлов в каталоге!!!!

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

Подсчет количества слов в текстовом файле
Подсчет количества слов в текстовом файле, содержащем целые числа и слова русского и английского...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru