Import

// 디렉토리 안에 있는 모든 파일을 읽는다
public static void Import(string path, string ext, ref List<Figure> fList)
{
if (Directory.Exists(path))
{
Console.WriteLine(path);
string[] files = Directory.GetFiles(path, ext);
foreach (var file in files) Import(file, ref tList);
}
}

// 개별 파일을 읽는다
public static void Import(string filename, ref List<Figure> fList)
{
// 파일이 존재하면 읽어서 JSON deserialize하여 fList로 로딩한다.
}

HW3 Angle between two vectors

If v1 and v2 are normalised so that |v1|=|v2|=1, then angle = acos(v1•v2)

http://www.euclideanspace.com/maths/algebra/vectors/angleBetween/

// 세 점으로부터 도형의 내각 구하기
public static double InnerAngle(Point p1, Point p2, Point p3)
{
Point v1 = new Point(p1.X – p2.X, p1.Y – p2.Y); // v1 = p1 – p2
Point v2 = new Point(p3.X – p2.X, p3.Y – p2.Y); // v2 = p3 – p2
double len1 = Math.Sqrt(v1.X * v1.X + v1.Y * v1.Y); // v1.Length()
double len2 = Math.Sqrt(v2.X * v2.X + v2.Y * v2.Y); // v2.Length()
double nx1 = v1.X / len1; // n1 = v1.Normalize
double ny1 = v1.Y / len1;
double nx2 = v2.X / len2; // n2 = v2.Normalize
double ny2 = v2.Y / len2;
double dot = (nx1 * nx2) + (ny1 * ny2); // DotProduct(n1, n2)
double radian = Math.Acos(dot);
return (radian * 180.0 / Math.PI); // RadianToDegree
}

// 두 점 간의 거리 구하기

public static double Distance(Point p, Point q)
{
return Math.Sqrt((p.X – q.X) * (p.X – q.X) + (p.Y – q.Y) * (p.Y – q.Y));
}

HW2 GetFigureTypeFromName LINQ

public enum FigureType { Triangle, Square, Rectangle, Parallelogram, Rhombus, Trapezoid, Circle }

class Program
{
static Dictionary<string, FigureType> figureNameDic = new Dictionary<string, FigureType>();
static void SetFigureNameDictionary()
{
figureNameDic.Add(“삼각형”, FigureType.Triangle);
figureNameDic.Add(“Triangle”, FigureType.Triangle);
figureNameDic.Add(“TRIANGLE”, FigureType.Triangle);
figureNameDic.Add(“정사각형”, FigureType.Square);
figureNameDic.Add(“Square”, FigureType.Square);
figureNameDic.Add(“SQUARE”, FigureType.Square);
figureNameDic.Add(“직사각형”, FigureType.Rectangle);
figureNameDic.Add(“Rectangle”, FigureType.Rectangle);
figureNameDic.Add(“RECTANGLE”, FigureType.Rectangle);
figureNameDic.Add(“평행사변형”, FigureType.Parallelogram);
figureNameDic.Add(“Parallelogram”, FigureType.Parallelogram);
figureNameDic.Add(“PARALLELOGRAM”, FigureType.Parallelogram);
figureNameDic.Add(“마름모꼴”, FigureType.Rhombus);
figureNameDic.Add(“Rhombus”, FigureType.Rhombus);
figureNameDic.Add(“RHOMBUS”, FigureType.Rhombus);
figureNameDic.Add(“사다리꼴”, FigureType.Trapezoid);
figureNameDic.Add(“Trapezoid”, FigureType.Trapezoid);
figureNameDic.Add(“TRAPEZOID”, FigureType.Trapezoid);
figureNameDic.Add(“원”, FigureType.Circle);
figureNameDic.Add(“Circle”, FigureType.Circle);
figureNameDic.Add(“CIRCLE”, FigureType.Circle);
}

static FigureType? GetFigureTypeFromName(string str)
{
return figureNameDic.Where(x => x.Key.Contains(str)).Select(x => (FigureType?)x.Value).FirstOrDefault(); // FirstOrDefault returns the default value of a type if no item matches the predicate.
}

// 도형(Figure) 입력
static FigureType? GetInputFigure()
{
FigureType? inputFigure = null;
do
{
Console.Write(“도형의 종류를 입력해주세요(삼각형/정사각형/직사각형/평행사변형/마름모꼴/사다리꼴/원 등등 또는 Triangle/Square/Rectangle): “);
string str = Console.ReadLine();
inputFigure = GetFigureTypeFromName(str); // 입력된 도형에 따라서 enum 도형(Figure) 얻기
Console.WriteLine(“사용자 입력:{0} enum 도형:{1}”, str, inputFigure);
} while (inputFigure == null);
return inputFigure;
}

static void Main(string[] args)
{
SetFigureNameDictionary();
do
{
FigureType? inputFigure = GetInputFigure();
Console.WriteLine(“FigureType={0}”, inputFigure);
Console.WriteLine(“프로그램을 종료하려면 ESCAPE 키를 누르세요. 다시 계산하려면 ENTER 키를 누르세요.”);
} while (Console.ReadKey().Key != ConsoleKey.Escape);
}
}

