==================================================================================
#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;
}
======================================================================
깔끔하고 간결하고 더줄이고 효율적이고 나발이고
일단은 어떻게든 돌아가게만해보자..하고만들었는데.. 이겼어내가..
칭찬.
ㅜㅜ
맨위에 for문뭐야..
임의숫자 + 임의숫자 같은형태에서 +위치에오는 연산기호가 뭔지 판단하는건데, 딱그냥 그거지정해서 그자리연산기호 뭐냐해도되긴했는데 거의다만든시점이라.. for문으로 첫글자부터 마지막글자까지중 연산기호들어가면 그거뭐냐로 만들어버림
ㅋㅋㅋㅋ
코드 귀엽다. 으하하.
데헷 > <
천재인듯
배운지 1주일만에 이정도 구현을 ?ㄷㄷ
아무리 효율 무시하기로서니 저건 좀...
ㅋㅋㅋㅋ
니 프로그램 짜는데에 하등 도움도 안되는 초딩 꼬꼬마들 학원에서 가르칠때 시간때우는 내용임. 저런거에 머가리 싸매고 좆좆거릴시간에 이론서를 봐라