전체 글 (93)
-
2015.04.16 중위 표기법 / 후위 표기법 이해
중위 표기법 : 우리가 직관적으로 이해하는 방식 연산자가 중간에 있어서 "중"위 4 * 3 = 12 (a*b)+c a*b+d/c-2 후위 표기법 : 컴파일러가 쉽게 계산할 수 있도록 하는 방식 연산자가 뒤에 있어서 "후"위 /* 위에 것을 후위로 내렸습니다 */ 4 3 * a b * c + a b * d c / + 2 - 1. 스택을 통해, 중위 표기법 계산을 후위 표기법 계산으로 바꾼다. 2. 후위 표기법을 통해 연산을 한다. 굳이 중위 연산자에 일일히 소괄호를 칠 필요는 없다 연산자 우선순위로 판단하니까! ex)
-
2015.04.15 [C++] 파일입출력) EOF에 대한 이해
파일입출력을 사용할때 eof에 대해 이해해보자 eof 는 f stream 객체가 EOF를 만나면 상수 -1 로서, 참값을 반환한다. (조건식에서 0은 거짓, 나머지는 참) eof 는 파일의 끝에 도달하면 반환(-1)을 한다 == 파일의 끝에 도달하면 eof 가 반환이 된다 파일입출력에 대한 예제코드를 보자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 #include /**/ #include using namespace std; ofstream fout; //화면에서 파일로 ifstream fin; //파일에서 화면으로 v..
-
2015.04.14 정수 출력
정수의 각 자리수를 출력하는 함수를 재귀함수로 만들어보자 예제)정수를 입력하시오 : 1234실행 : 1 2 3 4 천의자리는 1, 백의자리는 2, 십의자리는 3, 일의자리는 4...이렇게 차례대로 출력하면서 입력받는 숫자는 음수만 아니면 된다 1. 몫이 일의자리가 되는, 1~9 사이의 숫자를 찾는다2. 찾은 숫자를 출력3. 다음 계산할 숫자를 재귀함수의 매개변수로 넘겨준다 point1~9 사이의 숫자 찾는 방법 :10의 제곱으로 나누면서 몫이 일의자리인 숫자를 찾는다== 가장 큰 자리 숫자 12345678910111213141516171819202122232425262728#include #include void main(){ int num; printf("정수를 입력하시오 : "); scanf("%d"..
중위 표기법 / 후위 표기법 이해2015. 4. 16. 17:35
중위 표기법
: 우리가 직관적으로 이해하는 방식
연산자가 중간에 있어서 "중"위
4 * 3 = 12
(a*b)+c
a*b+d/c-2
후위 표기법
: 컴파일러가 쉽게 계산할 수 있도록 하는 방식
연산자가 뒤에 있어서 "후"위
/* 위에 것을 후위로 내렸습니다 */
4 3 *
a b * c +
a b * d c / + 2 -
<코드로 계산하는 순서>
1. 스택을 통해, 중위 표기법 계산을 후위 표기법 계산으로 바꾼다.
2. 후위 표기법을 통해 연산을 한다.
굳이 중위 연산자에 일일히 소괄호를 칠 필요는 없다
연산자 우선순위로 판단하니까!
ex)
'Language > C++' 카테고리의 다른 글
2차원 배열 동적할당 & 해제 (0) | 2015.04.24 |
---|---|
[C++] 강제 형변환 & 자동 형변환 (0) | 2015.04.24 |
[C 기초] 자리맞춰서 출력하기 (2) | 2015.04.20 |
[C++] 파일입출력) EOF에 대한 이해 (0) | 2015.04.15 |
정수 출력 (0) | 2015.04.14 |
[C++] 파일입출력) EOF에 대한 이해2015. 4. 15. 10:14
파일입출력을 사용할때 eof에 대해 이해해보자
eof 는 f
stream객체가 EOF를 만나면 상수 -1 로서, 참값을 반환한다. (조건식에서 0은 거짓, 나머지는 참)
eof 는 파일의 끝에 도달하면 반환(-1)을 한다
== 파일의 끝에 도달하면 eof 가 반환이 된다
파일입출력에 대한 예제코드를 보자
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
#include <iosteam>
/**/
#include <fstream>
using namespace std;
ofstream fout; //화면에서 파일로
ifstream fin; //파일에서 화면으로
void main()
{
/* 배열을 어디까지 사용했는지 idx 변수 */
int accNum;
/* 파일 읽기를 위한 변수 */
int count = 0;
accNum = takeFile(accArr, count); //accArr은 클래스 변수
switch(num)
{
case EXIT:
fout.open("accountInfo.txt");
break;
}
}
void takeFile(Account* acc, int* _count)
{
/* 프로젝트 안에 있는 파일을 부를 시, 그냥 파일이름만 쓰면 된다
아닐시, 모든 경로를 적어주어야 한다. */
fin.open("accountInfo.txt");
while(1)
{
/* 파일에서 1개를 읽어옵니다 */
fin >> accArr[_count].user_Name >> accArr[_count].user_ID >> accArr[_count].money;
/* 읽을 것이 없다면 루프를 빠져나갑니다.
[예제부분] */
if( fin.eof() )
{
cout << "no data.." <<endl;
break;
}
/* 몇개를 읽었는지 배열 idx 카운트다운 해줍니다. */
_count++;
}
fin.close();
}
|
cs |
예제 코드 조건문에서
if( fin.eof()) // if eof 가 참이라면 == 파일의 끝에 도달했다면
으로 이해할 수 있다
(cf. if의 조건식에서, 0은 거짓이고 나머지는 모두 참으로 인식한다)
반대로,
! fin.eof() 는 eof 의 반대이므로
( cf. ! 는 논리 NOT 연산자 / 참 일 경우 거짓을, 거짓 일 경우 참을)
파일의 끝에 도달하지 않았다면
으로 이해할 수 있다
/* C 에서 EOF */
if( fscanf("~", ~) != EOF)
{
//문자열 끝에 도달하지 않았다면
}
else
{
//문자열 끝에 도달했다면
}
'Language > C++' 카테고리의 다른 글
2차원 배열 동적할당 & 해제 (0) | 2015.04.24 |
---|---|
[C++] 강제 형변환 & 자동 형변환 (0) | 2015.04.24 |
[C 기초] 자리맞춰서 출력하기 (2) | 2015.04.20 |
중위 표기법 / 후위 표기법 이해 (0) | 2015.04.16 |
정수 출력 (0) | 2015.04.14 |
정수 출력2015. 4. 14. 20:57
정수의 각 자리수를 출력하는 함수를 재귀함수로 만들어보자
예제)
정수를 입력하시오 : 1234
실행 : 1 2 3 4
천의자리는 1, 백의자리는 2, 십의자리는 3, 일의자리는 4...
이렇게 차례대로 출력하면서 입력받는 숫자는 음수만 아니면 된다
1. 몫이 일의자리가 되는, 1~9 사이의 숫자를 찾는다
2. 찾은 숫자를 출력
3. 다음 계산할 숫자를 재귀함수의 매개변수로 넘겨준다
point
1~9 사이의 숫자 찾는 방법 :
10의 제곱으로 나누면서 몫이 일의자리인 숫자를 찾는다
== 가장 큰 자리 숫자
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include <math.h> #include <stdio.h> void main() { int num; printf("정수를 입력하시오 : "); scanf("%d", num); } void Show_digit(int n) { int k = 0; //지수 int portion = n / (int)pow(10.0 , k); //몫이 일의자리인 수 찾기 while(portion > 10 || portion < = 0) { k++; portion = n / (int)pow(10.0 , k); } printf("%d ", portion); if(k == 0) { return; } Show_digit(n % (int)pow(10.0 , k); } | cs |
while 문이, 나눴을 때 몫이 1일 때의 가장 큰 자리수의 숫자를 찾는 반복문이다
while 문 괄호 안의 조건식이 거짓이 되면 반복문에서 벗어난다
그리고 가장 큰 자리수를 찾고 while문을 벗어났기때문에 그대로 몫을 출력해준다.
다음, 나머지를 매개변수로 다시 재귀호출을 한다
마지막으로 재귀함수이므로,
1(10의0승)으로 나누었을때 몫이 1개가 될 때를 탈출구문으로 만든다.
'Language > C++' 카테고리의 다른 글
2차원 배열 동적할당 & 해제 (0) | 2015.04.24 |
---|---|
[C++] 강제 형변환 & 자동 형변환 (0) | 2015.04.24 |
[C 기초] 자리맞춰서 출력하기 (2) | 2015.04.20 |
중위 표기법 / 후위 표기법 이해 (0) | 2015.04.16 |
[C++] 파일입출력) EOF에 대한 이해 (0) | 2015.04.15 |