(課題1:体積を求めるプログラムを作成せよ)


(javaプログラミングソース1)

import java.io.*; class taiseki { public static void main(String args[]){ BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); String rdLine,rd2Line; double takasa = 0;// double hannkei = 0; double teimennseki = 0; double taiseki = 0; try{ System.out.println("計算したい体積の形をえらんでください"); System.out.print("(1)多角錐の体積,"); System.out.print("(2)多角柱の体積,"); System.out.println("(3)球の体積"); System.out.print("番号を入力してください:"); rdLine = br.readLine(); int cheakNum = Integer.parseInt(rdLine); switch (cheakNum) { case 1: System.out.print("底面積を入力してください:"); teimennseki = (new Double(br.readLine())).doubleValue(); System.out.print("錐の高さを入力してください:"); takasa = (new Double(br.readLine())).doubleValue(); Volume volume = new Volume(hannkei, takasa, teimennseki); taiseki = volume.sui(); System.out.println(); System.out.println("この錐の体積は『"+taiseki+"』です。"); break; case 2: System.out.print("底面積を入力してください:"); teimennseki = (new Double(br.readLine())).doubleValue(); System.out.print("柱の高さを入力してください:"); takasa = (new Double(br.readLine())).doubleValue(); volume = new Volume(hannkei, takasa, teimennseki); taiseki = volume.tyuu(); System.out.println(); System.out.println("この錐の体積は『"+taiseki+"』です。"); break; case 3: System.out.print("球の半径を入力してださい:"); hannkei = (new Double(br.readLine())).doubleValue(); volume = new Volume(hannkei, takasa, teimennseki); taiseki = volume.kyuu(); System.out.println(); System.out.println("この球の体積は『"+taiseki+"』です。"); break; default: System.out.println("入力した値が正しくありません。正しい値を入力してください。"); } }catch(Exception e){ System.out.println("IOExceptionエラーが発生しました"); } } } class Volume{ double hannkei,takasa, teimennseki; final static double pai = 3.14; Volume(double hannkei, double takasa, double teimennseki){ this.hannkei = hannkei; this.takasa = takasa; this.teimennseki = teimennseki; } public double sui(){ return(teimennseki* teimennseki * 1/3); } public double tyuu(){ return(teimennseki * takasa); } public double kyuu(){ return(4/3 * pai * hannkei * hannkei * hannkei); } }

(課題1の実行結果)

[yamasiro-hikaru-no-ibook-g4:~/desktop/javaprog] j06061% java taiseki 計算したい体積の形をえらんでください (1)多角錐の体積,(2)多角柱の体積,(3)球の体積 番号を入力してください:1 底面積を入力してください:3 錐の高さを入力してください:5 この錐の体積は『3.0』です。 [yamasiro-hikaru-no-ibook-g4:‾/desktop/javaprog] j06061% java taiseki 計算したい体積の形をえらんでください (1)多角錐の体積,(2)多角柱の体積,(3)球の体積 番号を入力してください:2 底面積を入力してください:3 柱の高さを入力してください:5 この錐の体積は『15.0』です。 [yamasiro-hikaru-no-ibook-g4:‾/desktop/javaprog] j06061% java taiseki 計算したい体積の形をえらんでください (1)多角錐の体積,(2)多角柱の体積,(3)球の体積 番号を入力してください:3 球の半径を入力してださい:5 この球の体積は『392.5』です。

(課題2:表面積を求めるプログラムを作成せよ)


(javaプログラミングソース2)

import java.io.*; class hyoumennseki { public static void main(String args[]){ BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); String rdLine,rd2Line; double tate = 0; double yoko = 0; double takasa =0; double are = 0; try{ System.out.println("どの図形の表面積を求めますか"); System.out.print("(1)正四面体の表面積,"); System.out.print("(2)長方形の表面積,"); System.out.println("(3)球の表面積"); System.out.print("番号を入力してください:"); rdLine = br.readLine(); int cheakNum = Integer.parseInt(rdLine); switch (cheakNum) { case 1: System.out.print("辺の長さを入力してください:"); tate = (new Double(br.readLine())).doubleValue(); Area area = new Area(tate,yoko,takasa); are = area.simenntai(); System.out.println(); System.out.println("正四面体の表面積は『"+are+"』です。"); break; case 2: System.out.print("縦の長さを入力してください:"); tate = (new Double(br.readLine())).doubleValue(); System.out.print("横の長さを入力してください:"); yoko = (new Double(br.readLine())).doubleValue(); System.out.print("高さを入力してください:"); takasa = (new Double(br.readLine())).doubleValue(); area = new Area(tate,yoko,takasa); are = area.tyouhokei(); System.out.println(); System.out.println("長方形の表面積は『"+are+"』です。"); break; case 3: System.out.print("球の半径を入力してださい:"); tate = (new Double(br.readLine())).doubleValue(); area = new Area(tate,yoko,takasa); are = area.kyuu(); System.out.println(); System.out.println("この球の表面積は『"+are+"』です。"); break; default: System.out.println("入力値が正しくありません。正しい入力値を入力してください。"); } }catch(Exception e){ System.out.println("IOExceptionエラーが発生しました"); } } } class Area{ double tate,yoko,takasa; final static double pai = 3.14; Area(double tate, double yoko, double takasa){ this.tate = tate; this.yoko = yoko; this.takasa = takasa; } public double simenntai(){ return(Math.sqrt((tate*tate-tate/2*tate/2))* tate/2*4); } public double tyouhokei(){ return(tate*yoko*takasa); } public double kyuu(){ return(4 * pai * tate * tate); } }

