작성일 : 15-12-02 23:55
자기주도 c언어 프로그래밍 함수 2 자가진단 5
 글쓴이 : 공태현(kth119879)
조회 : 3,372  

#include <stdio.h>
#include <math.h>

void rep(double n[])
{
 int a, b, k;
 for(a=0;a<2;a++) {
  for(b=a+1;b<3;b++) {
   if(n[a]<n[b]) {
    k=n[a];
    n[a]=n[b];
    n[b]=k;
   }
  }
 }
}
void corp(double n[])
{
 double k[3];
 k[1]=n[1]+0.5;
 k[0] = ceil(n[0]);
 k[2] = floor(n[2]);
 k[1] = floor(n[1]);
    printf("%.0lf %.0lf %.0lf", k[0], k[2], k[1]);
}
int main()
{
 double n[3];
 int i;

 for(i=0;i<3;i++) {
  scanf("%lf", &n[i]);
 }
 rep(n);
 corp(n);

 return 0;
}

에서 어떤 부분이 틀린지 알려 주세요.


컴스쿨 15-12-10 11:36
 
디버깅을 통해 어떤 부분에서 어떤 문제가 해결이 안되는지 확인해서 구체적으로 질문을 해 주시기 바랍니다.
공태현 15-12-11 00:23
 
#include <stdio.h>
#include <math.h>

void rep(double n[])
{
 int a, b, k;
 for(a=0;a<2;a++) {
  for(b=a+1;b<3;b++) {
  if(n[a]<n[b]) {
    k=n[a];
    n[a]=n[b];
    n[b]=k;
  }
  }
 }
}
void corp(double n[])
{
 double k[3];
 n[1]=n[1]+0.5;
 k[0] = ceil(n[0]);
 k[2] = floor(n[2]);
 k[1] = floor(n[1]);
    printf("%.0lf %.0lf %.0lf", k[0], k[2], k[1]);
}
int main()
{
 double n[3];
 int i;

 for(i=0;i<3;i++) {
  scanf("%lf", &n[i]);
 }
 rep(n);
 corp(n);

 return 0;
}
에서 두번 째 항이 버림할 때 예를 들어 -166.56이면 -167이 나와야 하는 데 -166이 나옵니다. 어떻게 해야 하나요?
컴스쿨 15-12-14 11:47
 
다시한번 말씀드리지만 꼭 디버깅을 해보셔야 합니다.
디버깅을 하다보면 rep() 함수를 실행하고 나면 숫자가 바뀌는 과정에서 정수로 바뀌는 것을 확인할 수 있습니다.
숫자가 바뀌는 과정을 한줄씩 추적하다보면 k=n[a]; 를 실행할때 -166.56이 -166으로 k에 대입되는 것이 확인되지요. 그러면 k가 실수가 아니라 정수로 선언돼서 그렇다는 것을 금방 알 수 있습니다.
 
 

Total 652
번호 제   목 글쓴이 날짜 조회
392 구조체 자가진단1 (1) 공태현 01-05 4484
391 수강료 입금했습니다 (1) 정성훈 01-05 2917
390 문자열 2 자가진단 7 (1) 공태현 01-04 3433
389 문자열 형성 평가6 (1) 공태현 01-04 3960
388 문자열 자가진단 6 (1) 공태현 01-03 2883
387 함수 3 형성평가 3번 (1) 공태현 12-31 4058
386 자기주도 c언어 프로그래밍 e-book (1) 유민영 12-08 3053
385 자기주도 c언어 프로그래밍 함수 2 자가진단 7 (1) 공태현 12-03 3360
384 자기주도 c언어 프로그래밍 함수 2 자가진단 5 (3) 공태현 12-02 3373
383 dev-c++ (1) 공태현 11-30 5134
382 자기주도 c언어 프로그래밍 함수 1 형성평가 5번 (1) 공태현 11-30 3632
381 자기주도 c언어 프로그래밍 배열 2 형성평가 10 (2) 공태현 11-29 3401
380 저기 c언어강의 (1) 김인혁 11-26 3079
379 자기주도 c언어 프로그래밍 배열 2 형성평가 6 (1) 공태현 11-21 3454
378 동영상이 깨지고 정상 속도로 재생이 안됩니다. (1) 오세미 11-21 2924
377 자기주도 c언어 프로그래밍 배열 2 자가진단 6 (1) 공태현 11-19 4665
376 주기 주도 C언어 쿠폰 결제 (1) 한성진 11-15 3441
375 자기주도 c언어 프로그래밍 배열 1 형성평가 10번 (1) 공태현 11-12 3288
374 자기주도 c언어 프로그래밍 배열 1 형성평가 9번 (3) 공태현 11-12 3245
373 2009년 시도예선 초등부 9번문제 질문드립니다. (2) 정은주 11-02 3375
 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30    

회사소개 | 개인정보처리방침 | 이용약관 | 찾아오시는 길 | 이메일주소 무단수집거부 | 사업자정보확인
경기도 안양시 동안구 호계동 1065-10 협성골드프라자 601호 한컴에듀케이션(주) TEL : 031-388-8840 FAX : 031-388-0996
대표자 : 김동규 사업자번호 : 130-86-02870 통신판매업신고번호 : 제 2010-경기안양-888호
COPYTIGHT(C) 한컴에듀케이션(주), ALL RIGHT RESERVED.
담은강좌 : 0