PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2010/05/11 04:15:01
Name Phwary
File #1 result.JPG (32.4 KB), Download : 5
File #2 myresult.JPG (70.2 KB), Download : 2
Subject c언어 프로그램 작성에 대한 질문입니다.




첨부사진은 윗사진이 모범답안
아래사진이 제가한 결과사지입니다;;

문제는 먼저 제목을 쓰고 (제목출력함수 따로구현)
숫자를 입력받아 1이면 단리계산 2이면 복리계산 3이면 종료하도록 하는 프로그램을 짜는건데요...

만약 1,2,3,외의 숫자를 치면 다시 처음으로 돌아가는 함수 getorder()작성.
또 마지막 총액을 출력하는함수
단리,복리 계산하는함수
를 따로 만들어야합니다...

이걸로 한 3시간 씨름했는데..(전 컴과 전공이 아니라 힘드네요,..)
도저히 값이 나오지를 않네요,
저번에 이어서 두번째로 c언어 질문글 올리는데.. 컴 고수분들 꼭 도와주세요......(꾸벅)



#include <stdio.h>
#include <math.h> //pow()를 쓰기위해서 삽입

void displayMenu(void);                              //메뉴출력함수원형
int getOrder(int oder);                                 //메뉴선택범위벗어난경우 다시입력받는함수원형
double printResult(double a);                        //총액출력 함수원형
double getRate(double a, double b, double c, double d);                      //복리,단리계산 함수원형

int main(void)
{
        int m,i;                                    //메뉴선택할 m for문에 쓸 i 변수 선언
        double s,a,n,r;

        displayMenu();
        
        for(i=0;i<10;i--)                        //3이 안나올경우 계속 반복하기위해서 i--를 씀.
        {
                printf("메뉴 중 하나를 선택해 주세요...");            
                scanf("%d",&m);                                      //메뉴선택 1,2,3,중선택위함.

                if(m==3)                                             //3을 입력하면 종료
                        break;                
                else if((m==1)||(m==2))                      //1또는 2의 입력이 될 경우
                {
                        printf("원금 년 이율<>을 차례로 space로 구분하여 입력하세요.\n");      
                        scanf("%d %d %d",&a, &n, &r);                              //원금, 년도, 이율  입력

                        s=getRate(m,a,n,r);         // s로 단,복리 계산하는 함수 호출
        
                        printResult(s);                //계산값 출력하는 함수 호출
                }
                else
                        getOrder(m);                 // 메뉴입력시 1,2,3, 이외에 다른걸 칠 경우에 함수 호출
        }
        
        return 0;

}                                                    //메인함수 종료

void displayMenu(void)                         //제목출력하는 함수 구현
{
        printf("*******************메뉴***********************\n");
        printf("1. 단리계산     2. 복리계산     3. 종료\n");
        printf("**********************************************\n");
}

int getOrder(int oder)             //위에서 메뉴번호 잘못 칠경우의 함수 구현
{
        printf("메뉴 중 하나를 선택해 주세요...");                     //메뉴 잘못치면 다시 printf와 scnaf가 돌아가도록함.
        scanf("%d",&oder);
                
        return 0;
}

