【プログラミング初心者】Swift練習問題~九九表示~回答例
九九表示
回答例
func printMultiplicationTable() {
let tableWidth = 9 * 3 + 5 + 1
// +-------------------------------+
var topSeparator = ""
for index in 0..<tableWidth {
if index == 0 || index == tableWidth - 1 {
topSeparator += "+"
} else {
topSeparator += "-"
}
}
print(topSeparator)
// 九九の列の数字
var columnNumber = "| "
for column in 1...9 {
columnNumber += " \(column)"
}
columnNumber += " |"
print(columnNumber)
// | +----------------------------|
var innerTopSeparator = ""
for index in 0..<tableWidth {
if index == 0 {
innerTopSeparator += "|"
} else if index > 0 && index < 3 {
innerTopSeparator += " "
} else if index == 3 {
innerTopSeparator += "+"
} else if index == tableWidth - 1 {
innerTopSeparator += "|"
} else {
innerTopSeparator += "-"
}
}
print(innerTopSeparator)
// 計算結果表示
for row in 1...9 {
var multiplication = "| \(row)| "
for colmun in 1...9 {
let number = row * colmun
var numberStr = String(number)
if number < 10 {
numberStr = "0" + numberStr
}
multiplication += numberStr + " "
}
multiplication += "|"
print(multiplication)
}
// +-------------------------------+
var bottomSeparator = ""
for index in 0..<tableWidth {
if index == 0 || index == tableWidth - 1 {
bottomSeparator += "+"
} else {
bottomSeparator += "-"
}
}
print(bottomSeparator)
}
解説
func printMultiplicationTable() {
let tableWidth = 9 * 3 + 5 + 1
// +-------------------------------+
var topSeparator = ""
for index in 0..<tableWidth {
if index == 0 || index == tableWidth - 1 {
topSeparator += "+"
} else {
topSeparator += "-"
}
}
print(topSeparator)
// 九九の列の数字
var columnNumber = "| "
for column in 1...9 {
columnNumber += " \(column)"
}
columnNumber += " |"
print(columnNumber)
// | +----------------------------|
var innerTopSeparator = ""
for index in 0..<tableWidth {
if index == 0 {
innerTopSeparator += "|"
} else if index > 0 && index < 3 {
innerTopSeparator += " "
} else if index == 3 {
innerTopSeparator += "+"
} else if index == tableWidth - 1 {
innerTopSeparator += "|"
} else {
innerTopSeparator += "-"
}
}
print(innerTopSeparator)
// 計算結果表示
for row in 1...9 {
var multiplication = "| \(row)| "
for colmun in 1...9 {
let number = row * colmun
var numberStr = String(number)
if number < 10 {
numberStr = "0" + numberStr
}
multiplication += numberStr + " "
}
multiplication += "|"
print(multiplication)
}
// +-------------------------------+
var bottomSeparator = ""
for index in 0..<tableWidth {
if index == 0 || index == tableWidth - 1 {
bottomSeparator += "+"
} else {
bottomSeparator += "-"
}
}
print(bottomSeparator)
}
基本的には力技で表示しています。
print()
関数は表示するとき改行されるため、1行を表すString
の変数をそれぞれの行で作り表示します。
let tableWidth = 9 * 3 + 5 + 1
で表の横幅を定義します。
九九のデータが「半角スペース+2桁の数字」なので9×3。
右側の「| 1|」が5文字、最後の「|」が一文字なので横幅は「9×3+5+1」となります。
あとは適宜for
文を回してそれぞれの行を完成させます。
たまに「+」などが表示されるので、該当するタイミングでif
文を使って場合分けします。
計算結果で、結果が一桁の場合「01」などと表示する必要があるので計算結果を確認し、一桁の場合は頭に「0」の文字列を追加しています。
このように複雑な表示をする場合にはfor
とif
を使って地道に実装することもあります。
Author And Source
この問題について(【プログラミング初心者】Swift練習問題~九九表示~回答例), 我々は、より多くの情報をここで見つけました https://qiita.com/euJcIKfcqwnzDui/items/802573bf25349e383009著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .