2015-01-23 13 views
1

저는 비교적 간단한 수식을 사용하여 10 년간 금액을 계산하려고합니다. 모든 변수를 입력 할 수는 있지만 amount과 관련된 문제가 있다고 생각합니다.C - 간단한 수학 인수가 작동하지 않습니까?

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

int main(){ 
    double amount; /* amount on deposit */ 
    double principal; /* what's the principal */ 
    double rate; /* annual interest rate */ 
    int year; /* year placeholder and no. of total years */ 
    int yearNo; 

    printf("What is the principal? "); 
    scanf("%d", &principal); 
    printf("What is the rate (in decimal)? "); 
    scanf("%lf", &rate); 
    printf("How many years? "); 
    scanf("%d", &yearNo); 

    printf("%4s%21s\n", "Year", "Amount on deposit"); 

    /* calculate the amount on deposit for each of ten years */ 
    for (year = 1; year <= yearNo; year++){ 
     amount = principal * pow(1.0 + rate, year); 
     printf("%4d%21.2f\n", year, amount); 
    } 
    return 0; 
} 

저는 C를 처음 사용하지만 책의 예를 따르고 있습니다. 이 책은 숫자를 "하드 코드"하여 사용자가 입력 한 데이터를 계산하는 방법을 배우려고합니다.

제가 amount 인 것으로 생각하거나 나중에 %f으로 참조하는 방법이 있습니까? 어떤 아이디어에 대한

감사합니다 :) 기능의 scanf() 가족과 함께

+3

모든 경고를 사용 - 그것은 당신에게 시간을 절약 할 수 :'는 scanf ("% d 개"를, 교장),' – chux

+0

@chux - 내가 가진 것 어떤 종류의 컴파일러를 들여다 보도록하겠습니다. 저는 메모장을 사용하고 있습니다. ++에 대해서는 컴파일러가 없습니다. 명령 줄에서 GCC를 사용하여 컴파일하므로 컴파일하기 전에 오류를 확인하는 방법을 알아야합니다. "gcc filename.c -o filename.exe"를 사용하여 컴파일합니다. – user3718365

+0

"gcc -Wall"로 시작하십시오. – chux

답변

2

, %dint입니다하지만 %lfdouble입니다.

먼저해야 할 일은 컴파일러에서 경고가 표시되도록하는 것입니다. 일부 컴파일러 (GCC, Clang)는 이와 같은 형식 오류를보고합니다.

다음으로해야 할 일은 읽은 값을 인쇄하는 것입니다. 방금 읽은 값에 대한 쓰레기가 나오면 문제가 있음을 알게됩니다.

그리고 그 후

, 당신은 변환이 성공했는지 확인하십시오

if (scanf("%lf", &principal) != 1) 
    …oops! input error or EOF… 
+0

아하! 내가 고려하지 않은 것은 교장이었습니다. 고마워요! – user3718365

+1

코멘트가 도착한 시간에 대한 편집에서 언급했듯이 문제가되는 입력은'scanf()'입니다. –

+0

나는 컴파일러를 들여다 봐야 할 것이다. 나는 메모장 + +를 사용하여 간단한 명령 줄 g ++ (gcc filename.c -o filename.exe)를 컴파일하고 exe를 실행합니다. – user3718365