크.. 취한다.. 중간단계 하나하나 실행해서 될때마다 두근두근 헉헉...
별거아닌 문제같은데 막상 해보니까 왜이렇게 힘드냐 ㅜㅜ
그래도 너무재밋다...






==================================================================================

#include <stdio.h>

#pragma warning(disable:4996)


int change(char buf[]); //문자를 숫자로//

int Len(char buf[]); //전체입력글자수판단//

//입력받은값 : num1 (연산기호) num2 //

int c1(char buf[]); //num1글자수//

int c2(char buf[]); //num2글자수//

int num1(char buf[]); //num1값//

int num2(char buf[]); //num1값//

int main(void)

{ //값을 입력받기//

char buf[100];

int c = 0;

int ki = 0;

printf("수식입력 : ");

scanf("%s", buf);

//연산기호 구분하기//

{

for (c = 0; buf[c] != '\0';c++)

if (buf[c] == '+')

ki = 1;

else if (buf[c] == '-')

ki = 2;

else if (buf[c] == '*')

ki = 3;

else if (buf[c] == '/')

ki = 4;

}

//연산기호에 따른 출력값 결정하기//

switch (ki)

{

case 1:

printf("%d+%d=%d", num1(buf), num2(buf), num1(buf) + num2(buf));

break;

case 2:

printf("%d-%d=%d", num1(buf), num2(buf), num1(buf) - num2(buf));

break;

case 3:

printf("%d*%d=%d", num1(buf), num2(buf), num1(buf) * num2(buf));

break;

case 4:

printf("%d/%d=%d", num1(buf), num2(buf), num1(buf) / num2(buf));

break;

}

return 0;

}

int change(char buf[])

{//입력받은값의 문자열을 숫자로 변경//

if (buf == '1')

return 1;

else if (buf == '2')

return 2;

else if (buf == '3')

return 3;

else if (buf == '4')

return 4;

else if (buf == '5')

return 5;

else if (buf == '6')

return 6;

else if (buf == '7')

return 7;

else if (buf == '8')

return 8;

else if (buf == '9')

return 9;

else if (buf == '0')

return 0;

}  

int Len(char buf[])

{//글자수 구하기//

int i;

for (i = 0; buf[i] != '\0';i++)

{ }

return i;

}


int c1(char buf[])

{//num1의 글자수 구하기//

int i;

for (i = 0; buf[i] != '\0'; i++)

{

if (buf[i] == '+')

break;

else if (buf[i] == '-')

break;

else if (buf[i] == '*')

break;

else if (buf[i] == '/')

break;

else

continue;

}

return i;

}

int c2(char buf[])

{//num2의 글자수 구하기//

int len = Len(buf);

int c = c1(buf);


return (len-(c+1));

}


int num1(char buf[])

{//num1의 값 구하기//

int num1=0;

int i, j,k;

for (i = 0; i < c1(buf); i++)

{

k = 1;

for (j = 1; j < (c1(buf) - i); j++)

{

k *= 10;

}

num1 += change(buf[i])*k;

}

return num1;

}


int num2(char buf[])

{//num2의 값 구하기//

int num2 = 0;

int i, j, k;

for (i = (c1(buf)+1); buf[i] !='\0' ; i++)

{

k = 1;

for (j = 1; j < Len(buf)-i; j++)

{

k *= 10;

}

num2 += change(buf[i])*k;

}

return num2;

}

======================================================================

깔끔하고 간결하고 더줄이고 효율적이고 나발이고

일단은 어떻게든 돌아가게만해보자..하고만들었는데.. 이겼어내가..