이제 만들기 시작 !!
더하기 빼기는 비교적 쉬웠다 더하기는 더하는 수만큼 +1 을 계속 해주면 되고,
빼기는 꺼꾸로 예를 들어 x = a+b 면 빼기는 x-a = b 이런식으로 알고리즘을 작성하면 끝
밑에는 소스다 .
int Plus(int a, int b){
int unsigned i = 0;
while(1)
{
i = PlusOne(i);
b = PlusOne(b);
if(Equal(a, i))
break;
else
continue;
}
return b;
}
int Min (int a, int b){
int unsigned result = 0;
while(1)
{
if (Equal(a, b))
break;
else
result = PlusOne(result);
b = PlusOne(b);
continue;
}
return result;
}
곱셈도 a * b = x 라면 +1 을 a를 b 만큼 for 문을 두개를 돌려주면되고
나눗셈도 역시 뺄셈같이 x /a = b 이런식으로 해주면 된다. 여기서 중요한점은
나머지다 나머지를 구해주고 몫에다가 더해주어야 나눗셈연산이 정확하게 된다. 그리고 나눗셈 함수는 몫과 나머지를 다가져와서 포인터로 함수를 만들었다.
int Mul(int a, int b){
int unsigned i = 0;
int unsigned j = 0,result=0;
while (1) {
while(1)
{
result = PlusOne(result);
i = PlusOne(i);
if(Equal(a, i))
break;
else
continue;
}
j = PlusOne(j);
i = 0;
if(Equal(b, j))
break;
else
continue;
}
return result;
}
int* Div(int a,int b){ // 나눗셈
int unsigned i = 0, namuji = 0;
int unsigned f_b, result = 0;
int unsigned re_mul = 0; // 몫과 b의 곱
int *resnam_sum = (int*)malloc(2) ;
f_b = b; // 초기의 b 값
while (1) {
if(Equal(a, b))
{result = 1;
break;
}
else
result = PlusOne(result);
while(1)
{
i = PlusOne(i);
b = PlusOne(b);
if(Equal(f_b, i))
break;
else
continue;
}
i = 0;
re_mul = Mul(f_b,result); //몫과 b의 곱
namuji = 0;
while(1){ // b 와 몫의 곱에 나머지를 더해줌
namuji = PlusOne(namuji);
re_mul = PlusOne(re_mul);
if (Equal(f_b, namuji))
break;
else if (Equal(a, re_mul))
break;
else
continue;
}
if (Equal(a, re_mul))
break;
else
continue;
}
'Programming > Algorithm' 카테고리의 다른 글
1 과 0으로 계산기 만들기 - 3 - (0) | 2016.02.09 |
---|---|
1 과 0으로 계산기 만들기 - 2 - (0) | 2016.02.09 |
1 과 0으로 계산기 만들기 - 0 - (0) | 2016.02.09 |