(課題2の実行結果)

[yamasiro-hikaru-no-ibook-g4:‾/desktop/javaprog] j06061% java hyoumennseki どの図形の表面積を求めますか (1)正四面体の表面積,(2)長方形の表面積,(3)球の表面積 番号を入力してください:1 辺の長さを入力してください:3 正四面体の表面積は『15.588457268119896』です。 [yamasiro-hikaru-no-ibook-g4:‾/desktop/javaprog] j06061% java hyoumennseki どの図形の表面積を求めますか (1)正四面体の表面積,(2)長方形の表面積,(3)球の表面積 番号を入力してください:2 縦の長さを入力してください:5 横の長さを入力してください:4 高さを入力してください:3 長方形の表面積は『60.0』です。 [yamasiro-hikaru-no-ibook-g4:‾/desktop/javaprog] j06061% java hyoumennseki どの図形の表面積を求めますか (1)正四面体の表面積,(2)長方形の表面積,(3)球の表面積 番号を入力してください:3 球の半径を入力してださい:4 この球の表面積は『200.96』です。

(課題3:例題を参考に階乗計算を再帰プログラムにより制作し文による階乗計算との違いを考察せよ)


(javaプログラミングソース3)

import java.io.*; class saiki{ public static void main(String args[]) throws Exception{ BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); System.out.print("input natural numeber:"); int num = (new Integer(in.readLine())).intValue(); System.out.print("for文を使った階乗計算 ==>"); System.out.println(num +" ! =" + factfor(num)); System.out.print("再起呼び出しによる階乗計算 ==>"); System.out.println(num +" ! ="+factrec(num)); } static int factfor(int number){ int factrial = 1; for (int i = 1; i <= number; i++){ factrial = i * factrial; } return(factrial); } static int factrec(int number){ if (number == 0) return(1); return(number * factrec(number -1)); } }

(javaプログラミングソース3の考察)

再帰呼び出しとはメソッドの中から自分自身を呼び出すメソッドを作る事ができる。 そのような呼び出しの事を再帰呼び出しといい再帰呼び出しのあるプログラムを 再帰プログラムという。今回のプログラミングではfactrialを返り値として自分の中に 宣言してそれをnumberの値が0になるまで繰り返ししている。 if文を使うのと違ってメモリを多く使うので簡単な繰り返し処理ならwhile文、 for文の方がよい。

(感想)

今回のプログラミングで思った事は再帰呼びたしはどれくらい長い繰り返しの場合 だとwhileとかよりも良くなるのかなとおもった。そらから体積の部分は 計算式をたてるのは楽だったけど表面積の部分が大変だった。