0

ダイヤモンドを作成する必要がありますが、間違った出力が得られ続けます。

私は 3 つのループを書きました。1 つ目は高さ、2 つ目はスペース、3 つ目はアスタリスクです。

後半はダイヤの後半

出力

enter shape
diamond
width
5
 *  *  *  * 
 * *  * *  * * 
 * * *  * * * 
 * * * * 


 * * * * 
 * * *  * * * 
 * *  * *  * * 
 *  *  *  * 

脚本

"diamond")
echo "width"
read width

for ((h = 1; h <= $width; h++))
do

        for ((s = $width; s > h; s--))
        do
        printf ' '
                for ((a = 1; a <= h; a++))
                do
                printf '* '
                done
        done

echo ""
done

for ((h = $width; h > 0; h--))
do
        for ((s = $width; s > h; s--))
        do
        printf ' '
                for ((a=1 ; a <= h; a++))
                do
                printf '* '
                done
        done

echo ""
done
;;

どうすればこれを機能させることができますか?

4

1 に答える 1

0

donefor your "space" for-loop は、ダイヤモンドの上部と下部の両方で間違った場所にあります:

for ((h = 1; h <= $width; h++))
do
    for ((s = $width; s > h; s--))
    do
        printf ' '
    done # <-- This should be here!
    for ((a = 1; a <= h; a++))
    do
        printf '* '
    done
    echo ""
done

でスクリプトを実行して、bash -x何が起こっているかを確認することをお勧めします。

于 2013-02-25T06:19:21.180 に答える