AIZU ONLINE JUDGE: Programming Challenge プログラミング入門 トピック5

AOJの プログラミング入門 トピック5にチャレンジしました。

onlinejudge.u-aizu.ac.jp

 

トピック5 構造化プログラムI

構造化プログラムⅠということで、チャレンジしていきます。

 

5_A:Print a Rectangle

5_Aは入力x,yに対して縦方向と横方向に"#"を表示し、四角形を作成するプログラムです。

無限ループで"0 0"が入力されるまで実行するように記述しました。

改行コードをとりたいので、end=""をprint文につけています。

最後、改行しないとERRORとなったのでprint("")を追加しました。

while True :
    aaa,bbb=map(int,input().split())
    if aaa==0 and bbb==0:
        break
    else:
        for iii in range(aaa):
            for jjj in range(bbb) :
                print("#",end="")
            print("")
        print("")

 

5_B:Print a Frame

5_Bは###でなく#...#のように中身をドットで表示するプログラムです。

基本的に5_Aと同様で、最初の行、列と最後の行列だけ#にする条件文をいれてOKとなりました。

 

5_C:Print a Chessboard

5_Cは#.#.と交互に表示するプログラムです。

奇数・偶数と0番目かどうかを判定条件に入れて柵瀬資しました。

 

while True :
    aaa,bbb=map(int,input().split())
    if aaa==0 and bbb==0:
        break
    else:
        for iii in range(aaa):
            for jjj in range(bbb) :
                if iii%2==0 or iii==0:
                    if jjj%2==0 or jjj==0:
                        print("#",end="")
                    else:    
                        print(".",end="")
                else :
                    if jjj%2==0 or jjj==0:
                        print(".",end="")
                    else:
                        print("#",end="")
            print("")
        print("")

 

5_D:Structured Programing

最後はC++のプログラムが書いてあり、それと同じ動作をするプログラムを作成する問題です。

C++の内容は

「入力値まで変数iを毎回+1していき、"i % 3 ==0"であればその値を出力する。

"i%3==0"でないとき、変数xにiを代入し、"x%10==3"であればその時のiの値を出力する、そうでなければx//10を実行し、其の商をxに代入して再度”x%10==3"であればiの値を表示する。」

です。

 

aaa = int(input())
iii=1
while iii < aaa+1 :
    if iii%3==0  :
        print(iii,end="")
        print(" ",end="")
    else:
        x=iii
        while x>0 :
            if x%10==3:
                print(iii,end="")
                print(" ",end="")
                break
            else:
                x//=10
    
    iii+=1

 

これで329Byteのコード量ですが、Solutionsでほかの人が書いたコードを参照してみると5行ぐらいで書き上げている人もいて、とても参考になりました。

 

Completed

 

/* -----codeの行番号----- */