나는 이것과 매우 유사한 많은 질문을 보았지만, 내가해야하는 것과는 다른 방식으로 대부분의 기능으로 어려움을 발견하고 있습니다.
내가 달성하려는 것은 /, \ 및 _ 기호를 사용하여 bash에서 삼각형을 인쇄하는 것입니다. 나에게 주어진 예는 이것입니다.
> Dimension?
> 4
/\
/ \
/ \
--------
지금까지 내 코드는 필요한 것의 2/3를 만듭니다. 즉, 한 면만 인쇄하지만 오른쪽은 인쇄 할 수 없습니다.
그게 내가 가진거야
#! /bin/bash
read -p "DIM? " DIM
for((i=1; i<=$DIM-1; i++))
do
#print the spaces
for((a=i; a<=$[$DIM-1]; a++))
do
echo -ne "*"; #im using * instead of spaces to see if everything works
done
echo "/" #this prints the side
done
#print the base
for((i=1; i<=$[$DIM*2]; i++))
do
echo -ne "_";
done
내 결과는
***/
**/
*/
________
중첩이 누락 된 것을 알고 있지만 작동 방법을 알 수 없습니다.
도움을 주시면 감사하겠습니다.
그렇게 사소한 작업에는 너무 많은 작업이 될 것입니다.
기본을 제외한 각 행에 대해 dim-nr
공백 ( nr
0에서 시작하는 행의 수), 슬래시, nr*2+1
공백 및 백 슬래시를 인쇄해야합니다. 산술 확장을 사용하면 printf
단일 호출로 모든 작업을 수행 할 수 있습니다.
기본의 경우 dim*2
대시를 인쇄해야합니다. 다시 말하지만 (로드 가능한 bash 내장으로도 사용 가능) printf
약간의 도움으로 쉽게 할 수 있습니다 seq
.
#!/bin/bash -
read -p $'Dimension?\n' dim
for ((nr=0; nr<dim-1; nr++)); do
printf '%*s%*s\n' $((dim-nr)) '/' $((nr*2+1)) '\'
done
printf '%.s-' $(seq $((dim*2)))
printf '\n'
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다