プログラミング(Python、Perl、C、Go、JavaScript)、数学、読書…
開発環境
"初めてのC# 第2版"の第14章(ジェネリックとコレクション)の14.6(練習問題)を解いてみる。
練習 14-1
using System; public abstract class Animal { protected int weight; protected string name; public Animal(int weight, string name) { this.weight = weight; this.name = name; } public abstract void Speak(); public abstract void Move(); public override string ToString() { return base.ToString(); } } public class Cat : Animal { public Cat(int weight, string name) : base(weight, name) { } public override void Speak() { Console.WriteLine("みゃーみゃー"); } public override void Move() { Console.WriteLine("スルスル"); } public override string ToString() { return "Weight: " + this.weight + " Name: " + this.name; } } public class Dog : Animal { public Dog(int weight, string name) : base(weight, name) { } public override void Speak() { Console.WriteLine("わんわん"); } public override void Move() { Console.WriteLine("てくてく"); } public override string ToString() { return "Weight: " + this.weight + " Name: " + this.name; } } class Tester { public void Run() { Animal[] animals = new Animal[5]; animals[0] = new Cat(10, "Tama"); animals[1] = new Dog(26, "Milo"); animals[2] = new Cat(20, "Sora"); animals[3] = new Dog(10, "Frisky"); animals[4] = new Dog(50, "Laika"); foreach (Animal a in animals) { Console.WriteLine(a.ToString()); a.Speak(); a.Move(); Console.WriteLine(); } } static void Main() { Tester t = new Tester(); t.Run(); } }
出力結果
Weight: 10 Name: Tama みゃーみゃー スルスル Weight: 26 Name: Milo わんわん てくてく Weight: 20 Name: Sora みゃーみゃー スルスル Weight: 10 Name: Frisky わんわん てくてく Weight: 50 Name: Laika わんわん てくてく 続行するには何かキーを押してください . . .
練習 14-2
using System; using System.Collections.Generic; public abstract class Animal:IComparable { protected int weight; protected string name; public Animal(int weight, string name) { this.weight = weight; this.name = name; } public abstract void Speak(); public abstract void Move(); public override string ToString() { return base.ToString(); } public int CompareTo(object rhs) { Animal other = rhs as Animal; if (other != null) { return this.weight.CompareTo(other.weight); } else { throw new ApplicationException("比較できませんでした"); } } } public class Cat : Animal { public Cat(int weight, string name) : base(weight, name) { } public override void Speak() { Console.WriteLine("みゃーみゃー"); } public override void Move() { Console.WriteLine("スルスル"); } public override string ToString() { return "Weight: " + this.weight + " Name: " + this.name; } } public class Dog : Animal { public Dog(int weight, string name) : base(weight, name) { } public override void Speak() { Console.WriteLine("わんわん"); } public override void Move() { Console.WriteLine("てくてく"); } public override string ToString() { return "Weight: " + this.weight + " Name: " + this.name; } } class Tester { public void Run() { List animals = new List(); animals.Add(new Cat(10,"Tama")); animals.Add(new Dog(26, "Milo")); animals.Add(new Cat(20, "Sora")); animals.Add(new Dog(10, "Frisky")); animals.Add(new Dog(50, "Laika")); Console.WriteLine("ソート前"); foreach (Animal a in animals) { Console.WriteLine(a.ToString()); } animals.Sort(); Console.WriteLine("\nソート後"); foreach (Animal a in animals) { Console.WriteLine(a.ToString()); } } static void Main() { Tester t = new Tester(); t.Run(); } }
ソート前 Weight: 10 Name: Tama Weight: 26 Name: Milo Weight: 20 Name: Sora Weight: 10 Name: Frisky Weight: 50 Name: Laika ソート後 Weight: 10 Name: Frisky Weight: 10 Name: Tama Weight: 20 Name: Sora Weight: 26 Name: Milo Weight: 50 Name: Laika 続行するには何かキーを押してください . . .
練習 14-3
using System; using System.Collections.Generic; public abstract class Animal:IComparable { protected int weight; protected string name; public Animal(int weight, string name) { this.weight = weight; this.name = name; } public abstract void Speak(); public abstract void Move(); public override string ToString() { return base.ToString(); } public int CompareTo(object rhs) { Animal other = rhs as Animal; if (other != null) { return this.weight.CompareTo(other.weight); } else { throw new ApplicationException("比較できませんでした"); } } } public class Cat : Animal { public Cat(int weight, string name) : base(weight, name) { } public override void Speak() { Console.WriteLine("みゃーみゃー"); } public override void Move() { Console.WriteLine("スルスル"); } public override string ToString() { return "Weight: " + this.weight + " Name: " + this.name; } } public class Dog : Animal { public Dog(int weight, string name) : base(weight, name) { } public override void Speak() { Console.WriteLine("わんわん"); } public override void Move() { Console.WriteLine("てくてく"); } public override string ToString() { return "Weight: " + this.weight + " Name: " + this.name; } } class Tester { public void Run() { Stack animals1 = new Stack(); animals1.Push(new Cat(10,"Tama")); animals1.Push(new Dog(26, "Milo")); animals1.Push(new Cat(20, "Sora")); animals1.Push(new Dog(10, "Frisky")); animals1.Push(new Dog(50, "Laika")); Console.WriteLine("Stack"); foreach (Animal a in animals1) { Console.WriteLine(a.ToString()); } Queue animals2 = new Queue(); animals2.Enqueue(new Cat(10, "Tama")); animals2.Enqueue(new Dog(26, "Milo")); animals2.Enqueue(new Cat(20, "Sora")); animals2.Enqueue(new Dog(10, "Frisky")); animals2.Enqueue(new Dog(50, "Laika")); Console.WriteLine("\nQueue"); foreach (Animal a in animals2) { Console.WriteLine(a.ToString()); } } static void Main() { Tester t = new Tester(); t.Run(); } }
Stack Weight: 50 Name: Laika Weight: 10 Name: Frisky Weight: 20 Name: Sora Weight: 26 Name: Milo Weight: 10 Name: Tama Queue Weight: 10 Name: Tama Weight: 26 Name: Milo Weight: 20 Name: Sora Weight: 10 Name: Frisky Weight: 50 Name: Laika 続行するには何かキーを押してください . . .
練習 14-4
10分考えてもできなかったので再度挑戦。
0 コメント:
コメントを投稿