問題4:最大値と最小値の算出
目的:配列、ループ、比較の応用
内容: 複数の数値を入力し、最大値と最小値を求めて表示する。
回答
TEST: PROCEDURE OPTIONS(MAIN);
DECLARE N(10) FIXED;
DECLARE I FIXED;
DECLARE MAX FIXED;
DECLARE MIN FIXED;
PUT SKIP LIST('10個の整数を入力してください:');
DO I = 1 TO 10;
GET LIST(N(I));
END;
MAX = N(1);
MIN = N(1);
DO I = 2 TO 10;
IF N(I) > MAX THEN MAX = N(I);
IF N(I) < MIN THEN MIN = N(I);
END;
PUT SKIP LIST('最大値:', MAX);
PUT SKIP LIST('最小値:', MIN);
END TEST;
問題5:簡単な家計簿の作成
目的:構造体の使い方の練習
内容: 支出の内容(日付・金額)を構造体で保持し、1週間分の合計・平均を表示する。
回答
TEST: PROCEDURE OPTIONS(MAIN);
DECLARE 1 EXPENSE(7),
2 DAY CHAR(10),
2 AMOUNT FIXED DEC(7,2);
DECLARE I FIXED;
DECLARE TOTAL FIXED DEC(7,2) INIT(0);
DECLARE AVERAGE FIXED DEC(7,2);
DO I = 1 TO 7;
PUT SKIP LIST('日付と金額を入力してください (例: Mon 1234.56)');
GET LIST(EXPENSE(I).DAY, EXPENSE(I).AMOUNT);
TOTAL = TOTAL + EXPENSE(I).AMOUNT;
END;
AVERAGE = TOTAL / 7;
PUT SKIP LIST('合計:', TOTAL);
PUT SKIP LIST('平均:', AVERAGE);
END TEST;
問題6:九九表の出力
目的:入れ子ループの理解
内容: 九九(1~9の掛け算)の表を出力するプログラムを作成する。
回答
TEST: PROCEDURE OPTIONS(MAIN);
DECLARE I, J FIXED;
DO I = 1 TO 9;
DO J = 1 TO 9;
PUT EDIT(I, '*', J, '=', I*J) (F(2), A(1), F(2), A(1), F(3));
PUT SKIP;
END;
PUT SKIP;
END;
END TEST;