1. 숫자를 두번 입력받아서 두번 다 숫자인지 확인
- 프로그램을 처음 시작하면 “첫번째 수를 입력해 주세요.” 메시지 출력
- 메시지를 입력하고 Enter
- “두번째 수를 입력해 주세요.” 메시지 출력
- 메시지를 입력하고 Enter
- 첫번째 수와 두번째 수 모두 숫자 라면 - “두 데이터는 모두 숫자입니다.”
- 모두 숫자가 아니라면 - “숫자가 아닙니다.”
이전 프로그래밍 시작하기에서 사용한 TryParse와 if문을 사용하는것은 같으나, 2개의 입력이 모두 숫자일경우 라는 조건이 추가되었습니다.
즉, if문에서 And 연산을 해야합니다.
C# 에서 사용하는 논리 연산자는 3가지로 AND, OR, NOT 연산을 당담하는 연산자가 하나씩 있습니다.
AND | && |
OR | || |
NOT | ! |
(OR 값의 경우 \키를 시프트를 누르고 입력하면 됩니다.)
해당 연산자들은 bool 형식에만 사용할 수 있으며 각각 이러한 역할을 합니다
AND 연산시 (A&&B) | ||
A | B | A&&B |
true | true | true |
true | false | false |
false | true | false |
false | false | false |
OR 연산시 (A||B) | ||
A | B | A&&B |
true | true | true |
true | false | true |
false | true | true |
false | false | false |
NOT 연산시 (!A) | |
A | !A |
true | false |
false | true |
AND 연산은 양쪽 모두 true일때 만 true 값을 반환하고
OR 연산은 둘중 하나라도 true값일 있으면 true를 반환합니다.
NOT 연산의 경우 bool변수 앞에 붙으며, 해당값을 반전하는 역할을 합니다.
문제를 풀어보도록 하겠습니다.
{
//첫번째 입력받고, 정수형 변환시도
Console.Write("첫번째 수를 입력해 주세요 : ");
string inputFirst = Console.ReadLine();
int num1;
bool isInt1 = int.TryParse(inputFirst, out num1);
//두번째 입력 받고, 정수형 변환 시도
Console.Write("두번째 수를 입력해 주세요 : ");
string inputSecond = Console.ReadLine();
int num2;
bool isInt2 = int.TryParse(inputSecond, out num2);
//두수가 정수형인지 판단
//둘 다 정수형일경우
if(isInt1 && isInt2)
{
Console.WriteLine("두 데이터 모두 숫자입니다.");
}
else
{
Console.WriteLine("숫자가 아닙니다.");
}
}
두개의 입력을 받아야하기 때문에, 입력을 받고, 정수형인지 판단하는 블록이 2번 나타납니다.
두번의 입력을 받으면 if문에 AND 연산자를 사용하여 두개의 bool 변수가 모두 true일때만, true를 반환받아 두 데이터가 모두 숫자임을 출력합니다.
2번의 입력이 모두 숫자여야만 두 데이터가 모두 숫자입니다. 결과가 나오는것을 볼 수 있습니다.
2. 숫자를 두번 입력받아서 두번 다 숫자인지 하나만 숫자인지 확인
- 프로그램을 처음 시작하면 “첫번째 수를 입력해 주세요.” 메시지 출력
- 메시지를 입력하고 Enter
- “두번째 수를 입력해 주세요.” 메시지 출력
- 메시지를 입력하고 Enter
- 첫번째 수와 두번째 수 모두 숫자 라면 - “두 데이터는 모두 숫자입니다.”
- 둘 중 하나만 숫자라면 - “하나의 데이터만 숫자입니다.”
- 숫자가 하나도 없다면 - “두 데이터 모두 숫자가 아닙니다.”
둘 중 하나만 숫자라면 조건이 추가된 형태입니다.
입력을 받는 부분은 변하지 않았기 때문에 위의 답에서 if문을 수정해주면 해결할 수 있습니다.
바로 문제를 풀어보도록 하겠습니다.
{
//첫번째 입력받고, 정수형 변환시도
Console.Write("첫번째 수를 입력해 주세요 : ");
string inputFirst = Console.ReadLine();
int num1;
bool isInt1 = int.TryParse(inputFirst, out num1);
//두번째 입력 받고, 정수형 변환 시도
Console.Write("두번째 수를 입력해 주세요 : ");
string inputSecond = Console.ReadLine();
int num2;
bool isInt2 = int.TryParse(inputSecond, out num2);
//두수가 정수형인지 판단
//둘 다 정수형일경우
if (isInt1 && isInt2)
{
Console.WriteLine("두 데이터 모두 숫자입니다.");
}
//둘중 하나만 정수형인경우
else if(isInt1 || isInt2)
{
Console.WriteLine("하나의 데이터만 숫자입니다.");
}
else
{
Console.WriteLine("두 데이터 모두 숫자가 아닙니다.");
}
}
if문에 else if 문단이 하나 추가되었습니다.
else if의 경우, 첫 if문이 false일 경우, else if 에 적힌 조건식을 판단해서 실행 여부를 결정하게 됩니다.
만약, 이 else if의 조건식이 false일경우, 다음 else if 가 있으면 해당 조건식의 true,false 여부를 판단하게 되고, 없을경우 else문으로 이동하거나, else문이 없을경우 if문이 종료되게 됩니다.
이번엔 첫번째 입력이 정수인지와 두번째 입력이 정수인지 판단하는 bool 형식을 OR 연산자로 판단하여, 두 bool 변수중 하나라도 true 일 경우, 해당 else if 문에 적힌 코드를 실행하게 됩니다.
결과를 보도록 하겠습니다. 양쪽 다 정수형이거나, 문자열일경우의 결과는 같기때문에 생략하겠습니다.
순서와 관계 없이, 문자열이 하나라도 입력되면 하나의 데이터만 숫자입니다. 가 출력되는것을 볼 수 있습니다.
3. 숫자를 두번 입력받아서 두 수를 비교
- 프로그램을 처음 시작하면 “첫번째 수를 입력해 주세요.” 메시지 출력
- 메시지를 입력하고 Enter
- “두번째 수를 입력해 주세요.” 메시지 출력
- 메시지를 입력하고 Enter
- 둘 중 하나라도 숫자가 아니라면 - “두 개의 숫자를 입력해주세요.”
- 첫번째 수와 두번째 수 모두 숫자 라면
- 첫번째 수와 두번째 수가 같다면 - ”xx 와(과) xx 은(는) 같습니다.”
- 첫번째 수와 두번째 수가 다르다면
- 첫번째 수가 더 크다 - “xx 은(는) xx 보다 큽니다.”
- 첫번째 수가 작다 - “xx 은(는) xx 보다 작습니다.”
이전 3번의 100이상, 미만 판단과 비슷하지만, 이번엔 두 수를 입력하고 비교하는 문제입니다.
역시 2중 if문을 사용하여 풀어낼 수 있으며, 첫번째 if문은 두 입력이 모두 정수형인지를 판단하고, 두번째 if문에서 두 수의 크기를 비교하게 됩니다.
또한 여기서는 관계형 연산자를 사용하게 됩니다.
크다, 작다, 크거나 같다, 작거나 같다 등의 연산자는 흔히 사용하는 그것을 사용하게됩니다
(A가 B 보다) 크다 | (A가 B 보다) 작다 | (A가 B보다) 크거나 같다 |
(A가 B보다) 작거나 같다 |
(A와 B가) 같다 |
.(A와 B 가) 같지 않다 |
A > B | A < B | A >= B | A <= B | A == B | A != B |
같다와 같지 않다가 익숙하지 않을 수 있습니다.
같다의 경우 일반적으로 = 을 사용할경우, 변수에 값을 입력하는 부분과 같아지기 때문에, 문제가 발생할 수 있습니다.
그렇기 때문에 == 을 사용하여 표현하게 됩니다. 또한 같지 않다의 경우, NOT 연산을 떠올려서 기억해 주시면 됩니다.
또한 비교 연산자의 경우 결과가 True와 False로 출력됩니다.
if (A == B)
만약 이러한 if문이 있다면, A와 B 의 변수에 저장된 값이 같으면 True를 반환하여 if문이 실행되고, 같지 않으면 False를 반환하여 실행되지 않습니다.
그리고 크거나 같다, 작거나 같다, 같지 않다의 비교형 연산자를 사용할 경우, = 기호가 뒤로 와야합니다.
기호가 반대로 될 경우, 비교형 연산자로 인식되지 않고, 오류가 발생하게 됩니다.
이제 문제를 풀어보도록 하겠습니다.
{
//첫번째 입력받고, 정수형 변환시도
Console.Write("첫번째 수를 입력해 주세요 : ");
string inputFirst = Console.ReadLine();
int num1;
bool isInt1 = int.TryParse(inputFirst, out num1);
//두번째 입력 받고, 정수형 변환 시도
Console.Write("두번째 수를 입력해 주세요 : ");
string inputSecond = Console.ReadLine();
int num2;
bool isInt2 = int.TryParse(inputSecond, out num2);
//둘다 정수형인지
if(isInt1 && isInt2)
{
//첫번째 입력이 두번째 입력보다 큰 경우
if(num1 > num2)
{
Console.WriteLine($"{num1} 은(는) {num2} 보다 큽니다.");
}
//첫번째 입력이 두번째 입력보다 작은 경우
else if(num1 < num2)
{
Console.WriteLine($"{num1} 은(는) {num2} 보다 작습니다.");
}
//나머지(두 입력이 같을경우)
else
{
Console.WriteLine($"{num1} 와(과) {num2} 는 같습니다");
}
}
else
{
Console.WriteLine("두 개의 숫자를 입력해주세요");
}
}
입력을 받는 부분은 위의 두 문제와 같기 때문에 if문의 구성을 눈여겨 보시면 됩니다.
이전 100이상, 이하 판정하기와 같이 첫번째 if문에 두 입력이 정수인지 판단하는 bool 형 변수 2개의 AND 연산을 실행하여 두 수 모두 정수형인지를 판단합니다.
두 수가 모두 정수형일때만, 다음 if문을 실행하여 첫번째 입력한 정수를 기준으로 두번째 입력한 정수가 큰지, 작은지, 같은지를 구분합니다.
해당 if문을 작성한 코드입니다.
if(num1 > num2)
{
}
else if(num1 < num2)
{
}
else
{
}
이 부분의 작성은 작성자의 자유이며, 저의 경우 같은 경우를 최 후순위로 만들어 else문이 같다 연산을 실행하도록 만들었습니다.
여기는 코드를 짜는 사람의 스타일이 반영되며, 아래 코드로도 무관하게 작동합니다.
if(num1 < num2)
{
}
else if(num1 == num2)
{
}
else
{
}
if(num1 > num2)
{
}
else if(num1 == num2)
{
}
else
{
}
요지는 else에 한가지 경우의 수만 남도록 if문을 구성해주시면 됩니다.
결과를 보도록 하겠습니다.
문자열이 입력된 경우의 결과는 생략하도록 하겠습니다.
첫번째 입력을 기준으로 두번째 입력된 값을 판단하여 큰지, 작은지 같은지를 출력하는 모습을 볼 수 있습니다.
'사전캠프 > 걷기반' 카테고리의 다른 글
걷기반 Lv.2 여행을 떠나요 (0) | 2024.08.19 |
---|---|
걷기반 Lv.2 대한민국의 수도는? (0) | 2024.08.19 |
걷기반 Lv.2 본격 프로그래밍 시작해보기 (0) | 2024.08.16 |
걷기반 Lv.1 연산자 실습 (0) | 2024.08.13 |
걷기반 Lv.1 데이터 다루기 연습 (0) | 2024.08.13 |