염치 불구하지만 질문 하나 드려도 될까요.
지금 식을 입력하면 (예를들어 123+456) 그 결과를 계산하는 소스를 구상중입니다.
연산자 +를 기준으로 피연산자를 구분지어서 배열로 저장하였습니다.
그리고 그 값을 각각 num_1 num_2에 나누어 저장하였구요
그리고 num_1은 또 num_F1과 num_B1으로 나누어 정수부분과 소숫점부분으로 나누어 저장하려고 합니다. num_2도 마찬가지구요
중간점검으로 디버깅을 해서 num_F1과 num_B1 , num_F2와 num_B2 를 출력받아 확인해보니까
소수는 잘 나오는데 정수는 이상한값이 나오는군요...
혹시 어떤게 문제인지 여쭐수 있을까요
하루종일 이거만잡고있으니까 머리에 쥐가날것같아요 ㅠㅠ
#include <stdio.h>
#include <string.h>
#define SIZE 100
main()
{
int a, b;
int c=0;//첫번째의 자릿수
int d=0;//두번째의 자릿수
int e=0;
int f=0;
int operation=0;
int op = 0;
char A_num[SIZE];
char num_1[SIZE];
char num_2[SIZE];
char num_F1[SIZE];
char num_B1[SIZE];
char num_F2[SIZE];
char num_B2[SIZE];
char result[SIZE];
printf("계산식을 입력하시오\n");
scanf("%s",A_num);
while(1)
{
if((A_num[op] == '-') || (A_num[op] == '+')) // 연산자 구분. 연산자 위치가나올때까지 while문을 계속 실행하여 연산자가 있는 위치 포착.
{
if(A_num[op] == '+')
{
operation = 1;
break;
};
if(A_num[op] == '-')
{
operation = 2;
break;
}
}
op++;
}
for(a=0, b=0; a<op; a++, b++) //피연산자 1 저장
{
num_1[b] = A_num[a];
num_1[b+1] = '\0';
}
for(a=op+1, b=0; A_num[a] != '\0'; a++, b++) // 연산자 이후부터 저장
{
num_2[b] = A_num[a]; // 피연산자 2 저장
num_2[b+1] = '\0';
}
while(1)
{
if(num_1[c] == '.')
{
break;
}
if(c==SIZE)
{
break;
}
c++;
}
if(c!=SIZE)
{
for(a=0, b=0; a<c; a++, b++)
{
num_F1[a] = num_1[a];
num_F1[b+1]='\0';
}
for(a=c+1, b=0; num_1[a] != '\0'; a++, b++)
{
num_B1[b] = num_1[a];
num_B1[b+1]='\0';
}
}
else
{
for(e=0; num_1[e] != '\0'; e++)
{
num_F1[e]=num_1[e];
num_F1[e+1]='\0';
num_B1[0]=0;
num_B1[1]='\0';
}
}
while(1)
{
if(num_2[d] == '.')
{
break;
}
if(d==SIZE)
{
break;
}
d++;
}
if(d!=SIZE)
{
for(a=0, b=0; a<c; a++, b++)
{
num_F2[b] = num_2[a];
num_F2[b+1]='\0';
}
for(a=d+1, b=0; num_2[a] != '\0'; a++, b++)
{
num_B2[b] = num_2[a];
num_B2[b+1]='\0';
}
}
else
{
for(f=0; num_2[f] != '\0'; f++);
{
num_F2[f]=num_2[f];
num_F2[f+1]='\0';
num_B2[0]=0;
num_B2[1]='\0';
}
}
printf("%s\n",num_F1);
printf("%s\n",num_B1);
printf("%s\n",num_F2);
printf("%s\n",num_B2);
}