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

Написать bat-файл, рисующий ромб и сохраняющий рисунок в файле

18.12.2016, 10:26. Просмотров 879. Ответов 6
Метки нет (Все метки)

Привет всем. Прошу помощи в написании файла или подсказки)
Несколько вопросов.
1. Написал код на треугольник, но как сделать так чтоб треугольник как бы в другую сторону смотрел.
Windows Batch file
1
2
3
4
@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,5) do set "str=!str!aa"&echo !str!
pause
С минусами пробовал не выходит.
2. Видел код на сайте ромба, но он очень больше) Хотелось бы его уменьшить и самому в самом коде файла задать какой был бы ромб, а не чтоб спрашивал когда запускаешь. Помогите уменьшить)
Вот код
Windows Batch file
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
@echo off
rem Рисуем ромб из четырёх символов
setlocal enabledelayedexpansion
:next1
set "str1="&set "str2="&set "f="&set "sp="
cls
set /p "chr=Введите четыре допустимых символа подряд (q - выход): "
if /i "%chr%"=="q" exit
echo !chr!|>nul findstr /ir "[a-zа-яё0-9\\/+-=*]"||goto next1
if "!chr:~,1!"=="" goto next1
if "!chr:~,-3!"=="" goto next1
if not "!chr:~4,1!"=="" goto next1
set w1=!chr:~,1!&set w2=!chr:~1,1!&set w3=!chr:~2,1!&set w4=!chr:~3,1!
set /p "num=Введите количество строк (q - выход): "
if /i "%num%"=="q" exit
echo %num%|>nul findstr "[^0-9]"&&goto next1
set /a x=num/2
set n=%x%&set y=0
call :out
set "str1="&set "str2="&set f=1
call :out
echo.
choice /c 10 /m "Продолжим (1-да, 0-нет): "
goto next%errorlevel%
:next0
:next2
:next255
pause&exit
 
:out
for /l %%i in (1,1,%n%) do (
    if "%f%"=="" (
        set /a x-=1, y+=1
        call :mm !x! sp " "
        set "str1=!str1!!w1!"&set "str2=!str2!!w2!"
        echo.!sp!!str1!!str2!&set "sp="
    ) else (
        call :mm !y! str1 "!w3!" 
        call :mm !y! str2 "!w4!"
        echo.!sp!!str1!!str2!
        set "sp=!sp! "&set "str1="&set "str2="
        set /a y-=1
    )
)
exit /b
:mm
for /l %%a in (1,1,%~1) do set "%~2=!%~2!%~3"
exit /b
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2016, 10:26
Ответы с готовыми решениями:

Написать bat-файл, рисующий ромб
Товарищи, вот тема по сложнее, нужно сделать ромб вида: ...

Написать bat-файл, рисующий круг
А как сделать круг, по тому же принципу?

Написать bat-файл, рисующий треугольник
Ребят, нужна помощь!!! Написать bat-файл, рисующий треугольник вида: aa aaaa...

Написать файл triangle.bat, рисующий текстовый треугольник с заданным количеством строк
2.5.2.1. Написать файл triangle.bat, рисующий текстовый треугольник с...

Как вызвать в одном bat-файле другой bat-файл?
Здравствуйте, уважаемые форумчане. Подскажите, пожалуйста, каким образом...

6
YuS_2
Любознательный
1054 / 593 / 188
Регистрация: 10.03.2016
Сообщений: 1,365
18.12.2016, 14:03 2
Цитата Сообщение от saplin1 Посмотреть сообщение
1. Написал код на треугольник
Написал?
Цитата Сообщение от saplin1 Посмотреть сообщение
С минусами пробовал не выходит.
Если бы написал, то сложностей возникнуть не должно, вроде бы
Подсказка:
Общее число символов в строке должно быть всегда одинаковым.
Строка должна состоять из символов " " (пробел) и любых печатных символов не являющихся спецсимволами для cmd.
Цитата Сообщение от saplin1 Посмотреть сообщение
2. Видел код на сайте ромба
А вот это уже ближе к истине.
И в чем сложность? Проанализируйте в какие переменные присваиваются символы и значение количества строк, затем заблокируйте интерактивный ввод и присвойте этим переменным статичные значения.
Подсказка:
Символов 4 штуки.
Число строк - одна переменная.

ЗЫ Пробуйте - всё получится, если хотя бы попытаться...
1
saplin1
0 / 0 / 0
Регистрация: 30.11.2016
Сообщений: 6
18.12.2016, 14:52  [ТС] 3
я уже все перепробовал не получается, а в коде выше вообще разобраться не могу теряюсь.
0
YuS_2
Любознательный
1054 / 593 / 188
Регистрация: 10.03.2016
Сообщений: 1,365
18.12.2016, 17:12 4
Цитата Сообщение от saplin1 Посмотреть сообщение
все перепробовал не получается
Значит не всё, если не получилось... и где результаты попыток?
Пока только видно скопированный код, причем скопирован он здесь же...
Здесь форум для помощи, а не для "сделайте мне задание, а я получу зачёт по информатике", так что попытайтесь сделать это самостоятельно. Для этого здесь всё есть, в том числе и готовый код...

