3.処理の選択
Copyright(C) 4Sep2013 coskx
このページでは「処理の選択」の記述方法を解説する。
ここで修得して欲しい内容は以下の通りである。
1.if文による処理の制御が分かる。
2.if-else文による処理の制御(二者択一)が分かる。
3.if-else
if-...else文による処理の制御について,最初に真になったところが実行されること(多者択一)を理解する。
4.switch
case文も多者択一であることを理解する
5.「処理の繰返し」と「処理の選択」が合成された処理の流れを追跡することができる。
6.課題の実現方法を考え,「処理の繰返し」「処理の選択」を組み合わせてプログラムを作成することができる。
このページは以下の5つの項目で構成されている。
3.1 if ()
3.2 if () -
else
3.3 if () - else if () -....- else
3.4 switch
case
3.5 三項演算子
3.1 if文 (条件実行) |
---|
「ある条件Aが成り立った時だけある処理Bを行なう」という表現の記述方法である。日本語での表現例を次に示す。
日本語の例 | Java風表現例 | Javaでの表現例 |
天気予報が雨なら傘を持 って出かける。 |
if (天気予報が雨) { 傘を持つ } 出かける |
|
countの値が5の倍数なら コンソール画面で改行を 行なう。 |
if (countの値が5の倍数) { コンソール画面で改行を行なう } |
if (counter%5==0) { System.out. printf("\n"); } |
次のプログラムは1から10までの数について3の倍数を見つけるプログラムである。3の倍数が見つかったら,「3の倍数」と表示することにしている。
List 3.1.1 if文 |
/*If0.java by Kosaka*/ |
実行結果 |
1: 2: 3:3の倍数です 4: 5: 6:3の倍数です 7: 8: 9:3の倍数です 10: |
補足 |
if (num%3==0)
{ 条件が成り立った場合に行なう処理が1文だけなので |
次のプログラムは数当てゲームである。コンピュータが内部に持つ秘密の番号(1から100までの整数の うちの1つ)を人間が当てるゲームである。人間が適当な答えを与えると「大きすぎ」とか「小さすぎ」とコンピュータが答え,当たるまでこれを繰り返す。当 たったら,何回の試行で当たったかを表示する。
List 3.1.2 数当てゲーム |
/*GuessNum.java by Kosaka*/ |
実行結果 |
=== 数当てゲームです。 === 私は1から100までの整数を1つ隠しています。 整数を1つ入力して当ててください 50 1回目 50は大きすぎです もう一度,整数を1つ入力して当ててください 25 2回目 25は小さすぎです もう一度,整数を1つ入力して当ててください 38 3回目 38は小さすぎです もう一度,整数を1つ入力して当ててください 44 4回目 44は大きすぎです もう一度,整数を1つ入力して当ててください 41 5回目 41は小さすぎです もう一度,整数を1つ入力して当ててください 42 6回であたりました |
補足 「secretNumber=rnd.nextInt(100)+1」 について |
Random rnd = new Random();は乱数発生のおまじない。 条件の記述について 「!=」は「≠」の意味 ★工事中★ |
練習3.1 |
List 3.1.3 forループとifのプログラム | ||
public class XXXX { | ||
実行結果の予想1 | 実行結果の予想2 | 実行結果の予想3 |
0: Hello. What's
up? 1: 2: Hello. 3: What's up? 4: Hello. 5: 6: Hello. What's up? I understand. 7: I understand. |
0: 1: 2: Hello. 3: What's up? 4: Hello. 5: 6: Hello. What's up? I understand. 7: I understand. |
0: Hello. What's up? 1: 2: Hello. 3: What's up? 4: Hello. 5: 6: Hello. What's up? I understand. 7: I understand. |
複数の条件の取り扱い 条件の記述について
数学の表現 |
より正確な数学の表現 |
Javaの表現 |
a<bかつc<d |
a<b and c<b |
a<b && c<b (「a<b & c<b」でないことに注意) |
a<bまたはc<d |
a<b or c<b |
a<b || c<b |
練習3.2 |
a,bは整数として a<-3,6<aならbを1増加させる | ||
(1) |
(2) |
(3) |
if (a<-3,6<a) { b++; } |
if (a<-3 && 6<a)
{ b++; } |
if (a<-3 || 6<a) { b++; } |
a,bは整数として -3≦a≦6ならbを1増加させる | ||
(1) |
(2) |
(3) |
if (-3<=a<=6) { b++; } |
if (-3<=a && a<=6)
{ b++; } |
if (-3<=a || a<=6)
{ b++; } |
課題3 その1 |
---|
(1)キーボードから1つの整数を読み込み,その値が偶数なら「even
number」と表示するプログラムを作りなさい。
偶数かどうかは2で割ったあまりが0であるかどうかを検査すればよい。 (p03ex01.java)
検証は,1,2,3,4,5の5個の値について行いなさい。
3.2 if else
文 (条件による処理の二者択一)
「ある条件Aが成り立ったら処理Bを行ない,そうでなかったら処理Cを行なう」という表現の記述方法である。日本語での表現例を次に示す。 if (numberが奇数) {
日本語の例
Java風表現例
Javaでの表現例
天気予報が雨なら映画館
でデートし,
そうでなければディズニ
ーランドでデートする。if (天気予報が雨) {
映画館でデート
}
else {
ディズニーランドでデート
}
ある数numberが奇数なら
3倍して1を加え,
そうでなかったら2で割
り,numberの値とする。
numberにnumber*3+1を代入
} else
{
numberにnumber/2を代入
}if (number%2==1) {
number=3*number+1;
} else {
number=number/2;
}
次のプログラムはキーボードから入力された正整数に対して次の処理を行なう。
正整数が奇数なら3倍して1を加え,そうでなかったら2で割る。そうして出来た新しい正整数に対して同じ処理を繰り返す。
そして1になるまでこれを続ける。
表示では,何回目の処理かがわかるようにし,5つごとに改行する。
List 3.2.1 if else文 |
/*Ifelse0.java by Kosaka*/ |
実行結果(2回) |
正整数を入力してください 20 |
補足 |
if (number%2==1)
{ 条件が成り立った場合に行なう処理あるいは成り立たなかった場合に行なう処理が1文だけなので |
練習3.3 |
List 3.2.2 forループとif-elseのプログラム | ||
public class XXXX { | ||
実行結果の予想1 | 実行結果の予想2 | 実行結果の予想3 |
0: Hello. What's up? 1: 2: Hello. 3: What's up? 4: Hello. 5: 6: Hello. What's up? I understand. 7: I understand. |
0: Hello. 1: What's up? 2: Hello. 3: What's up? 4: Hello. 5: What's up? 6: Hello. I understand. 7: What's up? I understand. |
0: Hello. 1: 2: Hello. 3: What's up? 4: Hello. 5: 6: Hello. I understand. 7: I understand. |
課題3 その2
(2)キーボードから1つの整数を読み込み,その値が偶数なら「even number」,そうでないなら「odd
number」と表示するプログラムを作りなさい。 (p03ex02.java)
検証は,1,2,3,4,5の5個の値について行いなさい。
3.3 if else if else文 (条件による処理の多者択一) |
---|
〇if elseのイメージ if (試験の点scoreが90点以上) {
「ある条件Aが成り立ったら処理Bを行ない,そうでなく条件Cが成り立ったら処理Dを行ない,いずれでもなかったら処理Eを行なう」という表現の記述方法である。日本語での表現例を次に示す。
日本語の例
Java風表現例
Javaでの表現例
天気予報が雨なら映画館でデートし,
そうでなく,資金が十分だったら
ディズニーランドでデートし,
いずれでもなかったら
上野公園でデートする。if (天気予報が雨) {
映画館でデート
}
else if (資金はOK) {
ディズニーランドでデート
} else
{
上野動物園でデート
}
試験の点scoreが,
90点以上だったら
「チョー立派」と表示し,
そうでなく80点以上だったら
「立派」と表示し,
そうでなく70点以上だったら
「頑張ったね」と表示し,
そうでなく60点以上だったら
「まあまあだね」と表示し,
それ以外だったら
「次がんばってね」と表示する。
「チョー立派」と表示する
} else if
(試験の点scoreが80点以上) {
「立派」と表示する
} else if
(試験の点scoreが70点以上) {
「がんばったね」と表示する
} else if
(試験の点scoreが60点以上) {
「まあまあだね」と表示する
} else
{
「次がんばってね」と表示する
}if (90<=score) {
System.out.
printf("チョー立派\n");
} else if (80<=score) {
System.out.printf("立派\n");
} else if (70<=score) {
System.out.
printf("がんばったね\n");
} else if (60<=score) {
System.out.
printf("まあまあだね\n");
} else {
System.out.printf("次がんばってね\n");
}
if (天気予報が雨)
{
映画館でデート
} else if (資金はOK) {
ディズニーランドでデート
} else {
上野動物園でデート
}
というように使う。択一選択なので「天気予報が雨」で「資金がOK」の場合,映画館とディズニーランドの両方へ行くことはなく,映画館でデートである。
記述の順番に意味があり,最初に条件が成立したところの処理を行なう。
もし
if (資金はOK)
{
ディズニーランドでデート
} else if (天気予報が雨)
{
映画館でデート
} else {
上野動物園でデート
}
ならば,「天気予報が雨」で「資金がOK」の場合は,雨でもディズニーランドでデートになる。
また 「else
if (...)」はいくつあってもかまわないし,「else」の部分はなくてもよい。
〇 if elseを使ったプログラム
次のプログラムは試験結果の評価プログラムである。試験の点数を評価に変換します。
評価は以下のように行なわれる。
85点以上 優(A)
70点以上84点まで 良(B)
60点以上69点まで 可(C)
59点以下 不可(D)
List 3.3.1 試験結果の評価 |
/*Score.java by Kosaka*/ |
実行結果 |
試験結果の評価を行ないます 得点を入力すると評価を表示します。 負の値が入るまで,連続して評価を行ないます。 得点 >> 95 95 優(A) 得点 >> 81 81 良(B) 得点 >> 65 65 可(C) 得点 >> 57 57 不可(D) 得点 >> -1 お疲れ様でした |
補足 |
if
else if・・・の流れは次のようになる。
データ数が固定でない場合,ループから抜け出すためにデータの終わりのしるしとして,データには含まれないはずの値を |
練習3.4 |
List 3.3.2 forループとif-elseifのプログラム | ||
public class XXXX { | ||
実行結果の予想1 | 実行結果の予想2 | 実行結果の予想3 |
0: Hello. What's up? 1: 2: Hello. 3: What's up? 4: Hello. 5: 6: Hello. What's up? I understand. 7: I understand. |
0: 1: 2: Hello. 3: What's up? 4: Hello. 5: 6: Hello. What's up? I understand. 7: I understand. |
0: Hello. 1: 2: Hello. 3: What's up? 4: Hello. 5: 6: Hello. I understand. 7: I understand. |
課題3 その3 |
---|
(3)キーボードから2整数を読み込み,大小関係を表示するプログラムを作りなさい。 (p03ex03.java)
ただし実行例が次のようになることを検証しなさい。
<<実行例1>>
2数を入力します
1つめ --> 17
2つめ --> 7
17 > 7<<実行例2>>
2数を入力します
1つめ --> -17
2つめ --> 7
-17 < 7<<実行例3>>
2数を入力します
1つめ --> 100
2つめ --> 100
100 = 100
(4)キーボードから正整数nを読み込み,長さnの棒を「*」で描くプログラムを作りなさい。(p03ex04.java)
ただし,棒の左端から5,10,15,20...の位置は「*」でなく「-」で描かれるようにします。実行例が次のようになることを検証しなさい。
<<実行例1>>
n= 23
****-****-****-****-***<<実行例2>>
n= 38
****-****-****-****-****-****-****-***
(5)キーボードから複数個の正整数値を読み込み,合計値と平均値(小数第1位まで)を表示するプログラムを作りなさい。(p03ex05.java)
た
だし負整数が入力されたらデータはもうなくなったと判断することとし,負の数は計算には使用しないこととする。またデータは1つも入力されないこともあ
り,このときは最初から負の値が入力される。このような場合には合計値と平均値が求められないので,合計値と平均値は求められないと表示して終了するこ
と。
1から10までの整数の合計と平均値,1から5までの整数の合計と平均値の算出を検証しなさい。また,最初から-1を入力し,合計値と平均値は求められないと表示されることも検証しなさい。
(6)キーボードから正整数nを読み込み,次の4つに分類し表示するプログラムを作りなさい。(p03ex06.java)
1)6の倍数,2)3の倍数だが2の倍数ではない,3)2の倍数だが3の倍数ではない,4)2の倍数でも3の倍数でもない
次の4つの場合で検証しなさい。
<<実行例1>>
n = 38
2の倍数だが3の倍数ではない<<実行例2>>
n = 42
6の倍数<<実行例3>>
n = 53
2の倍数でも3の倍数でもない<<実行例4>>
n = 63
3の倍数だが2の倍数ではない
(7)int型変数xをループカウンタとしてforを使ったプログラムで,ループ中にy1,y2,y3,y4を作り次の表を作りなさい。(p03ex07.java)
これ以外の変数を用いてはいけない。
ただし,xの範囲は1≦x≦100としなさい。
ヒント
y1,y4はxが偶数か奇数に分けて,xの値より求めればよい。y2,y3はxを4で割ったあまりで分類
x
y1 y2 y3 y4 |
(8)正整数nを入力し,nに応じて「*」「-」で以下の模様を描くプログラムを作りなさい。(p03ex08.java)
nは20まで対応しなさい。
検証はn=1,2,3,5,10,20で行ないなさい。
n=1 |
n=2 |
n=3 |
n=4 |
n=5 |
n=6 |
n=7 |
n=8 |
* |
** |
*** |
**** |
***** |
****** |
******* |
******** |
(9)正整数nを入力し,nに応じて「*」「-」で以下の模様を描くプログラムを作りなさい。(p03ex09.java)
nは20まで対応しなさい。検証はn=1,2,3,5,10,20で行ないなさい。
n=1 |
n=2 |
n=3 |
n=4 |
n=5 |
n=6 |
n=7 |
n=8 |
* |
** |
*** |
**** |
***** |
****** |
******* |
******** |
(10)二次方程式 x2+bx+c=0
において,bとcをキーボードから実数型変数に読み取って,解くプログラムを作りなさい。(p03ex10.java)
ただし,(a)2つの実数解を持
つ場合は,「2つの実数解」と表示し,2つの解を数値で表すこととし,(b)重解を持つ場合は「重解」と表示し,解を数値で表すこととし,(c)2つの虚
数解を持つ場合は,「2つの虚数解」と表示し,実部と虚部をわかるように表示すること。下に示す3つの実行例で検証しなさい。
平方根の計算について
double
xx,yy;
のもとに
yy=Math.sqrt(xx);
でxxの平方根がyyに求められる。
実行の様子の例 | 意味 |
b,cを入力してください b = 4 c = 3 b=4.000000 c=3.000000 2つの実数解:-1.000000, -3.000000 b,cを入力してください b = 4 c = 4 b=4.000000 c=4.000000 重解:-2.000000 b,cを入力してください b = 4 c = 5 b=4.000000 c=5.000000 2つの虚数解:実部-2.000000, ±虚部1.000000 |
x2+4x+3=0
x2+4x+4=0
|
追跡課題(実行結果を見ないで,実行結果を予想してみよう) |
(1)ループと選択の複合プログラム例(100から200までの素数)
100から200までの素数とその個数を求めるプログラム。
素数とは2以上の整数のうち,2とその数自身以外に約数を持たない数のことである。
List 3.3.3 100から200までの素数とその個数を求めるプログラム |
/*Primenumbers.java by Kosaka*/ |
実行結果 |
100から200までの素数を求める。 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 素数は21個見つかりました。 |
(2)ループと選択の複合プログラム例(200から240までの整数の素因数分解)
200から240までの整数の素因数分解を求めるプログラム。
List 3.3.4 200から240までの素因数分解を求めるプログラム |
/*Primefactorization.java by Kosaka*/ |
実行結果 |
200 = 2*2*2*5*5 201 = 3*67 202 = 2*101 203 = 7*29 204 = 2*2*3*17 205 = 5*41 206 = 2*103 207 = 3*3*23 208 = 2*2*2*2*13 209 = 11*19 210 = 2*3*5*7 211 = 211 素数 212 = 2*2*53 213 = 3*71 214 = 2*107 215 = 5*43 216 = 2*2*2*3*3*3 217 = 7*31 218 = 2*109 219 = 3*73 220 = 2*2*5*11 221 = 13*17 222 = 2*3*37 223 = 223 素数 224 = 2*2*2*2*2*7 225 = 3*3*5*5 226 = 2*113 227 = 227 素数 228 = 2*2*3*19 229 = 229 素数 230 = 2*5*23 231 = 3*7*11 232 = 2*2*2*29 233 = 233 素数 234 = 2*3*3*13 235 = 5*47 236 = 2*2*59 237 = 3*79 238 = 2*7*17 239 = 239 素数 240 = 2*2*2*2*3*5 |
3.4 switch
case文 (値による処理の多者択一)
「ある変数xの値がAなら処理Bを行ない,Cだったら処理Dを行ない,いずれでもなかったら処理Eを行なう」という表現の記述方法である。
次のプログラムでは入力された-2から2までの値により,the
day before yesterday から the day after tmorrow までを表示する。
もし指定した-2から2以外の値が入力されたら
unknown と表示する。
defaultとはどれにも当てはまらない場合の意味である。
List 3.4.1 昨日,今日,明日 |
/*Switchcase.java by Kosaka*/ |
実行結果(3回の異なる実行結果) |
-2から2までの数を入力してください >>2 -2から2までの数を入力してください >>0 -2から2までの数を入力してください >>3 |
補足 |
switch (XXX) [ の形になる switch case文は字下げ(インデント)が規則どおりにならない。 |
3.5 三項演算子 (条件による値の二者択一)
「a<bならば変数xの値はpにして,そうでなかったら変数xの値はqにする」という操作の記述方法である。
次の2つの表現は同じ意味となる。 | |
if else による表現 | 三項演算子による表現 |
import java.util.*; // StringTokenizer private int getInt(String prompt){ |
import java.util.*; // StringTokenizer |
3.6 ここまでの内容の修得確認 |
---|
練習3.5 |
(1) public class XXXX { public static void main(String[] args) { XXXX mainprg = new XXXX(); } XXXX() { int x,sum,sum2; sum=0; sum2=0; for ( x=1; x<=8; x++ ) { sum=sum+x; sum2=sum2+x*x; System.out.printf("x= %d sum= %2d sum2= %3d\n",x,sum,sum2); } System.out.printf("sum = %d\n",sum); System.out.printf("sum2 = %d\n",sum2); } } |
|
(2) public class XXXX { public static void main(String[] args) { XXXX mainprg = new XXXX(); } XXXX() { int x,sum2; x=0; sum2=0; while ( sum2<=200 ) { x++; sum2=sum2+x*x; System.out.printf("x= %d sum2= %3d\n",x,sum2); } System.out.printf("The first value = %d\n",x); } } |
|
(3) public class XXXX { public static void main(String[] args) { XXXX mainprg = new XXXX(); } XXXX() { int day,x,sum; sum=0; for ( day=1,x=1; day<=7; day++,x=x*2 ) { sum=sum+x; if (4<=day) { sum=sum+20; } System.out.printf("day= %d sum= %4d\n",day,sum); } System.out.printf("The total number = %d\n",sum); } } |
|
(4) public class XXXX { public static void main(String[] args) { XXXX mainprg = new XXXX(); } XXXX() { int day,x,sum; sum=0; for ( day=1,x=1; day<=7; day++,x=x*2 ) { sum=sum+x; if (day%2==1) { sum=sum+5; } else { sum=sum+8; } System.out.printf("day= %d sum= %4d\n",day,sum); } System.out.printf("The total number = %d\n",sum); } } |
|
(5) public class XXXX { public static void main(String[] args) { XXXX mainprg = new XXXX(); } XXXX() { int day,x,sum; sum=0; for ( day=1,x=1; day<=7; day++,x=x*2 ) { sum=sum+x; if (day%2==1) { sum=sum+5; } else { sum=sum+8; } System.out.printf("day= %d sum= %4d\n",day,sum); } System.out.printf("The total number = %d\n",sum); } } |
|
(6) public class XXXX { public static void main(String[] args) { XXXX mainprg = new XXXX(); } XXXX() { int day,x,sum; sum=0; for ( day=1,x=1; day<=7; day++,x=x*2 ) { sum=sum+x; switch (day) { case 2: sum=sum+5; break; case 5: sum=sum+10; break; default: sum=sum+2; break; } System.out. printf("day= %d sum= %4d\n",day,sum); } System.out.printf("The total number = %d\n",sum); } } |
|
(7) public class XXXX { public static void main(String[] args) { XXXX mainprg = new XXXX(); } XXXX() { int x,y,len; len=5; for ( x=1; x<=len; x++ ) { if (x==1||x==len) { for ( y=1; y<=len; y++ ) { System.out.print("*"); } } else { for ( y=1; y<=len; y++ ) { if (y==1||y==len) { System.out.print("*"); } else { System.out.print("+"); } } } System.out.print("\n"); } } } |
課題3 |
---|
(1)キーボードから1つの整数を読み込み,その値が偶数なら「even
number」と表示するプログラムを作りなさい。
偶数かどうかは2で割ったあまりが0であるかどうかを検査すればよい。 (p03ex01.java)
検証は,1,2,3,4,5の5個の値について行いなさい。 (再掲)
(2)キーボードから1つの整数を読み込み,その値が偶数なら「even
number」,そうでないなら「odd
number」と表示するプログラムを作りなさい。 (p03ex02.java)
検証は,1,2,3,4,5の5個の値について行いなさい。 (再掲)
(3)キーボードから2整数を読み込み,大小関係を表示するプログラムを作りなさい。 (p03ex03.java) (再掲)
ただし実行例が次のようになることを検証しなさい。
<<実行例1>>
2数を入力します
1つめ --> 17
2つめ --> 7
17 > 7
<<実行例2>>
2数を入力します
1つめ --> -17
2つめ --> 7
-17 < 7
<<実行例3>>
2数を入力します
1つめ --> 100
2つめ --> 100
100 = 100
(4)キーボードから正整数nを読み込み,長さnの棒を「*」で描くプログラムを作りなさい。(p03ex04.java) (再掲)
ただし,棒の左端から5,10,15,20...の位置は「*」でなく「-」で描かれるようにします。実行例が次のようになることを検証しなさい。
<<実行例1>>
n= 23
****-****-****-****-***<<実行例2>>
n= 38
****-****-****-****-****-****-****-***
(5)キーボードから複数個の正整数値を読み込み,合計値と平均値(小数第1位まで)を表示するプログラムを作りなさい。(p03ex05.java) (再掲)
た
だし負整数が入力されたらデータはもうなくなったと判断することとし,負の数は計算には使用しないこととする。またデータは1つも入力されないこともあ
り,このときは最初から負の値が入力される。このような場合には合計値と平均値が求められないので,合計値と平均値は求められないと表示して終了するこ
と。
1から10までの整数の合計と平均値,1から5までの整数の合計と平均値の算出を検証しなさい。また,最初から-1を入力し,合計値と平均値は求められないと表示されることも検証しなさい。
(6)キーボードから正整数nを読み込み,次の4つに分類し表示するプログラムを作りなさい。(p03ex06.java) (再掲)
1)6の倍数,2)3の倍数だが2の倍数ではない,3)2の倍数だが3の倍数ではない,4)2の倍数でも3の倍数でもない
次の4つの場合で検証しなさい。
<<実行例1>>
n = 38
2の倍数だが3の倍数ではない<<実行例2>>
n = 42
6の倍数<<実行例3>>
n = 53
2の倍数でも3の倍数でもない
<<実行例4>>
n = 63
3の倍数だが2の倍数ではない
(7)int型変数xをループカウンタとしてforを使ったプログラムで,ループ中にy1,y2,y3,y4を作り次の表を作りなさい。(p03ex07.java) (再掲)
これ以外の変数を用いてはいけない。
ただし,xの範囲は1≦x≦100としなさい。
ヒント
y1,y4はxが偶数か奇数に分けて,xの値より求めればよい。y2,y3はxを4で割ったあまりで分類
x
y1 y2 y3 y4 |
(8)正整数nを入力し,nに応じて「*」「-」で以下の模様を描くプログラムを作りなさい。(p03ex08.java)
nは20まで対応しなさい。
検証はn=1,2,3,5,10,20で行ないなさい。
n=1 |
n=2 |
n=3 |
n=4 |
n=5 |
n=6 |
n=7 |
n=8 |
* |
** |
*** |
**** |
***** |
****** |
******* |
******** |
(9)正整数nを入力し,nに応じて「*」「-」で以下の模様を描くプログラムを作りなさい。(p03ex09.java)
nは20まで対応しなさい。検証はn=1,2,3,5,10,20で行ないなさい。
n=1 |
n=2 |
n=3 |
n=4 |
n=5 |
n=6 |
n=7 |
n=8 |
* |
** |
*** |
**** |
***** |
****** |
******* |
******** |
(10)二次方程式
x2+bx+c=0
において,bとcをキーボードから実数型変数に読み取って,解くプログラムを作りなさい。(p03ex10.java) (再掲)
ただし,
(a)2つの実数解を持
つ場合は,「2つの実数解」と表示し,2つの解を数値で表すこととし,(b)重解を持つ場合は「重解」と表示し,解を数値で表すこととし,(c)2つの虚
数解を持つ場合は,「2つの虚数解」と表示し,実部と虚部をわかるように表示すること。下に示す3つの実行例で検証しなさい。
平方根の計算について
double xx,yy;
のもとに
yy=Math.sqrt(xx);
でxxの平方根がyyに求められる。
実行の様子の例 | 意味 |
b,cを入力してください b = 4 c = 3 b=4.000000 c=3.000000 2つの実数解:-1.000000, -3.000000 b,cを入力してください b = 4 c = 4 b=4.000000 c=4.000000 重解:-2.000000 b,cを入力してください b = 4 c = 5 b=4.000000 c=5.000000 2つの虚数解:実部-2.000000, ±虚部1.000000 |
x2+4x+3=0
x2+4x+4=0
|
実行例 |
1: 500 525
725 2: 501 668 835 3: 504 550 746 4: 504 672 840 5: 504 703 865 6: 504 810 954 7: 507 676 845 8: 510 680 850 9: 510 792 942 10: 513 684 855 11: 516 688 860 12: 519 692 865 13: 520 546 754 14: 520 576 776 15: 520 765 925 16: 522 696 870 17: 522 760 922 18: 525 700 875 19: 528 605 803 20: 528 630 822 21: 528 704 880 22: 531 708 885 23: 532 624 820 24: 533 756 925 25: 534 712 890 26: 537 716 895 27: 540 567 783 28: 540 629 829 29: 540 720 900 30: 540 819 981 31: 543 724 905 32: 546 728 910 33: 549 732 915 34: 552 736 920 35: 555 572 797 36: 555 740 925 37: 558 744 930 38: 560 588 812 39: 560 684 884 40: 560 702 898 41: 561 748 935 42: 564 752 940 43: 567 756 945 44: 570 760 950 45: 573 764 955 46: 576 660 876 47: 576 768 960 48: 579 772 965 49: 580 609 841 50: 580 741 941 51: 582 776 970 52: 585 648 873 53: 585 780 975 54: 588 784 980 55: 591 788 985 56: 594 608 850 57: 594 792 990 58: 595 600 845 59: 597 796 995 60: 600 630 870 61: 600 800 1000 62: 612 759 975 63: 615 728 953 64: 616 663 905 65: 616 735 959 66: 620 651 899 67: 621 672 915 68: 624 715 949 69: 638 720 962 70: 640 672 928 71: 650 720 970 72: 660 693 957 73: 680 714 986 74: 696 697 985 直角三角形の総数 = 74 |