このディレクトリの索引

# [1] 授業単元:情報処理 # [2] 問題文(含コード&リンク): #   正の整数nを入力し、1 から100 までの間にあるnの倍数をすべて表示す #  ると共に、それらnの倍数の和を表示するプログラムを作成せよ。 # #   例えば25を入力したら,その倍数である25, 50, 75, 100とそれらの和で #  ある250が表示されることになる。 # #    # [3] 環境 #  [3.1] OS:WindowsXP #  [3.2] コンパイラ名とバージョン gcc #  [3.3] 言語:C # [4] 期限: 2009年5月22日0:00まで # [5] その他の制限:以前にも書き込んだのですが、私の書き込みにミスがありましたのでもう一度書きます。よろしくお願いします '正の整数nを入力し、1 から100 までの間にあるnの倍数をすべて表示すると共に、それらnの倍数の和を表示する' :- '正の整数nを入力し'(_n), '1 から100 までの間にあるnの倍数をすべて表示すると共に、それらnの倍数の和を表示する'(_n). '正の整数nを入力し'(_n) :- 整数を得る(正の整数,_n > 0,_n). '1 から100 までの間にあるnの倍数をすべて表示すると共に、それらnの倍数の和を表示する'(_n) :- '1 から100 までの間にあるnの倍数を'(_n,_1から100までの間にあるnの倍数ならび), 'すべて表示すると共に、それらnの倍数の和を表示する'(_1から100までの間にあるnの倍数ならび). '1 から100 までの間にあるnの倍数を'(_n,_1から100までの間にあるnの倍数ならび) :- _nに掛ける必要がある最大値 is 100 // _n, findall(_nの倍数,'nの倍数を'(_n,_nに掛ける必要がある最大値,_nの倍数),_1から100までの間にあるnの倍数ならび). 'nの倍数を'(_n,_nに掛ける必要がある最大値,_nの倍数) :- between(1,_nに掛ける必要がある最大値,_nに掛ける値), _nの倍数 is _n * _nに掛ける値. 'すべて表示すると共に、それらnの倍数の和を表示する'(_1から100までの間にあるnの倍数ならび) :- すべて表示する(_1から100までの間にあるnの倍数ならび), 'それらnの倍数の和を表示する'(_1から100までの間にあるnの倍数ならび). すべて表示する(_1から100までの間にあるnの倍数ならび) :- atomic_list_concat(_1から100までの間にあるnの倍数ならび,',',_nの倍数表示文字列), writef('%tの倍数は %t\n',[_n,_nの倍数表示文字列]). 'それらnの倍数の和を表示する'(_1から100までの間にあるnの倍数ならび) :- sum_list(_1から100までの間にあるnの倍数ならび,_和), writef('倍数の和は %t\n',[_和]). 整数を得る(_催促,_評価,_整数) :- writef('%w : ',[_催促]), 整数を得る(_整数), call(評価),!. 整数を得る(_催促,_評価,_整数) :- 整数を得る(_催促,_評価,_整数). 整数を得る(_整数) :- 行入力(_行), 整数検査(_行,_整数). 行入力(_行) :- read_line_to_codes(current_input,_コードならび), atom_codes(_行,_コードならび). 整数検査(_行,_整数) :- atom_number(_行,_整数), integer(_整数),!. 整数検査(_行,_) :- writef('入力された %w からは整数が得られません。再入力をお願いします。\n',[_行]),fail.