程式概念闡述:輸出資料以直條圖顯示
有一個1維陣列 arr = { 1, 3, 2, 4}
我們通常會想這樣輸出
[0] *
[1] ***
[2] **
[3] ***
但是你是可以這樣輸出的
[0] [1] [2] [3]
* * * *
* * *
* *
*
演算法描述:
一行輸出的時候,就掃描陣列元素然後判斷是否輸出星號
每次遞減元素內容直到所有的數字都小於等於0
我們還需要一個flag來判斷是不是還有星號要輸出
Pseudocode Code:
運作演示:
開始前,flag設為1。
第一行輸出表頭
結果
[0] [1] [2] [3]
第二行輸出時
flag != 0 then
設定flag 為 0
arr[0] != 0 then 輸出星號 並將arr[0]減一 , 設定flag為 1
arr[1] != 0 then 輸出星號 並將arr[1]減一 , 設定flag為 1
arr[2] != 0 then 輸出星號 並將arr[2]減一 , 設定flag為 1
arr[3] != 0 then 輸出星號 並將arr[3]減一 , 設定flag為 1
結果 (描述省略兩個*之間輸出的空白)
[0] [1] [2] [3]
* * * *
第三行輸出時
flag != 0 then
設定flag 為 0
arr[0] == 0 then 輸出空白
arr[1] != 0 then 輸出星號 並將arr[1]減一 , 設定flag為 1
arr[2] != 0 then 輸出星號 並將arr[2]減一 , 設定flag為 1
arr[3] != 0 then 輸出星號 並將arr[3]減一 , 設定flag為 1
結果
[0] [1] [2] [3]
* * * *
* * *
第四行輸出時
flag != 0 then
設定flag 為 0
arr[0] == 0 then 輸出空白
arr[1] != 0 then 輸出星號 並將arr[1]減一 , 設定flag為 1
arr[2] == 0 then 輸出空白
arr[3] != 0 then 輸出星號 並將arr[3]減一 , 設定flag為 1
結果
[0] [1] [2] [3]
* * * *
* * *
* *
第五行輸出時
flag != 0 then
設定flag 為 0
arr[0] == 0 then 輸出空白
arr[1] == 0 then 輸出空白
arr[2] == 0 then 輸出空白
arr[3] != 0 then 輸出星號 並將arr[3]減一 , 設定flag為 1
結果
[0] [1] [2] [3]
* * * *
* * *
* *
*
第六行要輸出時
flag != 0 then
設定flag 為 0
arr[0] == 0 then 輸出空白
arr[1] == 0 then 輸出空白
arr[2] == 0 then 輸出空白
arr[3] == 0 then 輸出空白
結果
[0] [1] [2] [3]
* * * *
* * *
* *
*
〔這裡還多一行空白行〕
完成! 不想輸出空白行就自己調整囉
我們通常會想這樣輸出
[0] *
[1] ***
[2] **
[3] ***
但是你是可以這樣輸出的
[0] [1] [2] [3]
* * * *
* * *
* *
*
演算法描述:
一行輸出的時候,就掃描陣列元素然後判斷是否輸出星號
每次遞減元素內容直到所有的數字都小於等於0
我們還需要一個flag來判斷是不是還有星號要輸出
Pseudocode Code:
putstring [header]
set flag = 1
while flag != 0 then
set flag = 0
for i = 0 ~ arr.length then
if arr[i] = 0 then
set arr[i] = arr[i] - 1
set falg = 1
else
putchar [space]
putchar [nextline]
putstring [tailer]
運作演示:
開始前,flag設為1。
第一行輸出表頭
結果
[0] [1] [2] [3]
第二行輸出時
flag != 0 then
設定flag 為 0
arr[0] != 0 then 輸出星號 並將arr[0]減一 , 設定flag為 1
arr[1] != 0 then 輸出星號 並將arr[1]減一 , 設定flag為 1
arr[2] != 0 then 輸出星號 並將arr[2]減一 , 設定flag為 1
arr[3] != 0 then 輸出星號 並將arr[3]減一 , 設定flag為 1
結果 (描述省略兩個*之間輸出的空白)
[0] [1] [2] [3]
* * * *
第三行輸出時
flag != 0 then
設定flag 為 0
arr[0] == 0 then 輸出空白
arr[1] != 0 then 輸出星號 並將arr[1]減一 , 設定flag為 1
arr[2] != 0 then 輸出星號 並將arr[2]減一 , 設定flag為 1
arr[3] != 0 then 輸出星號 並將arr[3]減一 , 設定flag為 1
結果
[0] [1] [2] [3]
* * * *
* * *
第四行輸出時
flag != 0 then
設定flag 為 0
arr[0] == 0 then 輸出空白
arr[1] != 0 then 輸出星號 並將arr[1]減一 , 設定flag為 1
arr[2] == 0 then 輸出空白
arr[3] != 0 then 輸出星號 並將arr[3]減一 , 設定flag為 1
結果
[0] [1] [2] [3]
* * * *
* * *
* *
第五行輸出時
flag != 0 then
設定flag 為 0
arr[0] == 0 then 輸出空白
arr[1] == 0 then 輸出空白
arr[2] == 0 then 輸出空白
arr[3] != 0 then 輸出星號 並將arr[3]減一 , 設定flag為 1
結果
[0] [1] [2] [3]
* * * *
* * *
* *
*
第六行要輸出時
flag != 0 then
設定flag 為 0
arr[0] == 0 then 輸出空白
arr[1] == 0 then 輸出空白
arr[2] == 0 then 輸出空白
arr[3] == 0 then 輸出空白
結果
[0] [1] [2] [3]
* * * *
* * *
* *
*
〔這裡還多一行空白行〕
完成! 不想輸出空白行就自己調整囉
留言