HW3

단국대학교 멀티미디어공학전공 HCI프로그래밍2 (2015년 가을학기) 실습

날짜: 2015년 10월 30일

 

– 실습번호 : lab-03 (Due by 11/17)

– 실습제목 : collections, class, FileIO, LINQ

– 실습요약 : 평면 도형의 점들 입력 값으로 도형 판별하기 및 영역과 둘레 계산하기 및 쿼리

– 준비자료 : https://www.mathsisfun.com/geometry/quadrilaterals-interactive.html

 

– 실습문제

public enum FigureType // FigureType 판별
{
Triangle,
EquilateralTriangle,
IsoscelesTriangle,
ScaleneTriangle,
Quadrilateral,
Square,
Rectangle,
Parallelogram,
Rhombus,
Trapezoid,
None
}

 

  1. Point 클래스를 작성한다.

+ public int X { get;  set; }

+ public int Y { get;  set; }

+ public static implicit operator System.Drawing.Point(Point p) {

Return new System.Drawing.Point(p.x, p.y);

}

 

  1. Figure 추상클래스를 상속 받아 Triangle, Quadrilateral 클래스를 작성한다.

public class FigureTypeResolver : JavaScriptTypeResolver // JSON serialization & deserialization
{
public override Type ResolveType(string id)
{
return Type.GetType(id);
}

public override string ResolveTypeId(Type type)
{
if (type == null)
{
throw new ArgumentNullException(“type”);
}

return type.FullName;
}
}

public class FigureBound // TopLeft Point(X,Y) & Width & Height
{
public int X
{
set;
get;
}

public int Y
{
set;
get;
}

public int Width
{
set;
get;
}

public int Height
{
set;
get;
}

public FigureBound() : this (0, 0, 10, 10)
{
}

public FigureBound(int x, int y, int width, int height)
{
Set(x, y, width, height);
}

public void Set(int x, int y, int width, int height)
{
this.X = x;
this.Y = y;
this.Width = width;
this.Height = height;
}
public override string ToString() { return (String.Format(“({0}, {1}, {2}, {3})”, X, Y, Width, Height)); } // ToString method override
}

public abstract class Figure // Figure 추상 클래스
{
public ConsoleColor Color
{
get;
set;
}

protected List<Point> vertices = null;
public List<Point> Vertices // Use Point.cs (Not System.Drawing.Point) for JSON
{
get
{
return vertices;
}
set
{
vertices = value;
UpdateBounds(); // 새 정점에 따른 바운딩박스 계산
UpdateSides(); // 새 정점에 따른 변들 계산
UpdateAngles(); // 새 정점에 따른 내각들 계산
}
}

public FigureBound Bounds = new FigureBound(); // 바운딩박스

public List<double> Sides // 변
{
get;
set;
}

public List<double> Angles // 내각 (radian)
{
get;
set;
}

public abstract void UpdateBounds();
public abstract void UpdateSides();
public abstract void UpdateAngles();

public void Draw(Graphics g) { // 도형 그리기

Brush b = new

SolidBrush(System.Drawing.Color.FromName(this.Color.ToString())));

System.Drawing.Point[] points = Array.ConvertAll(Vertices.ToArray(),

x => (System.Drawing.Point)x);

g.FillPolygon(b, points);

}

}

 

  1. FigureCalculator 클래스는 도형의 점들 입력 값으로부터 도형의 판별 및 도형의 면적과 둘레 계산을 담당한다.

+ public void GetUserInputFigure() // 사용자로부터 도형의 점을 입력 (3점과 4점만 입력 받도록 함) (optional)

+ public FigureType GetFigureType() // 무슨 도형인지 판별 (정삼각형, 이등변삼각형, 부등변삼각형 또는 정사각형, 직사각형, 평행사변형, 마름모, 사다리꼴 등)

