0

私は関数を書くのが初めてです。これは、特に宿題のために参照パラメーターによる呼び出しを使用する最初の試みです。このプログラムは、ユーザーが入力した借入額、毎月の支払い、および金利に基づいて、ローンの返済にかかる時間を計算する必要があります。プログラムは、ユーザーが毎月の利息額よりも少ない支払い番号を入力していないことを確認し、負の整数などをチェックする必要があります.

私がコメントアウトした領域は、そのすべてを参照パラメーターによる呼び出しを使用する関数に変換しようとする前の最初の作業でした。その時点で、プログラムは正常に実行され、探していたものから 1 ドル以内で出力が得られました。このようにプログラムを書き直して関数にしようとした後、プログラムはコンパイルされますが、利率を求めた後、最後の cout ステートメントで中断します。私の問題は、パーセントを小数に変換する Interest1 関数内のどこかにあると思いますが、後で残りの関数をスキップする理由がわかりません。

この問題や、プログラム自体に問題があると思われるその他の問題についてアドバイスをいただければ幸いです。

#include <iostream>
#include <fstream>
using namespace std;

double amount();
double interest1();
double pay(double amt, double interest);
void  payoff(double monthly, double Minpayment,double borrow,double interest, double&   
totalinterest,int& month);


int main()
{
 double monthly,month,totalinterest;

 cout << fixed;
 cout <<showpoint;
 cout <<setprecision(2);

double borrow=amount();
double interest=interest1();
double Minpayment=pay(borrow, interest);
void payoff(double monthly,double Minpayment,double borrow,double interest,double&       
totalinterest,int& month);

/*
//   cout << "What is the monthly payment amount? \n";
//   cin >> monthly;
//      if(monthly<Minpayment)
//       {
//          cout << "You must make payments of at least: " << Minpayment++ << endl;
//          cout << "Because your monthly payment is " << Minpayment << endl;
//          cout << "Dont get overwhelmed with debt!!!!!! \n";
//        }
//      else
//
//      {
//         int month = 1;
//         double totalinterest=0;
//         do
//          {
//            double Minpayment=pay(borrow, interest);
//            borrow=(borrow+Minpayment)-monthly;
//            totalinterest=totalinterest+Minpayment;
//            month++;
//          }while(borrow>monthly);
*/  
         cout << "Your debt will be paid off in " << month << " months \n";
         cout <<" with a final payment of " << borrow << endl;

         cout << "You paid " << totalinterest << " in interest. \n";

return 0;
}

double amount()
{
double borrow,amt;
        do
        {
                cout << "How much money do you want to borrow? \n";
                cin >> amt;

        if(amt<1)
        cout << "You must enter a positive number!";

        }while(amt<1);
borrow = amt;
return  borrow;
}


double interest1()
{
double rate;
  do
  {
    cout << "What is the annual interest rate expressed as a percent? \n";
    cin >> rate;
              if(rate<1)
             cout << "You must enter a positive number!";

  }while(rate<1);

double interest = (rate/12)*.01;
return  interest;
}   

double pay(double borrow,double interest)

{

double Minpayment=borrow*interest;
return  Minpayment;  
}


void payoff(double monthly,double Minpayment,double borrow,double interest, double& 
totalinterest,int& month)
{
    cout << "What is the monthly payment amount? \n";
    cin >> monthly;
      if(monthly<Minpayment)
        {
          cout << "You must make payments of at least: " << Minpayment++ << endl;
          cout << "Because your monthly payment is " << Minpayment << endl;
          cout << "Dont get overwhelmed with debt!!!!!! \n";
        }
      else
      {
        int month = 1;
         do
          {
            double Minpayment=pay(borrow, interest);
            borrow=(borrow+Minpayment)-monthly;
            double totalinterest=totalinterest+Minpayment;
            month++;

          }while(borrow>monthly);
       } 
 }
4

1 に答える 1

1

内で関数を呼び出す場合main、パラメーターの型を指定する必要はもうありません。

void payoff(double monthly,double Minpayment,double borrow,double interest,double&       
    totalinterest,int& month);  //wrong

する必要があります

payoff(monthly, Minpayment,borrow, interest, totalinterest, month);

関数を定義するときは、関数のパラメーター リストにdouble&andを配置する必要があります。int&

于 2013-04-12T00:40:12.877 に答える