언어 자료구조 알고리즘/프로그래밍 실습

[C# 실습 설명] 제어문 - 메뉴 출력 및 선택 반복하기

언제나휴일 2018. 8. 31. 10:36
반응형

[C# 실습 설명] 제어문 - 메뉴 출력 및 선택 반복하기




의사코드(pseudo code)로 알고리즘 전개하기 - 주석으로 표현

        //6. 사용자로부터 메뉴를 입력받아 기능을 수행하는 것을 반복하시오.

        //I를 입력하면 추가, D를 입력하면 삭제, S를 입력하면 검색,

        //L을 입력하면 전체 출력

        //E를 입력하면 반복 수행을 마감

        private static void ExF()

        {

            //flag:=true

            //반복(flag가 참일 동안)

            {

                //메뉴 출력

                //key:=메뉴 입력

                //선택(key에 따라)

                {

                    //I일 때 "추가" 출력

                    //D일 때 "삭제" 출력

                    //S일 때 "검색" 출력

                    //L일 때 "전체 출력" 출력

                    //E일 때 flag:= false

                    //기타일 때 "잘못 선택" 출력

                }

            }

        }


소스 코드

        //6. 사용자로부터 메뉴를 입력받아 기능을 수행하는 것을 반복하시오.

        //I를 입력하면 추가, D를 입력하면 삭제, S를 입력하면 검색,

        //L을 입력하면 전체 출력

        //E를 입력하면 반복 수행을 마감

        private static void ExF()

        {

            bool flag = true;//flag:=true

            while(true)//반복(flag가 참일 동안)

            {

                //메뉴 출력

                Console.WriteLine("I:추가 D:삭제 S:검색 L:전체 출력 E:종료");

                string key = Console.ReadLine();//key:=메뉴 입력

                switch(key)//선택(key에 따라)

                {

                    case "I": Console.WriteLine("추가"); break;//I일 때 "추가" 출력

                    case "D": Console.WriteLine("삭제"); break;//D일 때 "삭제" 출력

                    case "S": Console.WriteLine("검색"); break;//S일 때 "검색" 출력

                    case "L": Console.WriteLine("전체 출력"); break;//L일 때 "전체 출력" 출력

                    case "E": flag = false; break;//E일 때 flag:= false

                    default: Console.WriteLine("잘못 선택"); break;//기타일 때 "잘못 선택" 출력

                }

            }

        }


현재까지 작성한 전체 소스 코드

using System;

 

namespace 제어문_실습

{

    class Program

    {

        static void Main(string[] args)

        {

            //1. 두 개의 정수를 입력받아 큰 수를 출력하시오.

            //ExA();

            //2. 한 개의 정수를 입력받아 짝수인지 홀수인지 출력하시오.

            //ExB();

            //3. 점수(0~100)를 입력받아 학점을 출력하시오.           

            //0~59:F, 60~69:D, 70~79:C, 80~89:B, 90~100:A, 기타:Not Support

            //ExC();

            //4. 두 개의 정수를 입력받아 두 수의 범위에 있는 정수의 합을 출력하시오.

            //ExD();

            //5. 두 개의 정수를 입력받아 공약수를 출력하시오.

            //ExE();

            //6. 사용자로부터 메뉴를 입력받아 기능을 수행하는 것을 반복하시오.

            //I를 입력하면 추가, D를 입력하면 삭제, S를 입력하면 검색,

            //L을 입력하면 전체 출력

            //E를 입력하면 반복 수행을 마감

            ExF();

        }

 

        //6. 사용자로부터 메뉴를 입력받아 기능을 수행하는 것을 반복하시오.

        //I를 입력하면 추가, D를 입력하면 삭제, S를 입력하면 검색,

        //L을 입력하면 전체 출력

        //E를 입력하면 반복 수행을 마감

        private static void ExF()

        {

            bool flag = true;//flag:=true

            while(true)//반복(flag가 참일 동안)

            {

                //메뉴 출력

                Console.WriteLine("I:추가 D:삭제 S:검색 L:전체 출력 E:종료");

                string key = Console.ReadLine();//key:=메뉴 입력

                switch(key)//선택(key에 따라)

                {

                    case "I": Console.WriteLine("추가"); break;//I일 때 "추가" 출력

                    case "D": Console.WriteLine("삭제"); break;//D일 때 "삭제" 출력

                    case "S": Console.WriteLine("검색"); break;//S일 때 "검색" 출력

                    case "L": Console.WriteLine("전체 출력"); break;//L일 때 "전체 출력" 출력

                    case "E": flag = false; break;//E일 때 flag:= false

                    default: Console.WriteLine("잘못 선택"); break;//기타일 때 "잘못 선택" 출력

                }

            }

        }

 

        //5. 두 개의 정수를 입력받아 공약수를 출력하시오.

        private static void ExE()

        {

            //fnum:= 정수 입력

            Console.WriteLine("첫 번째 정수를 입력하세요.");

            int fnum = GetNum();

            //snum:= 정수 입력

            Console.WriteLine("두 번째 정수를 입력하세요.");

            int snum = GetNum();

 

            if (fnum > snum)//조건(fnum>snum) - (fnum snum을 바꿔야 함)

            {

                int temp = snum; //temp := snum

                snum = fnum;//snum := fnum

                fnum = temp;//fnum := temp

            }

 

            for(int n=1; n<=fnum;n++)//반복(n:= 1->fnum)

            {

                if(((fnum%n)==0)&& ((snum % n) == 0))//조건(n fnum snum의 약수이면)

                //*fnum n으로 나누어서 나머지가 0이면 약수임.

                {

                    Console.WriteLine(n);//n출력

                }

            }

        }

 

        //4. 두 개의 정수를 입력받아 두 수의 범위에 있는 정수의 합을 출력하시오.

        private static void ExD()

        {

            //fnum:= 정수 입력

            Console.WriteLine("첫 번째 정수를 입력하세요.");

            int fnum = GetNum();

            //snum:= 정수 입력

            Console.WriteLine("두 번째 정수를 입력하세요.");

            int snum = GetNum();

 

            if(fnum > snum)//조건(fnum>snum) - (fnum snum을 바꿔야 함)

            {

                int temp = snum; //temp := snum

                snum = fnum;//snum := fnum

                fnum = temp;//fnum := temp

            }

            int sum = 0;//sum:=0

            //반복(snum -> fnum)

            for(;snum<fnum;snum++)

            {

                sum += snum;//sum:= snum + snum

            }

            Console.WriteLine("{0}~{1} 구간의 정수 합계:{2}", fnum, snum, sum);//sum 출력

        }

 

        //3. 점수(0~100)를 입력받아 학점을 출력하시오.

        private static void ExC()

        {

            //score:= 성적 입력

            Console.WriteLine("성적을 입력하세요.");

            int score = GetNum();

 

            int level = 0;

            if((score<0)||(score>100))//조건(score 0보다 작거나 100보다 크면)

            {

                level = -1;//level:=-1

            }

            else//아니라면

            {

                level = score / 10;//level:=score/10

                if(level<=5)//조건(level 5보다 작거나 같으면)

                {

                    level = 0;//level=0

                }

            }

           

            switch(level)//선택(level값에 따라)

            {

                case 10:

                case 9: Console.WriteLine("A"); break;//10혹은 9일 때: A출력

                case 8: Console.WriteLine("B"); break;//8일 때: B출력

                case 7: Console.WriteLine("C"); break;//7일 때: C출력

                case 6: Console.WriteLine("D"); break;//6일 때: D출력

                case 0: Console.WriteLine("F"); break;//0일 때: F출력

                default: Console.WriteLine("Not Support"); break;//기타: Not Support 출력

            }

        }

 

        //2. 한 개의 정수를 입력받아 짝수인지 홀수인지 출력하시오.

        private static void ExB()

        {

            //num := 정수를 입력

            Console.WriteLine("정수를 입력하세요.");

            int num = GetNum();

           

            if(num%2 == 0)//조건(num 2로 나누었을 때 나머지가 0이면)

            {

                Console.WriteLine("짝수입니다.");//"짝수" 출력

            }

            //아니면

            {

                Console.WriteLine("홀수입니다.");//"홀수" 출력

            }

        }

 

        //1. 두 개의 정수를 입력받아 큰 수를 출력하시오.

        private static void ExA()

        {

            //num1 := 첫 번째 정수를 입력

            Console.WriteLine("첫 번째 수를 입력하세요.");

            int num1 = GetNum();

            //num2 := 두 번째 정수를 입력

            Console.WriteLine("두 번째 수를 입력하세요.");

            int num2 = GetNum();

 

            int big = 0;

            if(num1<num2)//조건(num1<num2)

            {

                big = num2;//big := num2

            }

            else //아니면

            {

                big = num1;//big := num1

            }

            Console.WriteLine("{0} {1}중에 큰 수는 {2}", num1, num2, big);//big 출력

        }

 

        private static int GetNum()

        {

            int i = 0;

            string value = Console.ReadLine();

            i = int.Parse(value);

            return i;

        }

    }

}

 


반응형