C#/TIL

2024.11.26 과제, 반복, 구구단

서지현 2024. 11. 26. 17:53

 

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

namespace project_1126
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //---------------------------------------------- 과제1
            Console.WriteLine("몇회 반복하시겠습니까?");
            int count = int.Parse(Console.ReadLine());

            for (int i = 1; i <= count; i++)
            {

                Console.WriteLine($"{i}회 반복 중입니다.");

            }
            //----------------------------------------------과제2
            Console.WriteLine("두 수 사이의 합을 구합니다. 시작할 작은 수를 입력해주세요");
            int firNum = int.Parse(Console.ReadLine());
            Console.WriteLine("끝 수를 입력해주세요");
            int twoNum = int.Parse(Console.ReadLine());

            int sum = 0; // 반복 결과 값을 저장할 변수

            // 두 수를 입력받는다
            // 첫번째 수가 두번째 수가 작은 동안 첫번째 수+1을 반복한다.
            // 반복 결과 값들을 임의의 변수에 저장한다.
            // 만약 첫번째 수가 두번째 수보다 커졌다면 반복을 끝낸다.
            // 첫번째 수, 두번째 수, 반복 결과 값들을 합한 값을 출력 한다.

            // i에 firnum을 할당한 뒤, i가 twonum과 같거나 보다 작을때까지 i에 1씩 더한다.
            for (int i = firNum; i <= twoNum; i++)
            {
                //0이었던 sum에 firNum을 더한다. sum = sum+i 이것을 반복한다.
                sum += i;

            }
            Console.WriteLine(sum); // 얜 반복문 밖에 있어야 하는데, 안 그러면 반복하는 동안 값들이 계속 출력된다.

            //---------------------------------------------- 과제3 구구단 기능 제작

            // 1~9까지의 정수를 입력하라고 뜬다.
            // 만약 1~9까지의 정수가 아니라면 => 제대로된 입력을 하라고 무한 반복하는 예외처리
            // 1~9까지의 정수라면 => 구구단이 나온다.
            // "구구단 (n)단" 라인이 출력된다.
            // 만약 입력 받은 값이 3이라면 , 구구단 표의 규칙은 3 x 1 = 3 ... 3 x 2 = 6
            // 첫번째 값에는 '입력받은 정수' 두번째 값에는 '반복 값' 세번째 값에는 '나머지가 없는 정수'

            //선언과 동시에 초기화▼
            int num = 0;
            int result = 0;
            bool isint = false;
            bool isBig = num > 10;
            Console.WriteLine("1~9까지의 정수를 입력하세요.");
            isint = int.TryParse(Console.ReadLine(), out num); // 만약 입력받은 값이 정수라면 true, 아니라면 false


            if (isint == true && isBig==false) // 만약 isint가 true라면
            {
                if (num < 10) // num이 10보다 작다.
                {
                    Console.WriteLine($"{num}단 ");
                    for (int i = 1; i < 10; i++) // 9단이 될때까지 반복함.

                        for (int j = num; num % j == 0; j++) // 입력받은 정수 값에 나머지가 없는 정수를 계속 더함
                        {
                            result += j;
                            Console.WriteLine($"{num} x {i} = {result}");
                        }
                }
            }
        }
    }
}

 

  • 구구단을 하다가 예외 처리가 너무 끔찍해서 시간 안에 다 하질 못했다.
  • else if를 하면 될것같은데 답을 입력하면 로직이 끝난다던지, 아예 반복 로직까지 못들어가는 문제가 있었다.

+ 11.26 9시 49분에 수정

 

    internal class Program
    {
        static void Main(string[] args)
        {
            {
                //선언과 동시에 초기화▼
                int num = 0;
                int result = 0;
                bool isint = false;

                while (true)
                {

                    Console.WriteLine("1~9까지의 정수를 입력하세요.");
                    isint = int.TryParse(Console.ReadLine(), out num); // 만약 입력받은 값이 정수라면 true, 아니라면 false


                    if (isint == true) // 만약 isint가 true라면
                    {
                        if (num < 10 && num > 1) // num이 10보다 작고,1보다 클 때
                        {
                            Console.WriteLine($"{num}단 ");
                            for (int i = 1; i < 10; i++) // 9단이 될때까지 반복함.

                                for (int j = num; num % j == 0; j++) // 입력받은 정수 값에 나머지가 없는 정수를 계속 더함
                                {
                                    result += j;
                                    Console.WriteLine($"{num} x {i} = {result}");
                                    break;
                                }


                        }
                        else
                        {
                            Console.WriteLine("올바른 값을 입력해주세요.");
                        }
                    }
                    else if (isint==false)
                    {

                        Console.WriteLine("정수값이 아닙니다. 정수값을 입력해주세요");
                        
                    }
                    
                }
            }
        }
    }
}

 

아예 while 안에 넣어서 영원히 반복되도록 했다. 이제 구구단을 영원히 출력한다...