Copyright (C) IOI日本委員会 1995. All rights reserved.


問題3.

 天秤の左の皿に重さが正整数の試料を乗せ、分銅を左または右の皿に乗せて 釣り合いをとる。分銅は 1g, 3g, 9g, 27g, ... が各1個ずつある。 下記の3つの異なる言語で書かれたプログラムは、試料の重さを入力すると、 左右の天秤が釣り合うような分銅の置き方を出力する。いずれか一つの言語に ついて、プログラムの空欄を埋めよ。[2点]


QuickBASICプログラム(3)

   PRINT "試料の重さを入力して下さい。
   INPUT shiryo
   fundo = 1
   WHILE shiryo>0
      SELECT CASE shiryo MOD 3
        CASE 1
           PRINT "重さ"; fundo; "の分銅を右の皿に置く。"
            -------------------
           |     (a)           |
            -------------------
        CASE 2
           PRINT "重さ"; fundo; "の分銅を左の皿に置く。"
            -------------------
           |     (b)           |
            -------------------
      END SELECT
      fundo = fundo*3: shiryo = shiryo/3
   WEND
END


Cプログラム(3)

#include <stdio.h>

void main()
{
   int shiryo,fundo;

   printf("試料の重さを入力して下さい。\n");
   scanf("%d", &shiryo);
   fundo = 1;
   while (shiryo>0) {
      switch (shiryo%3) {
         case 1: printf("重さ %d の分銅を右の皿に置く。\n", fundo);
                  ---------
                 |   (a)   |
                  ---------
                 break;
         case 2: printf("重さ %d の分銅を左の皿に置く。\n", fundo);
                  ---------
                 |   (b)   |
                  ---------
                 break;
      }
      fundo *= 3; shiryo /= 3;
   }
}


Pascalプログラム(3)

program problem3;
   var shiryo,fundo: integer;
begin
   writeln('試料の重さを入力して下さい。');
   readln(shiryo);
   fundo := 1;
   while shiryo>0 do begin
      case shiryo mod 3 of
        1: begin 
              writeln('重さ', fundo, 'の分銅を右の皿に置く。');
               --------------
              |     (a)      |
               --------------
           end;
        2: begin 
              writeln('重さ', fundo, 'の分銅を左の皿に置く。');
               --------------
              |     (b)      |
               --------------
           end;
      end;
      fundo := fundo*3; shiryo := shiryo div 3;
   end;
end.


JOI'95へ戻る

JOIホームページへ戻る