var a = 10// 値を変えて動きを確認してみてくださいvar b = 20// 値を変えて動きを確認してみてくださいvar c = 10// 値を変えて動きを確認してみてください
出力
実行結果:2
解答例
var a = 10var b = 20var c = 10var resultif (a == b && b == c) {// 3つとも同じresult = 3} else {if (a == b || b == c || a == c) {// 2つが同じresult = 2} else {// どれも一致しないresult = 0}}exit result
解答例(PG0.5)
var a = 10var b = 20var c = 10var resultif (a == b && b == c) {// 3つとも同じresult = 3} else if (a == b || b == c || a == c) {// 2つが同じresult = 2} else {// どれも一致しないresult = 0}exit result
反復
反復(while文)を使う問題となっています。
問3-1
0から10までの合計を出力する。
出力
実行結果:55
解答例
var total = 0var i = 0while (i <= 10) {// 0から10までループするtotal = total + i// ループ用カウンタを合計していくi = i + 1// ループ用カウンタを増やす}exit total
解答例(PG0.5)
var total = 0for (var i = 0; i <= 10; i++) {// 0から10までループするtotal += i// ループ用カウンタを合計していく}exit total
問3-2
0から10までの偶数の合計を出力する。
出力
実行結果:30
解答例 1
var total = 0var i = 0while (i <= 10) {total = total + ii = i + 2// 偶数のみを処理するため2ずつループ用カウンタを増やす}exit total
解答例 2
var total = 0var i = 0while (i <= 10) {if (i % 2 == 0) {// 2で割り切れる場合は偶数のため、偶数のみを合計するtotal = total + i}i = i + 1}exit total
解答例(PG0.5)
var total = 0for (var i = 0; i <= 10; i += 2) {total += i}exit total
問3-3
9の階乗を出力する。
出力
実行結果:362880
解答例
var result = 1var i = 2while (i <= 9) {result = result * ii = i + 1}exit result
解答例(PG0.5)
var result = 1for (var i = 2; i <= 9; i++) {result *= i}exit result
var result[]var i = 0while (i < 9) {var j = 0while (j < 9) {result[i][j] = (i + 1) * (j + 1)// iとjは0から始まっているため1を足すj = j + 1}i = i + 1}exit result
解答例(PG0.5)
var result[]for (var i = 0; i < 9; i++) {for (var j = 0; j < 9; j++) {result[i][j] = (i + 1) * (j + 1)// iとjは0から始まっているため1を足す}}exit result
応用
基本構造(順次、分岐、反復)を組み合わせた問題となっています。
問4-1
配列の中で一番小さい値を出力する。
入力
var data = {3,4,56,25,47,72,2,23,25,9}var cnt = 10
出力
実行結果:2
解答例
var data = {3,4,56,25,47,72,2,23,25,9}var cnt = 10var min = data[0]var i = 1while (i < cnt) {if (min > data[i]) {// より小さい値をminに入れるmin = data[i]}i = i + 1}exit min
解答例(PG0.5)
var data = {3,4,56,25,47,72,2,23,25,9}var min = data[0]for (var i = 1; i < length(data); i++) {if (min > data[i]) {// より小さい値をminに入れるmin = data[i]}}exit min
問4-2
配列の中から奇数のみの配列を作って出力する。
ヒント: 新しい配列に結果を入れる。
入力
var data = {34,55,89,32,56,103,6,345}var cnt = 8
出力
実行結果:{55,89,103,345}
解答例
var data = {34,55,89,32,56,103,6,345}var cnt = 8var result[]var i = 0, j = 0while (i < cnt) {if (data[i] % 2 != 0) {// 2で割り切れない場合は奇数result[j] = data[i]// 新しい配列に追加j = j + 1}i = i + 1}exit result
解答例(PG0.5)
var data = {34,55,89,32,56,103,6,345}var result[]var j = 0for (var i = 0; i < length(data); i++) {if (data[i] % 2 != 0) {// 2で割り切れない場合は奇数result[j++] = data[i]// 新しい配列に追加}}exit result
問4-3
変数valueの値が素数なら1を出力し、素数以外なら0を出力する。
入力
var value = 23// 値を変えて動きを確認してみてください
出力
実行結果:1
解答例
var value = 23// 割り切れない間ループするvar i = 2while (i <= value / 2 && value % i != 0) {i = i + 1}var result = 0if (i > value / 2) {// ループが割り切れて終わっていない場合は素数result = 1}exit result