만약에 숫자가 연속되잖아
347+127
저건 배열에서 하나하나 count올라가게끔 하면
숫자갯수가 6개에 \'+\'라는 연산자 1개 가 되버리는데,
저렇게 연속되는 숫자를.... 한묶음의 \'123\'이라는 숫자로 어떻게 인식시킴??????
그리고 공백도 포함한다는데.........
#include <stdio.h>
#include <string.h>
int main()
{
int cnt_oper,cnt_num, i,j;
char arr[100];
while(1){
cnt_oper=0;
cnt_num=0;
scanf(\"%s\",arr);
if(arr[0]==\'0\'){
return 0;
}
for(i=0; i<strlen(arr); i++){
if(arr[i]==\'\\0\'){
break;
}
if(\'0\'<=arr[i] && arr[i]<=\'9\'){
}
cnt_num++;
}
else if(arr[i]==\'+\' || arr[i]==\'-\' || arr[i]==\'*\' || arr[i]==\'/\' || arr[i]==\'%\' || arr[i]==\'**\'){
cnt_oper++;
}
}
printf(\"%d %d\\n\",cnt_oper,cnt_num);
}
return 0;
}
숫자사이에 공백은 포함될 수 없고,
457 + 547 << 이런식으로 구분짓거나 그런곳의 공백은 허용된다는 조건도 어떻게 잡아야할지 감이안옴..ㅠ_ㅠ
그리고 조건에 맞지않는
376++
3 76
위 같은 입력때는 No라고 출력해야하는데말이지.....
이거야 뭐 조건달면 될거고....
아무튼 감이오질않네 ㅠ_ㅠ
힌트좀 던져주삼
저 분야에 대해서는 굉장히 방대한 이론이 있죠 ㅇㅇ, 막연하게 느껴지는거 당연한거임 ㅇㅇ
그렇게 한 묶음 한 묶음 단위로 구별해 내는걸 스캔한다고 그러고요 한 묶음을 토큰이라고 불릅니다.
물론 연속된 공백문자들도 하나의 토큰입니다.
그리고 토큰이 올바르게 나열되어 있는가를 판별하는걸 파싱한다고 합니다. 즉 \'123\' \'+\' \'456\' 은 맞는건데 \'123\' \'+\' \'+\' 는 안되죠
for문 하나 더만들어서 j=i j<strlen(arr); j++ 에다가 if문에 \'0\'<=arr[i+1] && arr[i+1]<=\'9\' 막 이거에 continue섞고 else에 break섞고 뻘짓거리하다가 시간만 날림.
와 맞아요 \'파씽\'이라는 단어..... 강의시간에 많이 들은 것 같음. 아오.이걸 어떻게 조질까요...... 어디 참조할 사이트 링크라도 ㅠ_ㅠ굽신~
조건을 나열해서 손코딩 해보세요. 도대체 한문장이 어떨때 이루어지는지, 어떤 상황이면 문법에 어긋나는지 조건을 나열해봐야 코딩이 될듯 싶어요