700
2013-09-22 03:03:35
0
문자열로 입력받은 "23+45" 를 정수 23, 45 두개로 나누고 게산하려는 것 처럼 보이는데요,
위와 같은 상황이라면 문자열에서 숫자를 나눌 경계(+, -, /, *...)가 무엇인지 먼저 정의되어있어야 할것같구요
위와 같은 상황을 단편적으로만 본다면
경계의 종류를 담고있는 배열 sep_arr[] = {'+', '-', '/', '*', 'n'};
경계가 무엇인지 저장 할 값 sep = 'n';
문자열을 담고있는 배열 arr[] = "23+45";
첫번째 숫자를 담을 배열 left_arr[10] = {0,};
두번째 숫자를 담을 배열 right_arr[10] = {0,};
경계를 지났는지 확인할 값 is_after = false;
경계의 위치를 저장 할 값 sep_pos=0;
for( int n=0; arr[n]!='n'; ++n ) { // 문자열 체크
for( int s=0; sep_arr[s]!='n'; ++s ) { // 경계 체크
if( arr[n] == sep_arr[s] ) {
is_after = true; // 경계가 지났음을 체크
sep_pos = ++n; // 경계의 다음값을 저장 ( arr 의 경우 '4'의 위치 )
}
}
if( is_after == false ) { // 경계를 지나기 전
left_arr[n] = arr[n];
} else { // 경계를 지난 다음
right_arr[n-sep_pos] = arr[n];
}
}
첫번째 숫자 left = atoi(left_arr);
두번째 숫자 right = atoi(right_arr);
// 계산
switch( sep )
{
case '+': // ...
break;
...
}
정도면 되지않을까 싶은데요
atoi 함수같은경우 직접 만들수도 있으니 그렇게 구현하셔두 좋구여
이 야심한 밤에 그냥 머리에 떠오르는대로 막 적어봤습니다 오류검사 안함ㅋㅋㅋ