다음 코드를 참고하세요.
using System;
namespace 콘솔_키_입력
{
class Program
{
static void Main(string[] args)
{
ConsoleKey key = ConsoleKey.NoName;
while(true)
{
key = Console.ReadKey(true).Key;
switch(key)
{
case ConsoleKey.F1: Console.WriteLine("F1"); break;
}
if(key == ConsoleKey.Escape)
{
break;
}
}
}
}
}
1. 사용자가 선택한 키에 따라 공정을 선택 (15분)
F1: 웨이퍼 F2:산화 F3:포토 F4:식각
F5:패키징 F6: EDS F7: 금속배선 F8:박막
ESCAPE을 누르기 전까지 반복하시오.
/* 먼저 작성한 후에 비교해 보세요. */
//1.사용자가 선택한 키에 따라 공정을 선택
//F1: 웨이퍼 F2:산화 F3:포토 F4:식각
//F5:패키징 F6: EDS F7: 금속배선 F8:박막
//ESCAPE을 누르기 전까지 반복하시오.
using System;
namespace _01.메뉴_선택
{
class Program
{
static void Main(string[] args)
{
ConsoleKey key = ConsoleKey.NoName;
while((key = SelectMenu())!= ConsoleKey.Escape)//반복: 메뉴 선택한 키가 ESC가 아니라면
{
//선택한 키에 따라 작업 수행
switch(key)
{
case ConsoleKey.F1: Console.WriteLine("웨이퍼"); break;
case ConsoleKey.F2: Console.WriteLine("산화"); break;
case ConsoleKey.F3: Console.WriteLine("포토"); break;
case ConsoleKey.F4: Console.WriteLine("식각"); break;
case ConsoleKey.F5: Console.WriteLine("페키징"); break;
case ConsoleKey.F6: Console.WriteLine("EDS"); break;
case ConsoleKey.F7: Console.WriteLine("금속배선"); break;
case ConsoleKey.F8: Console.WriteLine("박막"); break;
default: Console.WriteLine("잘못 선택하셨군요."); break;
}
Console.WriteLine("아무 키나 누르세요.");
Console.ReadKey(true);
}
}
private static ConsoleKey SelectMenu()
{
Console.Clear();
Console.WriteLine("F1: 웨이퍼 F2:산화 F3:포토 F4:식각");
Console.WriteLine("F5:패키징 F6: EDS F7: 금속배선 F8:박막");
return Console.ReadKey(true).Key;
}
}
}
2.a 10개의 정수를 입력받아 출력하시오.(10분)
/* 먼저 작성한 후에 비교해 보세요. */
using System;
namespace _2.a_10개의_정수를_입력받아_출력하시오
{
class Program
{
static void Main(string[] args)
{
int[] arr = new int[10];
for(int i = 0; i<10;i++)
{
Console.Write("{0}번째 정수:",i+1);
int.TryParse(Console.ReadLine(), out arr[i]);
}
foreach(int elem in arr)
{
Console.Write("{0} ", elem);
}
Console.WriteLine();
}
}
}
2.b 10개의 정수를 입력받아 2, 3, 5의 배수가 각각 몇 개인지 출력하시오.(15분)
/* 먼저 작성한 후에 비교해 보세요. */
using System;
namespace _2.b_10개의_정수를_입력받아_2__3__5의_배수가_각각_몇_개인지_출력하시오
{
class Program
{
static void Main(string[] args)
{
int[] arr = new int[10];
for (int i = 0; i < 10; i++)
{
Console.Write("{0}번째 정수:", i + 1);
int.TryParse(Console.ReadLine(), out arr[i]);
}
int n2 = 0, n3 = 0, n5 = 0;
foreach(int elem in arr)
{
if(elem%2==0)
{
n2++;
}
if (elem % 3 == 0)
{
n3++;
}
if (elem % 5 == 0)
{
n5++;
}
}
Console.WriteLine("2의 배수:{0}개 3의 배수:{1}개 5의 배수:{2}", n2, n3, n5);
}
}
}
2.c 10개의 웨이퍼 제품을 입력받으시오.
하나의 웨이퍼마다 직경과 제품명을 입력받는다.
입력받은 전체 제품을 출력한다.(15분)
/* 먼저 작성한 후에 비교해 보세요. */
using System;
/* 2.c 10개의 웨이퍼 제품을 입력받으시오.
하나의 웨이퍼마다 직경과 제품명을 입력받는다.
입력받은 전체 제품을 출력한다.(15분, ~15:15)*/
namespace _2.c_10개의_웨이퍼_제품을_입력받으시오
{
class Wafer
{
public double Radius
{
get;
}
public string Name
{
get;
}
public Wafer(double radius,string name)
{
Radius = radius;
Name = name;
}
public override string ToString()
{
return Name;
}
}
class Program
{
static void Main(string[] args)
{
Wafer[] arr = new Wafer[10];
for (int i = 0; i < 10; i++)
{
arr[i] = MakeWafer(i + 1);
}
foreach(Wafer wafer in arr)
{
Console.WriteLine("{0}:{1}", wafer.Name, wafer.Radius);
}
}
private static Wafer MakeWafer(int n)
{
Console.Write("{0}번째 Wafer", n);
double radius = 0;
Console.Write("직경:");
double.TryParse(Console.ReadLine(), out radius);
string name;
Console.Write("제품명:");
name = Console.ReadLine();
return new Wafer(radius, name);
}
}
}
3. 새롭게 설계한 웨이퍼의 실제 수율을 계산하는 테스트 공정이다. 다음과 같이 동작하게 구현하시오.
- 단위 테스트 횟수를 입력받아 입력 횟수만큼 반복 수행한다.
단위 테스트에서는 제조 라인(A~F), 테스트 일련 번호, 설계 최대 칩 수와
실제 생산한 정상 칩 수를 입력받아 실제 수율을 계산하여 결과를 출력한다.
테스트 일련 번호는 순차적으로 부여한다.
제조라인, 설계 최대 칩 수, 실제 생산한 정상 칩 수는 입력받는다.
실제 수율 = 실제 생산한 정상 칩 수/설계 최대 칩 수
- 모든 테스트를 완료하면 테스트 결과를 출력한다.
/* 먼저 작성한 후에 비교해 보세요. */
using System;
/*
3. 새롭게 설계한 웨이퍼의 실제 수율을 계산하는 테스트 공정이다.
다음과 같이 동작하게 구현하시오.
- 단위 테스트 횟수를 입력받아 입력 횟수만큼 반복 수행한다.
단위 테스트에서는 제조 라인(A~F), 테스트 일련 번호, 설계 최대 칩 수와
실제 생산한 정상 칩 수를 입력받아 실제 수율을 계산하여 결과를 출력한다.
테스트 일련 번호는 순차적으로 부여한다.
제조라인, 설계 최대 칩 수, 실제 생산한 정상 칩 수는 입력받는다.
실제 수율 = 실제 생산한 정상 칩 수/설계 최대 칩 수 */
namespace _3.새롭게_설계한_웨이퍼의_실제_수율을_계산하는_테스트_공정이다
{
class Program
{
static void Main(string[] args)
{
int tcnt = 0;
Console.Write("테스트 횟수:");
int.TryParse(Console.ReadLine(), out tcnt);
for(int t=0;t<tcnt;t++ )
{
TestCase(t + 1);
}
}
enum PRO_LINE { PN,PA, PB, PC, PD, PE, PF}
private static void TestCase(int t)
{
PRO_LINE pl = InputProLine();
if(pl== PRO_LINE.PN)
{
Console.WriteLine("잘못 입력하였습니다.");
return;
}
Console.Write("테스트 일련 번호:");
string pno = Console.ReadLine();
Console.Write("설계 최대 칩 수:");
int max_chip = 0;
int.TryParse(Console.ReadLine(), out max_chip);
Console.Write("정상 칩 수:");
int good_chip = 0;
int.TryParse(Console.ReadLine(), out good_chip);
Console.WriteLine("실제 수율:{0}", good_chip / (double)max_chip);
}
private static PRO_LINE InputProLine()
{
Console.WriteLine("생산 라인(A~F)");
switch(Console.ReadLine())
{
case "A":return PRO_LINE.PA;
case "B": return PRO_LINE.PB;
case "C": return PRO_LINE.PC;
case "D": return PRO_LINE.PD;
case "E": return PRO_LINE.PE;
case "F": return PRO_LINE.PF;
}
return PRO_LINE.PN;
}
}
}
4. 실제 수율을 제조 라인 별로 출력하시오.
라인: 평균 실제 수율
using System;
//4.실제 수율을 제조 라인 별로 출력하시오.
// 라인: 평균 실제 수율
namespace _4.실제_수율을_제조_라인_별로_출력하시오
{
class Score
{
public int MaxChip { get; set; }
public int GoodChip { get; set; }
public Score(int mc, int gc)
{
MaxChip = mc;
GoodChip = gc;
}
public double Value
{
get
{
return GoodChip / (double)MaxChip;
}
}
}
class Program
{
static Score[] scores = new Score[(int)PRO_LINE.PN];
static void Main(string[] args)
{
int tcnt = 0;
Console.Write("테스트 횟수:");
int.TryParse(Console.ReadLine(), out tcnt);
for (int t = 0; t < tcnt; t++)
{
TestCase(t + 1);
}
for(int i = 0; i<scores.Length;i++)
{
Console.Write("{0}:{1}", (PRO_LINE)i, scores[i].Value);
}
}
enum PRO_LINE { A, B, C, D, E, F,PN }
private static void TestCase(int t)
{
PRO_LINE pl = InputProLine();
if (pl == PRO_LINE.PN)
{
Console.WriteLine("잘못 입력하였습니다.");
return;
}
Score score = scores[(int)pl];
Console.Write("테스트 일련 번호:");
string pno = Console.ReadLine();
Console.Write("설계 최대 칩 수:");
int max_chip = 0;
int.TryParse(Console.ReadLine(), out max_chip);
score.MaxChip += max_chip;
Console.Write("정상 칩 수:");
int good_chip = 0;
int.TryParse(Console.ReadLine(), out good_chip);
score.GoodChip += good_chip;
Console.WriteLine("실제 수율:{0}", good_chip / (double)max_chip);
}
private static PRO_LINE InputProLine()
{
Console.WriteLine("생산 라인(A~F)");
switch (Console.ReadLine())
{
case "A": return PRO_LINE.A;
case "B": return PRO_LINE.B;
case "C": return PRO_LINE.C;
case "D": return PRO_LINE.D;
case "E": return PRO_LINE.E;
case "F": return PRO_LINE.F;
}
return PRO_LINE.PN;
}
}
}
'언어 자료구조 알고리즘 > 프로그래밍 실습' 카테고리의 다른 글
[C#, Windows Forms, 소켓 통신] 부재 입출고 자동 관리 창고 시스템 시뮬레이션 - Smart Factory 실습 (0) | 2020.11.27 |
---|---|
[C#, Widows Form 실습] Wafer 등록기 - 반도체 제어시스템 시뮬 (0) | 2020.11.24 |
[python] EH 쇼핑몰 - 고객 관리, 상품 관리 - MSSQL, QT (0) | 2020.11.06 |
[python] 고객 관리 - QT, MSSQL (0) | 2020.11.06 |
[python] 상품 조회 응용 - MSSQL, QT 사용 (0) | 2020.11.05 |
[python] QT, MSSQL 활용 - 상품 등록하기 (0) | 2020.11.05 |
[python] 쇼핑몰 구현 - MSSQL이용한 콘솔 응용 (0) | 2020.11.04 |
[python] OOP 실습 - 커뮤니트 시뮬레이션 만들기 (0) | 2020.10.30 |
[python] 상속 실습 - 커뮤니티(게시글, 비밀게시글) (0) | 2020.10.30 |
[python] 상속 실습 - 상품과 할인 상품 (0) | 2020.10.30 |