두 문자열을 입력받아서
문자열을 더하고 빼기하는 문제인데..
빼기에서 걸린당께..ㅠ
#include <stdio.h>
#include <string.h>
int compare(const char n1[], const char n2[]);
void add(const char n1[], const char n2[], char n3[]);
void minus(const char n1[], const char n2[], char n3[]);
void mult(const char n1[], const char n2[], char n3[]);
void main(){
int s;
char a[]="123456789", b[]="123456788",c[]={0};
s = compare(a,b);
if(s == 1)
printf("큰 수 = %s\\n",a);
else if(s == -1)
printf("큰 수 = %s\\n",b);
else
printf(" 같음 ! \\n");
add(a,b,c);
minus(a,b,c);
//printf("두 수의 합 = %s\\n",sum);
//min = minus(a,b,c);
//printf("두 수의 차 = %s\\n",min);
//x = mult(a,b,c);
//printf("두 수의 곱 = %s\\n",x);
}
int compare(const char n1[], const char n2[]){
int i,len1,len2;
len1= strlen(n1);
len2= strlen(n2);
if(len1>len2)
return 1;
else if(len1<len2)
return -1;
else
for(i=0;i<len1;i++){
if(n1[i] > n2[i])
return 1;
else if(n1[i] < n2[i])
return -1;}
}
void add(const char n1[], const char n2[], char n3[]){
int i,len,len1,len2,carry=0;
char temp1[65]={0},temp2[65]={0},sum[65]={0};
len1=strlen(n1);
len2=strlen(n2);
if(len1>len2){
temp1[0]=\'0\';
strcat(temp1,n1);
for(i=0;i<=len1-len2;i++)
temp2[i] = \'0\';
strcat(temp2,n2);}
else if(len1<len2){
temp2[0]=\'0\';
strcat(temp2,n2);
for(i=0;i<=len2-len1;i++)
temp1[i] = \'0\';
strcat(temp1,n1);}
else{
temp1[0]=\'0\';
strcat(temp1,n1);
temp2[0]=\'0\';
strcat(temp2,n2);
}
printf(" %s. %s \\n",temp1,temp2);
len=strlen(temp1);
for(i=len-1;i>=0;i--){
n3[i] = (temp1[i] -\'0\' + temp2[i] -\'0\' + carry)%10 +\'0\';//temp1과 temp2와 캐리값을 더한후에
//10으로 나눈 나머지 값을 문자열로 변환
carry = (temp1[i] -\'0\' + temp2[i] -\'0\' + carry)/10;}//temp1과 temp2와 캐리값을 더한후에
//10으로 나눈 값을 문자열로 변환
n3[len]=\'\\0\';
if(n3[0]==\'0\')
for(i=0;i<len;i++)
n3[i] = n3[i+1];//제일 앞자리가 0일 경우 다음값을 앞으로 가져와서 0을 없앰.
n3[len]=\'\\0\';
printf("%s \\n",n3);
/*
for(i=1;i<len1;i++)
temp1[i]=n1[i] - \'0\';
temp2[i]=n2[i] - \'0\';
for(i=len;i<0;i--)
if(temp1[i]+temp2[i] > 9)
temp1[i-1]+=1;
*/
}
---------------------이부분이 문제랑게 ㅠㅠ--------------------------------
void minus(const char n1[], const char n2[], char n3[]){
int i,len,len1,len2,carry=0;
char temp1[65]={0},temp2[65]={0},sum[65]={0};
len1=strlen(n1);
len2=strlen(n2);
if(len1>len2){
temp1[0]=\'0\';
strcat(temp1,n1);
for(i=0;i<=len1-len2;i++)
temp2[i] = \'0\';
strcat(temp2,n2);}
else if(len1<len2){
temp2[0]=\'0\';
strcat(temp2,n2);
for(i=0;i<=len2-len1;i++)
temp1[i] = \'0\';
strcat(temp1,n1);}
else{
temp1[0]=\'0\';
strcat(temp1,n1);
temp2[0]=\'0\';
strcat(temp2,n2);
}
printf(" %s. %s \\n",temp1,temp2);
len=strlen(temp1);
for(i=len-1;i>=0;i--){
if(temp1[i]-\'0\' > temp2[i]-\'0\')
n3[i] = (temp1[i] -\'0\' - temp2[i] -\'0\') +\'0\';//temp1과 temp2와 캐리값을 더한후에
//10으로 나눈 나머지 값을 문자열로 변환
else if(temp1[i]-\'0\' < temp2[i]-\'0\'){
if(temp1[i-1] == 0)
temp1[i-2] = (temp1[i-3] -\'0\' - 1)+\'0\';
temp1[i-1] = (temp1[i] -\'0\' - 1)+\'0\';
n3[i] = (10 + temp1[i] -\'0\' - temp2[i] -\'0\') +\'0\';
else
temp1[i-1] = (temp1[i] -\'0\' - 1)+\'0\';
n3[i] = (10 + temp1[i] -\'0\' - temp2[i] -\'0\') +\'0\';
}
else
n3[i] = (temp1[i] -\'0\' - temp2[i] -\'0\') +\'0\';
}
//10으로 나눈 값을 문자열로 변환
n3[len]=\'\\0\';
if(n3[0]==\'0\')
for(i=0;i<len;i++)
n3[i] = n3[i+1];//제일 앞자리가 0일 경우 다음값을 앞으로 가져와서 0을 없앰.
n3[len]=\'\\0\';
printf("%s \\n",n3);
}
void mult(const char n1[], const char n2[], char n3[]){
}
성님들은 문제를 해결해줄거라 믿음요!
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.