프로그램을 공부하셨던 분들이라면 이런 프로그램은 눈 감고도 짜시겠지요~
네 프로그래밍을 처음 배울때 한 번쯤 짜보았을 학점 관리입니다. 기본적으로 점수와 학점만 출력하는 프로그램이지요
저같은 이런 프로그램으로도 도움이 된다는것...그러니 쉽지만 한번 살짝 구현을 해보도록 하지요
우선 사용자가 과목 점수를 3과목을 입력한다 가정하겠습니다 점수는 0~100점 사이겠지요 출력값은 합계와 평균 점수 그리고 학점을 출력 할것입니다. 그리고 일반적인 A,B,C,D,F 의 학점 시스템을 가질꺼고요~
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace Grade
7 {
8 class Program
9 {
10 static void Main(string[] args)
11 {
12 int score1, score2, score3, total;
13 double average;
14 char grade;
15
16 Console.Write("첫번째 점수 : ");
17 score1 = int.Parse(Console.ReadLine());
18 Console.Write("두번째 점수 : ");
19 score2 = int.Parse(Console.ReadLine());
20 Console.Write("세번째 점수 : ");
21 score3 = int.Parse(Console.ReadLine());
22
23 total = score1 + score2 + score3;
24 average = (double)total / 3;
25 switch ((int)average / 10)
26 {
27 case 10:
28 case 9:
29 grade = 'A';
30 break;
31 case 8:
32 grade = 'B';
33 break;
34 case 7:
35 grade = 'C';
36 break;
37 case 6:
38 grade = 'D';
39 break;
40 default:
41 grade = 'F';
42 break;
43 }
44 Console.WriteLine("TOTAL : {0}\tAVERAGE : {1}\tGRADE : {2}", total, average, grade);
45 }
46 }
47 }
이렇게만 해주시면 아주 간단한 학점 프로그램이 만들어집니다. 물론 허접합니다만...그래도 좀만 살만 붙이면 간단히 볼수는 있겠지요 ㅎㅎ 실행 해 보시면요 다음과 같은 결과가 나올 겁니다.
하지만 여기서 살짝 살을 붙여 보겠습니다~^^
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace Grade
7 {
8 class Program
9 {
10 static void Main(string[] args)
11 {
12 int score1, score2, score3, total;
13 double average;
14 char grade;
15 string yn = "y";
16
17 while (true)
18 {
19 Console.Write("첫번째 점수 : ");
20 score1 = int.Parse(Console.ReadLine());
21 if (score1 < 0 || score1 > 100)
22 continue; //반복문을 리셋- 반복문의 처음 위치로 이동
23 ReInput:
24 Console.Write("두번째 점수 : ");
25 score2 = int.Parse(Console.ReadLine());
26 if (score2 < 0 || score2 > 100)
27 goto ReInput;
28 do
29 {
30 Console.Write("세번째 점수 : ");
31 score3 = int.Parse(Console.ReadLine());
32 } while (score3 < 0 || score3 > 100);
33
34 total = score1 + score2 + score3;
35 average = (double)total / 3;
36 switch ((int)average / 10)
37 {
38 case 10:
39 case 9:
40 grade = 'A';
41 break;
42 case 8:
43 grade = 'B';
44 break;
45 case 7:
46 grade = 'C';
47 break;
48 case 6:
49 grade = 'D';
50 break;
51 default:
52 grade = 'F';
53 break;
54 }
55 Console.WriteLine("TOTAL : {0}\tAVERAGE : {1}\tGRADE : {2}", total, average, grade);
56 Console.Write("더 하시겠습니까? (y / n) ? ");
57 yn = Console.ReadLine();
58 if (!yn.Equals("y", StringComparison.OrdinalIgnoreCase))
59 break;
60 }
61 }
62 }
63 }
위와 같이 바꿔주게 되면 점수 0~100사이만을 입력할 수 있어 잘못된 입력을 막을 수 있습니다.
위에서는 continue와 goto문 do while문을 써서 반복하게 하였습니다. 여기서 goto문은 프로그램의 순서를 흐리게 만들 수 있어서 요즘에는 쓰지 않는 추세이므로 진짜 꼭 필요한 부분이 아니라면 쓰지 않는 것이 좋을 것입니다.
코드 몇줄 추가 해주고 반복문을 써준것 뿐인데 여러 기능이 추가되고 더 깔끔한 처리가 되는걸 보실 수 있을 겁니다.아직 문제가 만지만 남어지는 여러분의 해결능력을 믿으며 여기서 마추도록 하겠습니다~
감사합니다~~
'.NET > C#' 카테고리의 다른 글
Class(2) (0) | 2009.12.16 |
---|---|
Class(1) (0) | 2009.12.16 |
C# enum, struct (0) | 2009.12.16 |
C# Array 에 대해서... (2) | 2009.12.16 |
C# 메소드 (0) | 2009.12.15 |
C# 반복문 (0) | 2009.12.15 |
C# 기초 계산기 (0) | 2009.12.15 |
C# 타입 (0) | 2009.12.15 |
C# value타입 vs Reference타입 (2) | 2009.12.15 |
시샵 기초중에 기초 Hello world 시작하기 (0) | 2009.12.15 |