内部整列
回答と解説を掲載します。
JAVA の勉強を始めてから今日で きっかり3カ月だ。
下記の過去問を完璧に理解するまでには、それはもう
かなり苦労しました。 この記事に目をとめてくださった
方々も、中途半端なインチキ教本には振り回されない様
ご注意下さい。
※やさしいJ○○
情報処理再チャレンジブログ ホー ム へ
回答と解説を掲載します。
JAVA の勉強を始めてから今日で きっかり3カ月だ。
下記の過去問を完璧に理解するまでには、それはもう
かなり苦労しました。 この記事に目をとめてくださった
方々も、中途半端なインチキ教本には振り回されない様
ご注意下さい。
※やさしいJ○○
| (プログラム1) | ||||||||||||||||||||||||||
| 01 | public class PriceSort { | |||||||||||||||||||||||||
| 02 | public static void main(String[ ] args) { | |||||||||||||||||||||||||
| 03 | Computer[ ] computers = { | |||||||||||||||||||||||||
| 04 | new Server("Sv1", 800, 256, 300000), | |||||||||||||||||||||||||
| 05 | new PersonalComputer("Pc1", 450, 128, 180000), | |||||||||||||||||||||||||
| 06 | new Server("Sv2", 800, 512, 500000), | |||||||||||||||||||||||||
| 07 | new PersonalComputer("Pc2", 450, 256, 200000) }; | |||||||||||||||||||||||||
| 08 | for (int i = 0; i < computers.length; i++) { | |||||||||||||||||||||||||
| 09 | System.out.println(computers[i]); | |||||||||||||||||||||||||
| 10 | } | |||||||||||||||||||||||||
| 11 | System.out.println("\n<sorted by price>"); | |||||||||||||||||||||||||
| 12 | PriceUtility.ComputeDiscountPrice(computers); | |||||||||||||||||||||||||
| 13 | PriceUtility.sort(computers); | |||||||||||||||||||||||||
| 14 | for (int i = 0; i < computers.length; i++) { | |||||||||||||||||||||||||
| 15 | System.out.println(computers[i]); | |||||||||||||||||||||||||
| 16 | } | |||||||||||||||||||||||||
| 17 | } | |||||||||||||||||||||||||
| 18 | } | |||||||||||||||||||||||||
| (プログラム2) | ||||||||||||||||||||||||||
| 01 | public interface IComp { | |||||||||||||||||||||||||
| 02 | int compareWith(IComp a); | |||||||||||||||||||||||||
| 03 | } | |||||||||||||||||||||||||
| (プログラム3) | ||||||||||||||||||||||||||
| 01 | public class Computer implements IComp { | |||||||||||||||||||||||||
| 02 | String name; | |||||||||||||||||||||||||
| 03 | int frequency; | |||||||||||||||||||||||||
| 04 | int memory; | |||||||||||||||||||||||||
| 05 | int price; | |||||||||||||||||||||||||
| 06 | public Computer(String name, int frequency, int memory, int price) { | |||||||||||||||||||||||||
| 07 | this.name = name; | |||||||||||||||||||||||||
| 08 | this.frequency = frequency; | |||||||||||||||||||||||||
| 09 | this.memory = memory; | |||||||||||||||||||||||||
| 10 | this.price = price; | |||||||||||||||||||||||||
| 11 | } | |||||||||||||||||||||||||
| 12 | public int getPrice() { | |||||||||||||||||||||||||
| 13 | return price; | |||||||||||||||||||||||||
| 14 | } | |||||||||||||||||||||||||
| 15 | public void setPrice(int price) { | |||||||||||||||||||||||||
| 16 | this.price = price; | |||||||||||||||||||||||||
| 17 | } | |||||||||||||||||||||||||
| 18 | public String toString() { | |||||||||||||||||||||||||
| 19 | return name + ", frequency:" + frequency + ",memory:" + memory | |||||||||||||||||||||||||
| 20 | + ",price:" + price; | |||||||||||||||||||||||||
| 21 | } | |||||||||||||||||||||||||
| 22 | public double getDiscountRate() { | |||||||||||||||||||||||||
| 23 | return 0.0; | |||||||||||||||||||||||||
| 24 | } | |||||||||||||||||||||||||
| 25 | public int compareWith(IComp a) { | |||||||||||||||||||||||||
| 26 | Computer computer = (Computer) a; | |||||||||||||||||||||||||
| 27 | return computer.price - this.price; | |||||||||||||||||||||||||
| 28 | } | |||||||||||||||||||||||||
| 29 | } | |||||||||||||||||||||||||
| (プログラム4) | ||||||||||||||||||||||||||
| 01 | public class Server extends Computer { | |||||||||||||||||||||||||
| 02 | public Server(String name, int frequency, int memory, int price) { | |||||||||||||||||||||||||
| 03 | super(name, frequency, memory, price); | |||||||||||||||||||||||||
| 04 | } | |||||||||||||||||||||||||
| 05 | public double getDiscountRate() { | |||||||||||||||||||||||||
| 06 | return 0.1; | |||||||||||||||||||||||||
| 07 | } | |||||||||||||||||||||||||
| 08 | } | |||||||||||||||||||||||||
| (プログラム5) | ||||||||||||||||||||||||||
| 01 | public class PersonalComputer extends Computer { | |||||||||||||||||||||||||
| 02 | public PersonalComputer(String name, int frequency, int memory, int price) { | |||||||||||||||||||||||||
| 03 | super(name, frequency, memory, price); | |||||||||||||||||||||||||
| 04 | } | |||||||||||||||||||||||||
| 05 | public double getDiscountRate() { | |||||||||||||||||||||||||
| 06 | return 0.2; | |||||||||||||||||||||||||
| 07 | } | |||||||||||||||||||||||||
| 08 | } | |||||||||||||||||||||||||
| (プログラム6) | ||||||||||||||||||||||||||
| 01 | public class PriceUtility { | |||||||||||||||||||||||||
| 02 | public static void ComputeDiscountPrice(Computer[ ] a) { | |||||||||||||||||||||||||
| 03 | int newPrice; | |||||||||||||||||||||||||
| 04 | for (int i = 0; i < a.length; i++) { | |||||||||||||||||||||||||
| 05 | newPrice = (int) (a[i].getPrice() * (1 - a[i].getDiscountRate())); | |||||||||||||||||||||||||
| 06 | a[i].setPrice(newPrice); | |||||||||||||||||||||||||
| 07 | } | |||||||||||||||||||||||||
| 08 | } | |||||||||||||||||||||||||
| 09 | ||||||||||||||||||||||||||
| 10 | public static void sort(IComp[ ] a) { | |||||||||||||||||||||||||
| 11 | int j; | |||||||||||||||||||||||||
| 12 | for (int i = 1; i < a.length; i++) { | |||||||||||||||||||||||||
| 13 | IComp temp = a[i]; | |||||||||||||||||||||||||
| 14 | for (j = i - 1; j >= 0 && temp.compareWith(a[j]) < 0; j--) { | |||||||||||||||||||||||||
| 15 | a[j + 1] = a[j]; | |||||||||||||||||||||||||
| 16 | } | |||||||||||||||||||||||||
| 17 | a[j + 1] = temp; | |||||||||||||||||||||||||
| 18 | } | |||||||||||||||||||||||||
| 19 | } | |||||||||||||||||||||||||
| 20 | } | |||||||||||||||||||||||||
情報処理再チャレンジブログ ホー ム へ