Вот, в качестве бонуса, код обратного треугольника:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
:input
set "str="
cls
set /p "x=Введите количество строк (q - выход): "
if /i "%x%"=="q" exit
echo %x%|>nul findstr "[^0-9]"&&goto input
set /a n=x-1
setlocal enabledelayedexpansion
for /l %%i in (1,1,%x%) do (
    for /l %%a in (!n!,-1,1) do set "sp=!sp!  "
    set "str=!str!aa"&echo !sp!!str!&set "sp="
    set /a n-=1
)
pause
Изучайте...
0
saplin1
0 / 0 / 0
Регистрация: 30.11.2016
Сообщений: 6
18.12.2016, 19:02  [ТС] 5
Можешь помочь ? Раз ты уже понял что и где)

Добавлено через 2 минуты
спасибо!

Добавлено через 1 час 22 минуты
Непредвиденное появление <1. что это?
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@echo off
:input
set "str="
cls
set /a n=4-1
setlocal enabledelayedexpansion
for /l %%i in (1,1,4) do (
    for /l %%a in (!n!,-1,1) do set "sp=!sp!  "
    set "str=!str!aa"&echo !sp!!str!&set "sp="
    set /a n-=1
)
:input
set "str="
cls
set /a n=4-1
setlocal enabledelayedexpansion
for /l %%i in (1,1,4) do (
    for /l %%a in (!n!,-1,1) do for /l %%s (1,1,4) do set "sp=!sp!  "
    set "str=!str!aa"&echo !sp!!str!&set "sp="
    set /a n-=1
)
pause
0
saplin1
0 / 0 / 0
Регистрация: 30.11.2016
Сообщений: 6
18.12.2016, 19:12  [ТС] 6
На форуме нашел код, при запуски batника запрашивает какие символы будут и сколько строк будет в ромбе.
Так вот мне нужно написать почти такой же код только чтоб ни чего не запрашивало, а я сразу указал например 5 строк и все символы а.
Вот код целый который нашел на форуме.
Windows Batch file
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
@echo off
rem Рисуем ромб из четырёх символов
setlocal enabledelayedexpansion
:next1
set "str1="&set "str2="&set "f="&set "sp="
cls
set /p "chr=Введите четыре допустимых символа подряд (q - выход): "
if /i "%chr%"=="q" exit
echo !chr!|>nul findstr /ir "[a-zа-яё0-9\\/+-=*]"||goto next1
if "!chr:~,1!"=="" goto next1
if "!chr:~,-3!"=="" goto next1
if not "!chr:~4,1!"=="" goto next1
set w1=!chr:~,1!&set w2=!chr:~1,1!&set w3=!chr:~2,1!&set w4=!chr:~3,1!
set /p "num=Введите количество строк (q - выход): "
if /i "%num%"=="q" exit
echo %num%|>nul findstr "[^0-9]"&&goto next1
set /a x=num/2
set n=%x%&set y=0
call :out
set "str1="&set "str2="&set f=1
call :out
echo.
choice /c 10 /m "Продолжим (1-да, 0-нет): "
goto next%errorlevel%
:next0
:next2
:next255
pause&exit
 
:out
for /l %%i in (1,1,%n%) do (
    if "%f%"=="" (
        set /a x-=1, y+=1
        call :mm !x! sp " "
        set "str1=!str1!!w1!"&set "str2=!str2!!w2!"
        echo.!sp!!str1!!str2!&set "sp="
    ) else (
        call :mm !y! str1 "!w3!" 
        call :mm !y! str2 "!w4!"
        echo.!sp!!str1!!str2!
        set "sp=!sp! "&set "str1="&set "str2="
        set /a y-=1
    )
)
exit /b
:mm
for /l %%a in (1,1,%~1) do set "%~2=!%~2!%~3"
exit /b
Вот мой код немного отредактированный.
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@echo off
:input
set "str="
cls
set /a n=4-1
setlocal enabledelayedexpansion
for /l %%i in (1,1,4) do (
    for /l %%a in (!n!,-1,1) do set "sp=!sp!  "
    set "str=!str!aa"&echo !sp!!str!&set "sp="
    set /a n-=1
)
:input
set "str="
cls
set /a n=4-1
setlocal enabledelayedexpansion
for /l %%i in (1,1,4) do (
    for /l %%a in (!n!,-1,1) do for /l %%s (1,1,4) do set "sp=!sp!  "
    set "str=!str!aa"&echo !sp!!str!&set "sp="
    set /a n-=1
)
pause
Помогите пожалуйста.
0
alpap
1683 / 1276 / 411
Регистрация: 26.04.2015
Сообщений: 4,433
19.12.2016, 04:45 7
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off
::x - Ширина ромба
set x=10
set simvol=*
set/a xcn=x%%2
if %xcn%==0 set/a x+=1
set/a n1=(x-1)/2
for /l %%a in (-%n1%,1,%n1%) do set/a "r=%%a,r*=(r>>-1<<1)+1"& call :#1 "%%r%%"
pause
 
:#1
 setlocal enabledelayedexpansion
  for /l %%a in (0,1,%~1) do set "s1=!s1! "& set/a n2=x-%~1*2
  for /l %%a in (1,1,%n2%) do set "s2=!s2!%simvol%"
  echo %s1%%s2%
 endlocal
exit/b
.
1
19.12.2016, 04:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2016, 04:45

Написать bat-файл, который создает bat-файл, который создает текстовый файл :)
Необходимо составит bat файл, который создаст bat файл и в созданном новом bat...

Написать КФ FIND_FD.BAT для поиска информации в файле данных по заданному признаку
ЗАДАНИЕ: Написать КФ FIND_FD.BAT для поиска информации в файле данных по...

Написать bat-файл
Написать bat-файл, который содержит 2 параметра 1-й параметр: имя подкаталога...


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

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

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