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

Словесное описание номера в цикле FOR

09.02.2013, 15:28. Просмотров 3044. Ответов 6
Метки нет (Все метки)

Добрый день!
Задание звучит так: Создать командный файл выводящий на экран построчно порядковые номера в количестве, задаваемом параметром в командной строке запуска на выполнение, но не более 6. Перед каждым номером должно следовать его словесное обозначение. Например - "три(3)".
У меня получилось вот что:
Bash
1
2
3
4
@echo off
if /i %1 GTR 6 echo parametr bolshe 6. & goto END
for /L %%a IN (1, 1, %1) do @echo (%%a)
:END
У меня только вопрос, как реализовать словесное описание номера? Может кто натолкнет на мысль?
Заранее благодарю за помощ
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2013, 15:28
Ответы с готовыми решениями:

Словесное описание
Помогите словесно описать фрагмент кода! Код: #include<iostream> using namespace std; int...

Словесное описание цифр
Дано целое число 100-999 Вывести строку слвосеное описание данного числа например 256 - двести...

словесное описание аргумента
Мне следовало написать функцию, возвращающую словесное описание аргумента. Аргумент – целое число...

Словесное описание чисел.
Помогите разобраться с задачей: Дано целое число в диапазоне 100 - 999. Вывести строку -...

Вывести словесное описание числа
Здравствуйте! Нужна помощь. Разработать программу согласно варианту задания. Типы данных...

6
Eva Rosalene
Ladybug
4057 / 1595 / 304
Регистрация: 06.01.2013
Сообщений: 4,190
Завершенные тесты: 2
09.02.2013, 16:34 2
Лучший ответ Сообщение было отмечено как решение

Решение

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@echo off
setlocal enabledelayedexpansion
chcp 1251>nul
set chisla_str=Один*Два*Три*Четыре*Пять*Шесть
if "%~1"=="" (set /p numer=Введите номер   ) else (set numer=%~1)
if !numer! GTR 6 (echo Параметр больше 6 & exit /b)
for /L %%a IN (1, 1, !numer!) do (call :echos %%~a)
pause>nul
exit /b
:echos
set chislo=%~1
set counter=1
set chisla_tmp=!chisla_str!
:again
for /f "usebackq tokens=1* delims=*" %%a IN ('!chisla_tmp!') DO (
 if "!counter!"=="!chislo!" (echo %%~a %~1&exit /b)
 set /a counter=!counter!+1
 set chisla_tmp=%%~b
)
if "!chisla_tmp!"=="" (exit /b)
goto :again
Если тебе не нужна пауза, убери 8 строчку.

Добавлено через 3 минуты
Кликните здесь для просмотра всего текста
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@echo off
setlocal enabledelayedexpansion
chcp 1251>nul
set chisla_str=Один*Два*Три*Четыре*Пять*Шесть*Семь*Восемь*Девять*Десять*Одиннадцать*Двенадцать*Тринадцать*Четырнадцать*Пятнадцать*Шестнадцать*Семнадцать*Восемнадцать
if "%~1"=="" (set /p numer=Введите номер   ) else (set numer=%~1)
if !numer! GTR 18 (echo Параметр больше 18 & exit /b)
for /L %%a IN (1, 1, !numer!) do (call :echos %%~a)
pause>nul
exit /b
:echos
set chislo=%~1
set counter=1
set chisla_tmp=!chisla_str!
:again
for /f "usebackq tokens=1* delims=*" %%a IN ('!chisla_tmp!') DO (
 if "!counter!"=="!chislo!" (echo %%~a %~1&exit /b)
 set /a counter=!counter!+1
 set chisla_tmp=%%~b
)
if "!chisla_tmp!"=="" (exit /b)
goto :again

А вот вариант на 18 чисел
4
SPS
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 3
09.02.2013, 18:29  [ТС] 3
FraidZZ, единственное, русский шрифт все равно не работает, а так спасибо большое

Добавлено через 1 час 41 минуту
Все, разобрался, спасибо)
0
Dragokas
Эксперт WindowsАвтор FAQ
17069 / 7124 / 861
Регистрация: 25.12.2011
Сообщений: 10,931
Записей в блоге: 16
10.02.2013, 02:46 4
FraidZZ, прикольно. Сдвиг "аргументов" строки, наподобие Shift средствами цикла. Никогда не видел.
Классная идея.
1
Eva Rosalene
Ladybug
4057 / 1595 / 304
Регистрация: 06.01.2013
Сообщений: 4,190
Завершенные тесты: 2
10.02.2013, 13:19 5
Цитата Сообщение от Dragokas Посмотреть сообщение
FraidZZ, прикольно. Сдвиг "аргументов" строки, наподобие Shift средствами цикла. Никогда не видел.
Классная идея.
Спасибки.
Я в MultiDrive File Copier для построения интерактивного списка дисков тоже самое делал.

