게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
정말 염치불구하고 죄송하지만 질문 C 언어 하나만드려도 될까요.
게시물ID : programmer_4137짧은주소 복사하기
작성자 :
추천 : 0
조회수 : 527회
댓글수 : 12개
등록시간 : 2014/06/22 17:38:11
옵션
  • 베스트금지
  • 본인삭제금지
염치 불구하지만 질문 하나 드려도 될까요.
지금 식을 입력하면 (예를들어 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);
 
}
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호