double getRate(double a, double b, double c, double d)                //단,복리 계산하는 함수 구현
{
        if(a==1)                                              //여기서 a는 위 메인함수의 m, 즉 메뉴가 1일경우
                return b*(1+c*d);                        //원금b 연도c 이율d 의 단리계산을 리턴
        else if(a==2)                                    //여기서 a는 위 메인함수의 m, 즉 메뉴가 2일경우
                return b*pow((1+d),c);                 //pow함수써서... b*(1+d)^n 의 수식이 되도록 ->여기서 warning이 뜨던데잘못된건가요??}

double printResult(double a)    //위에 단,복리 계산값을 출력하는 함수 구현
{
        printf("%lf\n",a);         //메인함수에서 s로 getRate()를 지정했으므로 바로 숫자 출력하도록 함.
        
        return 0;
}



                

결과물이 위의 첨부그림처럼 나와야 하는데
저는 for문때문인지
계속해서 화면에 숫자인지 문자인지 계속해서 아래에서 위로 휘리릭휘리릭 반복이 자동으로 계속 되더라구요..
복리도 계산이 안되는것 같고..
어디가 잘못되었는지 가르쳐주시면 감사하겠습니다.





통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
10/05/11 04:35
수정 아이콘
for(i=0;i<10;i--) //3이 안나올경우 계속 반복하기위해서 i--를 씀.

-> i가 0부터 9까지 10번 돌리는건데 i--를 해주네요...
10/05/11 05:42
수정 아이콘
저 for 문을 while문으로 바꿔보심이 어떨지....
10/05/11 07:33
수정 아이콘
hiho님께서 말씀하신게 가장 간단한 답이죠. i-- -> i++
코딩하실때 무언가가 빠른속도로 올라가는 오류가 있다면, 반복문이 끝나지 않는 것입니다.
만약, 혼자서 찾아내실때는 쓰신 반복문들을 밑에서부터 차례대로 brake;를 넣으셔서 컴파일링 하세요.
(밑에서부터 brake;를 넣으시고, 반복문이 끝나는 시점이 있다면 그곳이 오류가 있는 부분입니다.)

예를 들어
for


while


2개의 반복문이 있다면, while에 break; 한번 넣어보시고 오류가 사라지면 while이 문제 있는 것이고,
오류가 지속되신다면 while문에 break; 지우시고 for문에 넣으셔서 체크하는 것이죠. (위에서부터 하신다면, 선언하신 변수들의
값의 변동으로 인하여 문제가 생길수도 있으니(이전 반복문에서 저장해놓은 값들을 이용할 경우), 밑에서부터 break;넣어주세요)
10/05/11 08:15
수정 아이콘
scanf("%d %d %d",&a, &n, &r);
-> scanf("%lf %lf %lf",&a, &n, &r);

double getRate(double a, double b, double c, double d)

.............
return b*pow((1+d),c);
<-빠져있네요

마지막에 return (double)0;

실행에는 상관 없겠지만 for(i=0;i<10;i--) 부분은 while(m!=3)으로 하시는게 좋겠네요.
10/05/11 12:34
수정 아이콘
다들 감사합니다!!
for를 while로 바꾸고 말씀해주신대로 다른것들도 몇가지 바꾸었더니 실행이 되네요...

답변 감사드립니다...
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
81380 우리 여친느님께서 황당한 일을 당하셨습니다. [1] 새벽오빠2444 10/05/11 2444
81379 대한축구협회 관련 질문입니다. Alexandre2643 10/05/11 2643
81378 여름 휴가 펜션 추천 부탁드립니다. 희망의 술을 따2294 10/05/11 2294
81377 angry birds 하시는분~!! 응응이3071 10/05/11 3071
81374 오랜만에 운동했는데 팔이 부었습니다 어머님 아버2087 10/05/11 2087
81373 ghost.gho 4.7기가 짜리 파일 하나 있는데.. [2] axbycz2098 10/05/11 2098
81372 영어 문법 질문입니다. [1] nickyo2150 10/05/11 2150
81371 해외에서 부재자 투표신청 어찌하나요? [2] Naraboyz2129 10/05/11 2129
81370 PSP go에 대해서 질문입니다 [3] nickyo2160 10/05/11 2160
81369 어머니께서 하실 고스톱 게임 추천 바랍니다. [4] 참외아빠2599 10/05/11 2599
81366 c언어 프로그램 작성에 대한 질문입니다. [5] Phwary3324 10/05/11 3324
81365 청바지 관련 질문입니다! [5] 데스2324 10/05/11 2324
81364 인텔 CPU의 역사를 알고 싶습니다. [7] videodrome2223 10/05/11 2223
81363 (운동문의)체중감량을 목적으로 헬스클럽 다닌지 한달이 넘었는데, 변화가없네요ㅠ [13] 왈월왈월2862 10/05/11 2862
81362 단맛드립 어디서 나온건가요?? [8] 날라라강민2644 10/05/11 2644
81361 저 키때문에 걱정되서요... [7] PoLoman2133 10/05/11 2133
81360 오래된 영화 - 인디언, 재판, 개(dog) 빵pro점쟁이1932 10/05/11 1932
81359 게시물 좀 찾아주세요~ [2] 윤하파이아!1912 10/05/11 1912
81358 똑딱이 추천좀 해주시면 안될까요? [3] 동네노는아이2114 10/05/11 2114
81357 동영상 재생 관련하여 질문 드립니다. [1] 유재석과면상2697 10/05/11 2697
81356 운동 방법에 대한 질문입니다 [3] PAPER1860 10/05/11 1860
81355 핸드폰 추천좀 부탁드립니다. [2] luvsic2122 10/05/11 2122
81354 뜬금없이 09 WBC 관련 질문입니다. [6] 4드라군2110 10/05/10 2110
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로