Добавлено через 41 минуту
Bash
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
@echo off
chcp 1251>nul
setlocal enabledelayedexpansion
set /p mychislo=Введите число^:     
call :chislos !mychislo!
echo.!mychislo!
pause>nul
exit /b
:chislos
setlocal enabledelayedexpansion
set first1=*один*два*три*четыре*пять*шесть*семь*восемь*девять
set first2=*десять*двадцать*тридцать*сорок*пятьдесят*шестьдесят*семьдесят*восемьдесят*девяносто
set first3=*сто*двести*триста*четыреста*пятьсот*шестьсот*семьсот*восемьсот*девятьсот
set though=*одна тысяча*две тысячи*три тысячи*четыре тысячи*пять тысяч*шесть тысяч*семь тысяч*восемь тысяч*девять тысяч
set noth=тысяч
set million=*один миллион*два миллиона*три миллиона*четыре миллиона*пять миллионов*шесть миллионов*семь миллионов*восемь миллионов*девять миллионов
set nomil=миллионов
if "%~1"=="" (exit /b)
set chislodis="%~1"
set chislobuk=
call :strlength !chislodis!
set length_=!strlength_!
for /l %%a IN (!length_!,-1,1) DO (
 set /a cifra1=!length_!-%%~a+1
 set /a tempr=!cifra1!-1
 set /a tempr2=!tempr!/3
 set /a raz=!tempr2!+1
 set /a ost1=!cifra1!/3
 set /a ost2=3*!ost1!
 set /a counter=!cifra1!-!ost2!
 if !counter!==0 (set counter=3)
 call :disparce !chislodis! %%~a !counter! !raz!
 set chislobuk=!stringback! !chislobuk!
)
echo !chislobuk!
exit /b
:strlength
set string_q12e=%~1
set counter_0121=0
:again_r0067
if "!string_q12e:~%counter_0121%,1!"=="" (set strlength_=!counter_0121!&exit /b)
set /a counter_0121=!counter_0121!+1
goto :again_r0067
exit /b
:disparce
set cifra=%~1
set stringback=0
set /a razn=%~2-1
set cifra=!cifra:~%razn%,1!
set counterzz=1
:againzz
if "%~4"=="1" (
 if "%~3!"=="1" (set chisla_tmp=!first1!)
 if "%~3!"=="2" (set chisla_tmp=!first2!)
 if "%~3!"=="3" (set chisla_tmp=!first3!)
)
if "%~4"=="2" (
 if "%~3!"=="1" (set chisla_tmp=!though!)
 if "%~3!"=="2" (set chisla_tmp=!first2!)
 if "%~3!"=="3" (set chisla_tmp=!first3!)
)
if "%~4"=="3" (
 if "%~3!"=="1" (set chisla_tmp=!million!)
 if "%~3!"=="2" (set chisla_tmp=!first2!)
 if "%~3!"=="3" (set chisla_tmp=!first3!)
)
set 4tt=%~4
if !4tt! GTR 3 (exit /b)
:againzzz
for /f "usebackq tokens=1* delims=*" %%a IN ('!chisla_tmp!') DO (
 if "!counterzz!"=="!cifra!" (set stringback=%%~a)
 set /a counterzz=!counterzz!+1
 set chisla_tmp=%%~b
)
if "!chisla_tmp!"=="" (goto :nextzz) else (goto :againzzz)
:nextzz
if "%~4"=="2" (
 if "%~3"=="1" (
  if "!stringback!"=="0" (set stringback=!noth!)
 )
)
if "%~4"=="3" (
 if "%~3"=="1" (
  if "!stringback!"=="0" (set stringback=!nomil!)
 )
)
if "!stringback!"=="0" (set stringback=)
exit /b
До 999.999.999
Но есть глюк - числа типа 12, 13, 14 и т.д распознаёт как десять три, десять два и тому подобные приколы.
0
Charles Kludge
Клюг
7648 / 3163 / 383
Регистрация: 03.05.2011
Сообщений: 8,381
10.02.2013, 14:33 6
Лучший ответ Сообщение было отмечено как решение

Решение

Може ещё построить "массив":
Bash
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
setlocal enabledelayedexpansion
chcp 1251>nul
set x.1=Один
set x.2=Два
set x.3=Три
set x.4=Четыре
set x.5=Пять
set x.6=Шесть
set /p number=Введите номер 
set nn=!x.%number%!
call echo %nn% ( %number%)
3
Hkr
8 / 8 / 0
Регистрация: 16.05.2012
Сообщений: 19
09.02.2016, 11:13 7
а как правильно реализовать если я хочу перекодировать видео с помощью ffmpeg целую папку? не могу сообразить как написать батник для этого? можете подсказать?
0
09.02.2016, 11:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2016, 11:13

Написать словесное описание алгоритма
using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

Составить словесное описание алгоритма
IdMessage1.Body.Text:=memo1.Text; IdMessage1.From.Text:=Form2.LabeledEdit1.Text ; ...

словесное описание школьных отметок
Составить программу, позволяющую получить словесное описание школьных отметок (1 — «плохо», 2 —...


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

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

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