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

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

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

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

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

Последовательность чисел. Подсчет количества положительных и отрицательных элементов.
вводится последовательность ненулевых чисел 0-конец .последовательности . подчитать сколько в нем...

Подсчет количества положительных и отрицательных элементов в массиве
Доброго времени суток,нужна ваша помощь,написал программу по подсчету положительных и отрицательных...

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

Подсчет количества отрицательных (положительных, нулевых, кратных k) элементов массива
Вы не могли бы помочь, пожалуйста? кто поможет- тому добра) заранее спасибо

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

Но Вы сами подумайте.
Там что кроме чисел еще и слова могут быть?
0
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
Эксперт WindowsАвтор FAQ
17193 / 7246 / 868
Регистрация: 25.12.2011
Сообщений: 11,049
Записей в блоге: 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
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 26
13.09.2012, 12:06  [ТС] 7
нет, я не уверен. Часть кода нашел в инете, часть сам пытался писать по методичке. В итоге не получилось. Что не так, не могу понять. Дали задание, надо выполнить (учусь на заочном), чтобы до зачета допустили. Вот бьюсь, пока без результатно.... Поэтому и прошу помощи. Нужен рабочий bat. А задание я уже писал выше
0
Эксперт WindowsАвтор FAQ
17193 / 7246 / 868
Регистрация: 25.12.2011
Сообщений: 11,049
Записей в блоге: 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
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 26
13.09.2012, 16:02  [ТС] 9
БОЛЬШОЕ СПАСИБО!!!!
0
0 / 0 / 0
Регистрация: 12.02.2013
Сообщений: 5
12.02.2013, 08:46 10
А можно подробней описать команды... Что бы знать что к чему. Если вас не затруднит конечно.
0
0 / 0 / 0
Регистрация: 12.09.2012
Сообщений: 26
12.02.2013, 09:19  [ТС] 11
Цитата Сообщение от niki598 Посмотреть сообщение
А можно подробней описать команды... Что бы знать что к чему. Если вас не затруднит конечно.
И задание и решение (команды) написаны выше
0
Эксперт WindowsАвтор FAQ
17193 / 7246 / 868
Регистрация: 25.12.2011
Сообщений: 11,049
Записей в блоге: 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 - ожидания нажатия клавиши без вывода сообщения на экран.

Подробно о работе цикла расписано в теме: https://www.cyberforum.ru/cmd-bat/thread778462.html
1
Pure Free Digital Ghost
4135 / 1606 / 307
Регистрация: 06.01.2013
Сообщений: 4,197
09.05.2013, 12:02 13
Цитата Сообщение от niki598 Посмотреть сообщение
Если вас не затруднит конечно.
1. - вырубаем вывод названий выполняемых команд
2. - создаем цикл, который разбирает каждую строчку файла file.txt как отдельную переменную %%a, которая ещё одним циклом разделяется на отдельные части, которые разбираются, как переменная %%i
3. - выводим полученную строку файла в команду findstr, которая регулярным выражением ищет там знак плюса и цифры, && значит, что если он нашла, то только тогда выполняется следующая команда, в нашем случае это прибавление единицы к числу положительных чисел
4. - то же самое для отрицательных
7, 8 - вывод
9 - пауза до нажатия клавиши
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2013, 12:02

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Подсчет количества отрицательных (положительных, нулевых, кратных k) элементов массива
Нада сделать в двумерном массиве прогу через Array и просто через двум.массив помагите плизз ...

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

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

Подсчет количества отрицательных чисел в векторе
1. Написать программу заполнения вектора случайными числами от –23 до +84 и подсчета количества...

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

Найти количество положительных чисел среди четырёх целых чисел. Если количество положительных чисел больше количества отрицательных,то найти максималь
Найти количество положительных чисел среди четырёх целых чисел. Если количество положительных чисел...


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

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

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