๐ C++ ๊ธฐ์ด ํ๋ฌ์ค 6์ฅ ์์ฝ (summary)
๐ต C++ if, if else, switch ๊ตฌ๋ฌธ
- if : ๋จ์ผ ๊ตฌ๋ฌธ์ด๋ ๊ตฌ๋ฌธ ๋ธ๋ก์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ํํ๊ฒ ๋ง๋ ๋ค. ์ด๊ฒ์ ํน์ ํ ์กฐ๊ฑด์ด ๋ง์กฑ๋ ๋์๋ง ๊ทธ ๋จ์ผ ๊ตฌ๋ฌธ์ด๋ ๊ตฌ๋ฌธ ๋ธ๋ก์ ์ํํ๋ค๋ ๋ง์ด๋ค.
- if else : ๋ ๊ฐ์ ๋จ์ผ ๊ตฌ๋ฌธ์ด๋ ๊ตฌ๋ฌธ ๋ธ๋ก ์ค์์ ์ด๋ ๊ฒ์ ์คํํ ๊ฒ์ธ์ง ์ ํํ๊ฒ ๋ง๋ ๋ค. ์ฌ๋ฌ ๊ฐ์ง ์ ํ ์ฌํญ ์ค์์ ์ ํํ๊ฒ ํ๋ ค๋ฉด, ๊ทธ์ ๊ฐ์ ํ๋์ if else ๊ตฌ๋ฌธ์ ์ํ๋ ๋งํผ์ if else๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
- switch : ์ ํ ์ฌํญ์ ๋ชฉ๋ก์์ ํ๋์ ํน์ ํ ๊ฒฝ์ฐ๋ฅผ ์ ํํ๊ฒ ๋ง๋ ๋ค.
๐ฃ ์์ฌ ๊ฒฐ์ ์ ๋์์ฃผ๋ ์ฐ์ฐ์
- if / else ๊ตฌ๋ฌธ : ์ผ๋ฐ์ ์ผ๋ก ๊ด๊ณ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์กฐ๊ฑด์ ๊ฒ์ฌํ๋ค.
- ๋ ผ๋ฆฌ ์ฐ์ฐ์(&&, ||, !) : ๊ด๊ณ ํํ์๋ค์ ๊ฒฐํฉํ๊ฑฐ๋ ์์ ํ์ฌ ๋์ฑ ์ ๊ตํ ์กฐ๊ฑด ๊ฒ์ฌ๋ฅผ ์ํํ ์ ์๋ค.
- ์กฐ๊ฑด ์ฐ์ฐ์(?:) : ๋ ๊ฐ ์ค์์ ํ๋๋ฅผ ์ ํํ๋ ๊ฐ๊ฒฐํ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
๐ต cctype ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ฌธ์ ๊ด๋ จ ํจ์๋ค์ด ๋ค์ด์๋ค.
๋ฌธ์ ์ ๋ ฅ์ ๋ถ์ํ๋ ๋งค์ฐ ํธ๋ฆฌํ๊ณ ๊ฐ๋ ฅํ ๋๊ตฌ๋ค์ ์ ๊ณตํ๋ค.
โ๏ธ ์ฐ์ต ๋ฌธ์
1๏ธโฃ ๋น์นธ ๋ฌธ์์ ๊ฐํ ๋ฌธ์๋ฅผ ์ธ๋ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋ ๋จํธ์ ์๊ฐํด๋ณด์.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
// ๋ฒ์ 1
while (cin.get()) // ํ์ผ ๋์์ ์ข
๋ฃ
{
if(ch == ' ')
spaces++;
if(ch == '\n')
newlines++;
}
// ๋ฒ์ 2
while (cin.get(ch))
{
if(ch == ' ')
spaces++;
else if(ch == '\n')
newlines++;
}
|
cs |
๋ฒ์ 2๋ ๋ฒ์ 1์ ๋นํด ์ด๋ค ์ ๋ฆฌํ ์ ์ด ์๋๊ฐ?
โ๏ธ ๋ ๋ฒ์ ์ ๊ฒฐ๊ณผ๋ ๋์ผํ๋ค. ๊ทธ๋ฌ๋ if else ๋ฒ์ ์ด ํจ์จ์ ์ด๋ค. ์๋ฅผ ๋ค์ด, ch๊ฐ ๋น์นธ ๋ฌธ์์ผ ๋ ์ด๋ค ์ํฉ์ด ๋ฒ์ด์ง๋์ง ์๊ฐํด ๋ณด์. ๋ฒ์ 1์ ch๊ฐ ๋น์นธ ๋ฌธ์์ผ ๋ spaces๋ฅผ ์ฆ๊ฐ์ํจ ํ์ ๊ทธ ๋ฌธ์๊ฐ ๊ฐํ ๋ฌธ์์ธ์ง ๋ค์ ๊ฒ์ฌํ๋ค. ๊ทธ ๋ฌธ์๊ฐ ๋น์นธ ๋ฌธ์๋ผ๋ ์ฌ์ค์ ํ๋ก๊ทธ๋จ์ด ์ด๋ฏธ ์๊ณ ์๋๋ฐ, ๊ฐํ ๋ฌธ์์ธ์ง ๋ค์ ๊ฒ์ฌํ๋ค๋ ๊ฒ์ ์๊ฐ ๋ญ๋น์ด๋ค. ๋ฒ์ 2๋ ์ด์ ๊ฐ์ ์ํฉ์์ ๊ฐํ ๋ฌธ์ ๊ฒ์ฌ๋ฅผ ํ์ง ์๋๋ค.
2๏ธโฃ ๋ค์๊ณผ ๊ฐ์ ํ๋ก๊ทธ๋จ์ด ์๋ค๊ณ ๊ฐ์ ํ์.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include <iostream>
using namespace std;
int main()
{
char ch;
int ct1, ct2;
ct1 = ct2 = 0;
while((ch == cin.get)) != '$'
{
cout << ch;
ct1++;
if (ch = '$')
ct2++;
cout << ch;
}
cout << "ct1 = " << ct1 << ", ct2 = " << ct2 << "\n";
return 0;
}
|
cs |
์ด์ ์ด ํ๋ก๊ทธ๋จ์ ์คํํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฅํ๋ค๊ณ ๊ฐ์ ํ๋ฉด, ์ถ๋ ฅ์ ์ด๋ป๊ฒ ๋๊ฒ ๋๊ฐ? (์ ๋ ฅ์ ๋ฒํผ๋ฅผ ๊ฒฝ์ ํ๋ค๊ณ ๊ฐ์ ํ๋ค.) ์ฌ๊ธฐ์ <ENTER>์ Enterํค๋ฅผ ๋๋ ๋ค๋ ๋ป์ด๋ค.
Hi!<ENTER>
Send $10 or $20 now!<ENTER>
โ๏ธ if ์กฐ๊ฑด ๊ฒ์ฌ ํํ์์์ ch == '$' ๋์ ์ ch = '$'๋ฅผ ์ฌ์ฉํ์ผ๋ฏ๋ก ์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ด ๋๋ค.
Hi!
H$i$ ! $
$Send $10 or $20 now!
S$e$n$d$ $ct1 = 9, ct2 = 9
์๋ ์๋๋ HHii!! ์ฒ๋ผ ๊ฐ ๋ฌธ์๋ฅผ ๋ ๋ฒ์ฉ ์ถ๋ ฅํ๋ค๊ฐ, $ ๋ฌธ์๋ฅผ ๋ง๋๋ฉด ๋ฃจํ๋ฅผ ๋๋ด๊ณ ct1๊ณผ ct2๋ฅผ ์ถ๋ ฅํ๋ ๊ฒ์ด์๋ค. ๊ทธ๋ฌ๋ ์ด ํ๋ก๊ทธ๋จ์์ ๊ฐ ๋ฌธ์๋ ๋ ๋ฒ์งธ ์ถ๋ ฅ์ด ์ด๋ฃจ์ด์ง๊ธฐ ์ ์ $ ๋ฌธ์๋ก ๋ฐ๋๋ค. ์กฐ๊ฑด ๊ฒ์ฌ ํํ์ ch = $์ ๊ฐ์ $๋ฌธ์์ผ ์ฝ๋์ด๋ค. ์ด๊ฒ์ 0์ด ์๋๋ฏ๋ก ์กฐ๊ฑด ๊ฒ์ฌ ํํ์์ true ํ๊ฐ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก๋ ct2๋ก ๋งค๋ฒ ์ฆ๊ฐํ๋ค.
3๏ธโฃ ๋ค์๊ณผ ๊ฐ์ ์กฐ๊ฑด์ ๋ํ๋ด๋ ๋ ผ๋ฆฌ ํํ์์ ๊ตฌ์ฑํ๋ผ.
a. weight๊ฐ 115๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 125๋ณด๋ค๋ ์๋ค.
b. ch๊ฐ q์ด๊ฑฐ๋ Q์ด๋ค.
c. x๋ ์ง์์ด์ง๋ง 26์ ๋ฐฐ์๋ ์๋๋ค.
e. donation์ด 1000~2000 ๋ฒ์์ ์ํ๊ฑฐ๋ guest๊ฐ 1์ด๋ค.
f. ch๋ ์ํ๋ฒณ ์๋ฌธ์ ๋๋ ๋๋ฌธ์์ด๋ค. (์ํ๋ฒณ ์๋ฌธ์์ ๋๋ฌธ์๋ ๊ฐ๊ฐ์ ์ฝ๋๊ตฐ ๋ด์ ์ฐ์์ ์ผ๋ก ๋ฐฐ์ด๋์ด ์์ง๋ง, ์๋ฌธ์ ์ฝ๋๊ตฐ๊ณผ ๋๋ฌธ์ ์ฝ๋๊ตฐ ์ฌ์ด์๋ ๊ฐ๊ฒฉ์ด ์๋ค๊ณ ๊ฐ์ ํ๋ค.)
โ๏ธ a. weight >= 115 && weight < 125
b. ch == 'q' || ch == 'Q'
c. x % 2 == 0 && x != 26
d. x % 2 == 0 && !(x % 26 == 0)
e. donation >= 1000 && donation <= 2000 || guest == 1
f. (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')
4๏ธโฃ ์์ด์์, "I will not not speak"๋ผ๋ ๋ง์ "I will speak"์ ๊ฐ์ ๋ป์ด๋ค. C++์์ !!x๋ x์ ๊ฐ์ ๋ป์ธ๊ฐ?
โ๏ธ ๋ฐ๋์ ๊ทธ๋ ์ง๋ ์๋ค. ์๋ฅผ ๋ค์ด, x๊ฐ 10์ด๋ฉด !x๋ 0์ด๊ณ !!x๋ 1์ด๋ค. ๊ทธ๋ฌ๋ x๊ฐ boolํ ๋ณ์์ผ ๊ฒฝ์ฐ์ !!x๋ x์ ๊ฐ๊ฒ ๋๋ค.
5๏ธโฃ ์ด๋ค ๋ณ์์ ์ ๋๊ฐ๊ณผ ๊ฐ์ ๊ฐ์ ๊ฐ์ง๋ ์กฐ๊ฑด ํํ์์ ๊ตฌ์ฑํ๋ผ. ๋ค์ ๋งํด์, ๋ณ์ x๊ฐ ์์์ด๋ฉด x๊ฐ ์กฐ๊ฑด ํํ์์ ๊ฐ์ด ๋๊ณ , ์์์ด๋ฉด -x๊ฐ ์กฐ๊ฑด ํํ์์ ๊ฐ์ด ๋๋๋ก ๋ง๋ค์ด๋ผ.
โ๏ธ (x < 0) ? -x : x ๋๋ (x >= 0) ? x : -x
6๏ธโฃ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋ ๋จํธ์ switch ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ค์ ์์ฑํ๋ผ.
1
2
3
4
5
6
7
8
9
10
|
if (ch == 'A')
a_grade++;
else if (ch == 'B')
b_grade++;
else if (ch == 'C')
c_grade++;
else if (ch == 'D')
d_grade++;
else
f_grade++;
|
cs |
โ๏ธ ์ ๋ต ์ฝ๋
1
2
3
4
5
6
7
8
9
10
11
12
13
|
switch (ch)
{
case 'A' : a_grade++;
break;
case 'B' : b_grade++;
break;
case 'C' : c_grade++;
break;
case 'D' : d_grade++;
break;
default : f_grade++;
break;
}
|
cs |
7๏ธโฃ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋ ๋จํธ์ด ์๋ค๊ณ ๊ฐ์ ํ์.
1
2
3
4
5
6
7
8
9
10
|
int line = 0;
char ch;
while (cin.get(ch))
{
if (ch == 'Q')
break;
if (ch != '\n')
continue;
line++;
}
|
cs |
break๋ contiune๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ด ์ฝ๋๋ฅผ ๋ค์ ์์ฑํ๋ผ.
โ๏ธ ๋ค์์ ํ๋์ ์ฝ๋ ์์ด๋ค.
1
2
3
4
5
6
7
|
int line = 0;
char ch;
while (cin.get(ch)) && ch != 'Q')
{
if(ch == '\n')
line++;
}
|
cs |
์ถ์ฒ ๋ฐ ์ฐธ๊ณ : C++ ๊ธฐ์ด ํ๋ฌ์ค
HyunZzang์ ํ๋ก๊ทธ๋๋ฐ ๊ณต๊ฐ / ํจ๊ป ๊ณต๋ถํด์!!
๋์์ด ๋์ จ๋ค๋ฉด "์ข์์โค๏ธ" ๋๋ "๊ตฌ๋ ๐๐ป" ๋ถํ๋๋ฆฝ๋๋ค :)