コンソールアプリケーション  繰り返し repeat

Delphiで繰り返しのrepeat 〜untilのループを使用する構文は以下のとおりである。 repeat    繰り返しの内容; until (条件式); whileの時には、条件式が繰り返しの内容の前にあったが、このrepeatでは後にあるのが特徴です。 条件式は 条件が一つの場合は( )なしで、複数の場合は( ) and ( )、または、( ) or ( )のようにする。 練習 1から10までの整数を加算する program Project1; {$APPTYPE CONSOLE} uses SysUtils; var n,i:Integer; begin n:=0; i:=1; repeat n:=n+i; //加算 inc(i); // iの値を1つ増やす until i>10; //条件式には( )を付けません。 writeln(n); // 1+2+3+・・・・+10=55となり、55が表示されます。 readln; end. 1)正整数nを読み込んで横に+をn個出力するプログラムを作成せよ。 program Project1; {$APPTYPE CONSOLE} uses SysUtils; var n,i:Integer; begin write('nを入力してください'); readln(n); i:=0; repeat write('+'); inc(i); // iの値を1つ増やす until i=n; readln; end. 2)正整数nを読み込んで、1の2乗+2の2乗+・・・+nの2乗までの総和を計算し、出力するプログラムを作成せよ。 program repeat1; {$APPTYPE CONSOLE} uses SysUtils; var n,i,s:Integer; begin write('nを入力してください'); readln(n); i:=1; s:=0; repeat s:=s+i*i; inc(i); until i>n; writeln(s); readln; end. 3)正整数xを読み込んで、x<=1+2+・・・・+nとなる最小のnを出力するプログラムを作成せよ。 program repeat1; {$APPTYPE CONSOLE} uses SysUtils; var x,n,s:Integer; begin write('xを入力してください'); readln(x); n:=1; s:=0; repeat s:=s+n; inc(n); until s>=x; writeln(n-1); readln; end. 4)正整数xを読み込んで、x>=1+2+・・・・+nとなる最大のnを出力するプログラムを作成せよ。 program repeat1; {$APPTYPE CONSOLE} uses SysUtils; var x,n:Integer; begin write('xを入力してください'); readln(x); n:=0; repeat inc(n); writeln(x,' ',n); x:=x-n; until x<=n; writeln; writeln(n); readln; end. 5)九九の表を作成せよ。 program repeat1; {$APPTYPE CONSOLE} uses SysUtils; var i,j:Integer; begin i:=1; j:=1; repeat repeat write(i*j,' '); inc(j); until j>9; writeln; j:=1; inc(i); until i>9; writeln; readln; end. 6)2つの正整数を読み込んで、その最小公倍数を求めるプログラムを作成せよ。 (解答1)片方のmの倍数と、もう一方のnの倍数が初めて一致するところが最小公倍数になることを利用した方法 program repeat1; {$APPTYPE CONSOLE} uses SysUtils; var i,j,m,n,s,x,y:Integer; begin write('m='); readln(m); write('n='); readln(n); s:=m*n; i:=1; // まずmの1倍から調べる repeat x:=m*i; // mの倍数を作る j:=1; // nの1倍から調べる repeat y:=n*j; inc(j); until x<=y; // nの倍数がmの倍数を上回ったらおしまい inc(i); until x=y; // 倍数が一致したらおしまい writeln(x); readln; end.