+ public double Area(FigureType type, Figure figure) // 도형의 면적 계산

+ public double Perimeter(FigureType type, Figure figure) // 도형의 둘레 계산

 

  1. FigureManager 클래스는 File IO 입출력을 담당한다.

+ JSON을 이용한 파일 입출력 (JSON 형태로 저장한 도형의 리스트를 figureList에 import & 사용자가 추가로 입력한 도형의 정보를 포함하는 figureList를 파일로 export)

 

  1. FigureManager클래스 또는 Program 클래스의 Main 함수에서 본인이 더 테스트해보고 싶은 Method를 추가하라. 디렉토리에 여러 개의 데이터를 읽어서, 여러 가지 방법으로 정렬 및 LINQ 쿼리를 한 후 새로운 파일에 저장한다. 등등. 실행 화면과 코드를 첨부하시오.

+ List<Figure> figureList = new List<Figure>(); // 도형의 리스트

// LINQ를 이용하여 리스트에서 사다리꼴(Trapezoid)만 List로 추출

– public IList<Figure> GetTrapezoid () { // 내부구현 필요 – LINQ ToList() 사용 }

// LINQ를 이용하여 리스트에서 지정한 영역 값보다 작은 도형만 List로 추출

– public IList<Figure> GetFigureAreaLessThan(double area) { // 내부구현 필요 – LINQ ToList() 사용 }

 

Dictionary

using System.Collections.Generic;

static Dictionary<string, FigureType> figureNameDic = new Dictionary<string, FigureType>();

static void SetFigureNameDictionary()
{
figureNameDic.Add(“삼각형”, FigureType.Triangle);
figureNameDic.Add(“Triangle”, FigureType.Triangle);
figureNameDic.Add(“TRIANGLE”, FigureType.Triangle);
figureNameDic.Add(“정사각형”, FigureType.Square);
figureNameDic.Add(“Square”, FigureType.Square);
figureNameDic.Add(“SQUARE”, FigureType.Square);
// 중간 생략…
}

 

C# Array/ArrayList

Person[] pArray = new Person[5];

// 만약 Person 객체를 하나만 생성한 후 for문에서 공유해 사용할 경우
// 마지막으로 입력된 데이터로 모든 데이터값이 치환됨
Person p = new Person();
for (int i = 0; i < 5; i++) {
p.Name = Console.ReadLine();           // 입력정보
p.age = int.Parse(Console.ReadLine()); // 입력정보
pArray[i] = p;                                  // 리스트에 들어간 모든 원소는 동일한 p
}

 

Person[] pArray = new Person[5];

// 아래와 같이 for문 안에 Person p = new Person()와같이 새로운 객체를 생성해야
// 각자 다르게 입력된 정보가 들어가게 됨
for (int i = 0; i < 5; i++) {
Person p = new Person();
    p.Name = Console.ReadLine();           // 입력정보
p.age = int.Parse(Console.ReadLine()); // 입력정보
pArray[i] = p;                                  // 이때 p는 새로운 Person객체
}


http://dis.dankook.ac.kr/lectures/hci10/entry/C-ArrayList
 (ArrayList 사용예)

ArrayList

using System.Collections;

ArrayList figureCalcList = new ArrayList();
do
{
/// 중간 생략
FigureCalculator calc = FigureCalculatorFactory.GetInstance(inputFigure);
figureCalcList.Add(calc);
/// 중간 생략
} while (Console.ReadKey().Key != ConsoleKey.Escape);

foreach (var calc in figureCalcList)
{
/// 중간 생략 – 출력
}

HW1

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AreaCalculator
{
enum Figure { Triangle, Square, Rectangle, Parallelogram, Rhombus, Trapezoid, Circle }

class AreaCalculator
{
Figure? inputFigure = null;
double b = 1.0; // base/width
double h = 1.0; // height
double t = 1.0; // top
double r = 1.0; // radius/side
ConsoleColor[] colors = (ConsoleColor[])ConsoleColor.GetValues(typeof(ConsoleColor)); // ConsoleColor 배열

// CalculateArea 메소드는 실제 도형의 넓이 계산
double CalculateArea(Figure type) // if/elseif 또는 switch 구문
{
switch (type)
{
case Figure.Triangle:
return b * h * 0.5; // base * height * 0.5
case Figure.Square:
return r * r; // side * side
case Figure.Rectangle:
return b * h; // width * height
case Figure.Parallelogram:
return b * h; // base * height
case Figure.Rhombus:
return b * h * 0.5; // diagonal1 * diagonal2 * 0.5
case Figure.Trapezoid:
return (b + t ) * h * 0.5; // (base + top) * height * 0.5
case Figure.Circle:
return r * r * Math.PI; // PI * radius * radius
default:
return 0.0;
}
}

// GetAreaFormula 메소드는 출력시 사용
string GetAreaFormula(Figure type) // if/elseif 또는 switch 구문
{
switch (type)
{
case Figure.Triangle:
return b + ” x ” + h + ” x 0.5″;
case Figure.Square:
return r + ” x ” + r;
case Figure.Rectangle:
return b + ” x ” + h;
case Figure.Parallelogram:
return b + ” x ” + h ;
case Figure.Rhombus:
return b + ” x ” + h + ” x 0.5″;
case Figure.Trapezoid:
return “(” + b + ” + ” + t + “) x ” + h + ” x 0.5″;
case Figure.Circle:
return “3.14 x ” + r + ” ^2″;
default:
return “”;
}
}

// GetFigureFromName 메소드는 사용자 입력으로부터 Figure 반환
Figure? GetFigureFromName(string name) // if/elseif 또는 switch 구문
{
switch (name)
{
case “삼각형”:
case “Triangle”:
case “TRIANGLE”:
return Figure.Triangle;
case “정사각형”:
case “Square”:
case “SQUARE”:
return Figure.Square;
case “직사각형”:
case “Rectangle”:
case “RECTANGLE”:
return Figure.Rectangle;
case “평행사변형”:
case “Parallelogram”:
case “PARALLELOGRAM”:
return Figure.Parallelogram;
case “마름모꼴”:
case “Rhombus”:
case “RHOMBUS”:
return Figure.Rhombus;
case “사다리꼴”:
case “Trapezoid”:
case “TRAPEZOID”:
return Figure.Trapezoid;
case “원”:
case “Circle”:
case “CIRCLE”:
return Figure.Circle;
default:
return null;
}
}

// GetFigureColor 메소드는 각도형별 ConsoleColor 값
ConsoleColor GetFigureColor(Figure poly)
{
return colors[(int)poly+1]; // colors[0]은 검정색 바탕에서는 안보임
}

// GetValueFromInput 메소드는 각도형별 추가적인 입력 값
double GetValueFromInput(string input)
{
double value = 0.0;
Console.Write(“{0} 길이: “, input);  // input 인자 출력
while (!double.TryParse(Console.ReadLine(), out value))
{
Console.WriteLine(“잘못된 입력입니다. 다시 입력해주세요.”);
Console.Write(“{0} 길이: “, input);  // input 인자 출력
}
return value;
}

// 도형(Figure) 입력
Figure? GetInputFigure()
{
Figure? input = null;
do
{
Console.Write(“도형의 종류를 입력해주세요(삼각형/정사각형/직사각형 등등 또는 Triangle/Square/Rectangle): “);
input = GetFigureFromName(Console.ReadLine());
if (input == null)  Console.WriteLine(“잘못된 입력입니다.”);
} while (input == null);
return input;
}

// GetKeyboardInput 메소드는 사용자 입력
public void GetKeyboardInput()
{
// 도형 입력
inputFigure = GetInputFigure();

// 도형에 따른 추가입력
if (inputFigure == Figure.Triangle)
{
this.b = GetValueFromInput(“삼각형 밑변(Base)”);
this.h = GetValueFromInput(“삼각형 높이(Height)”);
}
else if (inputFigure == Figure.Square)
{
this.r = GetValueFromInput(“정사각형 한변(Side)”); // use r (side)
}
else if (inputFigure == Figure.Rectangle)
{
this.b = GetValueFromInput(“직사각형 가로(Width)”);
this.h = GetValueFromInput(“직사각형 세로(Height)”);
}
else if (inputFigure == Figure.Parallelogram)
{
this.b = GetValueFromInput(“평행사변형 밑변(Base)”);
this.h = GetValueFromInput(“평행사변형 높이(Height)”);
}
else if (inputFigure == Figure.Rhombus)
{
this.b = GetValueFromInput(“마름모꼴 대각선길이(Width)”);
this.h = GetValueFromInput(“마름모꼴 대각선높이(Height)”);
}
else if (inputFigure == Figure.Trapezoid)
{
this.t = GetValueFromInput(“사다리꼴 윗변(Top)”);
this.b = GetValueFromInput(“사다리꼴 아래변(Base)”);
this.h = GetValueFromInput(“사다리꼴 높이(Height)”);
}
else if (inputFigure == Figure.Circle)
{
this.r = GetValueFromInput(“원 반지름(Radius)”);
}
}

public void Print()
{
Figure poly = inputFigure ?? default(Figure);
string formula = GetAreaFormula(poly);
double area = CalculateArea(poly);
Console.ForegroundColor = GetFigureColor(poly);
Console.WriteLine(“{0} 도형의 넓이는 {1} = {2:F1} 입니다.”, poly, formula, area);
Console.ForegroundColor = ConsoleColor.White;
}

public void PrintAllFigureArea()
{
foreach (Figure poly in Figure.GetValues(typeof(Figure))) // 각 도형마다
{
Console.WriteLine();
Console.ForegroundColor = GetFigureColor(poly); // 각 도형의 색깔
Console.WriteLine(“\t {0}”, poly); // 각 도형의 이름 출력

// 표 가로 상단
Console.Write(“{0,6}”, ” “);
for (int k = 1; k <= 10; k++)
{
Console.Write(“{0,6}”, k);
}
Console.WriteLine();
// 표 본문
for (int i = 1; i <= 10; i++)
{
Console.Write(“{0,6}”, i); // 표 세로
this.b = this.r = i;
for (int j = 1; j <= 10; j++)  // 각 도형 별 Area 값
{
this.h = j;
if (poly == Figure.Triangle || poly == Figure.Rectangle || poly == Figure.Parallelogram || poly == Figure.Rhombus)
{
Console.Write(“{0,6:F1}”, CalculateArea(poly));
}
else if (poly == Figure.Square || poly == Figure.Circle)
{
if (i == j) Console.Write(“{0,6:F1}”, CalculateArea(poly));
else Console.Write(“{0,6}”, ” “);
}
else if (poly == Figure.Trapezoid)
{
this.t = j; // 사다리꼴의 경우에만 값을 하나 더 추가
Console.Write(“{0,6:F1}”, CalculateArea(poly));
}
}
Console.WriteLine();
}
Console.WriteLine();
}
}
}

class Program
{
static void Main(string[] args)
{
AreaCalculator a = new AreaCalculator();
a.PrintAllFigureArea();
do
{
a.GetKeyboardInput();
a.Print();
Console.WriteLine(“다시 하려면 ENTER 키를 누르시고 종료하려면 ESC 키를 누르세요”);
} while (Console.ReadKey().Key != ConsoleKey.Escape);

}
}
}

HW2

단국대학교 멀티미디어공학전공 HCI프로그래밍2 (2015년 가을학기) 실습

날짜: 2015년 10월 2일

 

– 실습번호 : lab-02 (Due by 10/16)

– 실습제목 : class, abstract class, inheritance, property, list, array, dictionary

– 실습요약 : 평면 도형의 넓이(area)와 둘레(perimeter) 구하기

– 준비자료 : http://www.allsubjects4you.com/Area-and-perimeter-of-plane-figures.htm

http://www.science.co.il/Formula.asp

http://www.mathsisfun.com/area-calculation-tool.html

http://www.calculatoredge.com/enggcalc/perimeter.htm

 

10/16까지 online.dankook.ac.kr 이러닝으로 source code, executable file, solution/project VC# file, 보고서(12-font 2~3 page)를 학번_이름_Ex2.zip으로 묶어서 이러닝에 제출한다.

보고서 (30%)  프린트는 10/16 수업 시간에 제출한다. 그리고 보고서와 함께 ‘직접 손으로 쓴 본인 프로그램 소스코드’를 제출한다.

 

 

– 실습문제

  1. public enum FigureType { Triangle, Square, Rectangle, Parallelogram, Rhombus, Trapezoid };

 

  1. Figure 추상클래스를 상속받은 Triangle, Square, Rectangle, Parallelogram, Rhombus, Trapezoid 클래스는 각 도형의 넓이(Area) 및 둘레(Perimeter)를 계산한다. Figure 추상클래스는 다음을 포함한다.

+ public abstract ConsoleColor Color { get; }

+ public abstract double Area { get; }

+ public abstract string AreaFormula { get; }

+ public abstract double Perimeter { get; }

+ public abstract string PerimeterFormula { get; }

 

  1. FigureCalculator 추상클래스를 상속받은 TriangleCalculator, SquareCalculator, RectangleCalculator, .. 등 클래스는 실제 Triangle, Square, 등을 이용하여 넓이 및 둘레를 출력한다. FigureCalculator 추상클래스는 다음을 포함한다.

+ public Figure GeometryFigure = null;

+ public string Title {

get { return GeometryFigure.GetType().ToString() + “ 넓이/둘레 구하기”; }

}

+ public abstract void PrintTable()는 해당 도형의 넓이/둘레 표를 출력

+ public abstract void GetUserInputAndCalculateArea()와 GetUserInputAndCalculatePerimeter()는 사용자 입력에 따른 도형의 넓이/둘레 출력

 

  1. FigureCalculatorFactory 클래스는 사용자가 입력한 도형에 따라 원하는 실제 FigureCalculator (즉, TriangleCalculator, SquareCalculator, 등등) 객체를 생성하여 계산한다. 이 클래스는 다음의 메소드 (Method)만을 갖는다.

+ public FigureCalculator GetInstance(FigureType inputFigure)

 

  1. Program 클래스에서는 사용자의 입력에 따라 FigureCalculatorFactory를 이용하여 도형의 넓이 및 둘레를 계산하고, 테스트한 모든 결과를 다시 출력한다.

+ FigureType? GetFigureTypeFromName(string name)은 Dictionary를 이용하여 사용자가 입력한 도형 이름으로부터 FigureType을 반환

+ 사용자가 테스트한 도형의 넓이 및 둘레 계산을 Array나 ArrayList에 저장해 두었다가 do-while를 벗어나서 프로그램을 종료할 시 전체 리스트를 출력

 

  1. 사용자의 잘못된 입력에 따른 처리를 반드시 포함해야 하며, 그 외에 본인이 더 테스트해보고 싶은 method나 routine을 추가하라. 실행 화면과 코드를 첨부하시오.

HW1

단국대학교 멀티미디어공학전공 HCI프로그래밍2 (2015년 가을학기) 실습

과목코드 : 300890

날짜: 2015년 9월 15 일

강사 : 박경신

9/29까지 online.dankook.ac.kr 이러닝으로 source code, executable file, solution/project VC# file, 보고서(12-font 2~3 page)를 학번_이름_Ex1.zip으로 묶어서 이러닝에 제출한다.

보고서 (30%)  프린트는 10/2 수업 시간에 제출한다. 그리고 보고서와 함께 ‘직접 손으로 쓴 본인 프로그램 소스코드’를 제출한다.

 

– 실습번호 : lab-01 (Due by 9/29)

– 실습제목 : nullable, enum, if/switch, do/while, for/foreach, ReadLine()/WriteLine()

– 실습요약 : 평면 도형의 넓이 구하기 (AreaCalculator)

– 준비자료 : http://www.mathsisfun.com/area.html

http://www.onlinemathlearning.com/areas-of-polygons.html

http://tip.daum.net/question/65401509

– 실습문제

  1. AreaCalculator 클래스를 작성한다.

 

  1. enum Figure {Triangle, Square, Rectangle, Parallelogram, Rhombus, Trapezoid};

Figure? GetFigureFromName(string str)은 사용자 입력(예: 삼각형)에서 도형(Figure.Triangle)을 판별한다.

 

2. void Print()는 각 도형마다 여러 가지 색(color)을 추가하여 도형의 넓이 값을 콘솔창에 출력한다.

+도형에 입력된 값에 따른 넓이 공식과 값을  출력

+double CalculateArea(Figure type)는 도형의 넓이를 계산함.

+foreach 와 for(int i=1; i<=10; i++)를 사용하여 크기에 따른 각 도형의 넓이를 표로 출력함.

+Console.ForegroundColor = ConsoleColor.Red 는 Red 폰트 색으로 지정하는 것임.

 

3. void GetKeyboardInput()는 콘솔창에서 키보드로 입력 받아서 처리한다.

+ 예시: 먼저 도형을 선택하고 나면 (e.g. 삼각형/Triangle), 각 도형에 따른 추가적인 입력을 받음. (e.g., 삼각형의 밑변/base와 높이/height)

+ while 문을 사용하여 잘못 입력된 도형일 경우, 다시 사용자 입력을 받음. 마찬가지로 while 문을 사용하여 잘못 입력된 값이면 다시 입력을 받음.

+ Console.ReadLine()는 string을 반환하므로, double로 변환하기 위하여 TryParse 사용함 => boolValue = double.TryParse(string, out doubleValue)

4. 본인의 원하는 메소드나 루틴을 더 추가한다. 예를 들어 다른 도형의 넓이(또는 부피) 계산 등. 위의 코드로 하나의 완성된 프로그램을 작성하고, 실행 화면과 코드를 첨부하시오.