2015-01-27 1 views
-4

안녕하세요, 중첩을 후위로 변환하고 방정식을 해결하기 위해 연결된 목록, 스택 및 대기열을 사용하는 프로그램을 만들고 있습니다. 스택 및 대기열 연결된 목록에 대해 밀어 넣기, 끌어 오기 등을 만들었습니다. 그러나 내가 겪고있는 문제는 char와 float 사이의 변환입니다.텍스트의 방정식 읽기

텍스트 파일에서 읽을 때 방정식을 2 + 3/(5 + 1)과 같은 간단한 방정식으로 변환합니다. 내 푸시 함수는 char을 사용하고 pull은 char을 반환합니다. 내가 무엇을 먼저해야 할지를 알 수없는 것은 이러한 문자열을 char/floats로 변환하는 방법입니다. 이 테스트 코드를 작성하여 typeid가 char과 int를 구분하는지 확인했습니다.

int i, j; 
for(i=0; i<lines; i++){ 
    j = 0; 
    while(readIn[i][j] != '\0'){ 
     cout << typeid(readIn[i][j]).name(); 
     j++; 
    } 
    cout << endl; 
} 

내 결과는 다음과 같습니다 그러나 :

ccccccccccccccc 
ccccccccccccccccccccc 
ccccccccc 

그래서 그것은 문자로 문자열의 모든 문자를 해석합니다.

두 번째 질문에는 끌어 오기 기능이 관련되어 있습니다. 푸시 함수에서 제대로 float 변환을 수행 할 수있게되면 char 및 float로 함수 오버로드를 수행했습니다. 똑같은 코드는 구조의 별도 부분에 데이터를 저장합니다. 그러나 끌어 오기 함수에서 어떻게 char 또는 float을 가져올 수 있습니까? 하나의 char 함수와 다른 float 함수를 필요로하지만 같은 인수와 다른 리턴 값을 가진 두 개의 함수를 가질 수는 없습니다.

정말 도움이됩니다.

+0

C를 사용합니다, 당신은'표준 : cout'를 사용하는 것 같습니다, 그래서 이것은 C++ 질문? – crashmstr

+2

그리고,이 경우에'typeid'가 무엇을 할 것이라고 생각합니까? –

+1

'readIn'은'char' 배열의 배열이라고 생각합니다. 이 경우 각 문자가 문자라는 것은 놀랄만 한 것이 아닙니다 ... 어떤 문자를 읽었는지 알기 위해서는 실제로 문자를 검사해야합니다. –

답변

0

귀하의 질문을 정확하게 이해하고 있는지 여부를 모르겠습니다. 문자열에서 문자가 무엇을 나타내는 지 알고 싶을뿐입니다 (숫자, 문자, 점, ...)? 이 경우

, 나는 = C++를!는 C-기능

isalpha(c); // != 0, if c is a letter 
isdigit(c); // != 0, if c is a digit 
isspace(c); // != 0, if c is space, tab, ...