1

しばらくの間、このプログラムに取り組んでいます。(いくつかの問題があり、ここで数回尋ねました。)しかし、別の問題に遭遇しました!プログラムがアカウントの種類を 2 回要求します。原因や修正方法がわかりません。どんな助けでも大歓迎です、ありがとう!

    /*
project3.cpp
Andre Fecteau
CSC135-101
October 29, 2013
This program prints a bank's service fees per month depending on account type
*/

#include <iostream>
using namespace std;
/*
Basic Function for Copy Paste
<function type> <function name> (){

// Declarations
// Initalizations
// Input
// Process
// Output
// Prolouge
}
*/

void displayInstructions (){
// Declarations
// Initalizations
// Input
// Process
// Output
cout <<"| -------------------------------------------------------------- |" << endl;
cout <<"| ---------- Welcome to the bank fee calculator ---------------- |" << endl;
cout <<"| -------------------------------------------------------------- |" << endl;
cout <<"| This Program wil ask you to eneter your account number.        |" << endl;
cout <<"| Then it will ask for your account type Personal or Commercial. |" << endl;
cout <<"| Then ask for the amount of checks you have written.            |" << endl;
cout <<"| Lastly it will output how much your fees are for this month.   |" << endl;
cout <<"| -------------------------------------------------------------- |" << endl;
cout << endl;
// Prolouge
}

int readAccNumb(){
  // delarations
  int accNumber;
  // intitalizations
  accNumber = 0.0;
  // input
  cout << "Please Enter Account Number:";
  cin >> accNumber;
  // Procesas
  // output
  // prolouge
  return accNumber;
}

int checksWritten (){
// Declarations
int written;
// Initalizations
written = 0.0;
// Input
cout <<"Please input the amount of checks you have written this month:";
cin >> written;
// Output
// Prolouge
return written;
}

char accType (){
// Declarations
char answer;
int numberBySwitch;
// Initalizations
numberBySwitch = 1;
// Input
while (numberBySwitch == 1){
    cout << "Please Enter the acount type (C for Comerical and P for Personal):";
    cin >> answer;
// Process
switch (answer){
    case 'p':
        answer = 'P';
        numberBySwitch += 2;break;
    case 'P':
        numberBySwitch += 2;break;
    case 'c':
        answer = 'C';
        numberBySwitch += 3;break;
    case 'C':
        numberBySwitch += 3;break;
    default:
        if(numberBySwitch == 1) {
        cout << "Error! Please enter a correct type!" <<endl;
        }
    }
}
// Output
// Prolouge
return answer;
}

int commericalCalc(int checksWritten){
// Declarations
int written;
int checkPrice;
// Initalizations
checkPrice = 0.0;
// Input
// Process
if(written < 20){
    checkPrice = 0.10;
}
// Output
// Prolouge
return checkPrice;
}

int personalCalc(int checksWritten){

}

double pricePerCheck(char accType, int checksWritten){
// Declarations
double price;
char answer;
// Initalizations
price = 0.0;
// Input
// Process
if(accType == 'P'){
}
if(accType == 'C'){
    if(checksWritten < 20){
        price = 0.10;
    }
}
// Output
// Prolouge
return price;
}

int main(){
  // Declarations
  int accountNumb;
  char theirAccType;
  int writtenChecks;
  double split;
  // Initalizations
  accountNumb = 0.0;
  writtenChecks = 0.0;
  split = 0.0;
  theirAccType = ' ';
  // Input
  displayInstructions();
  theirAccType = accType();
  accountNumb = readAccNumb();
  split = pricePerCheck(accType(), checksWritten());
  // Output
cout << endl;
cout << "Account Type: " << theirAccType << endl;
cout << "Check Price: " << split << endl;
  // Prolouge
 return 0;
}
4

3 に答える 3

0

呼び出すときは、呼び出しの結果ではなくpricePerCheck()、呼び出しの結果を渡します。最初の呼び出しの結果を保存しましたが、2 番目の呼び出しを行っています。C++ は関数呼び出しの結果を記憶しません。accType()theirAccType

ところで、より高い警告レベルでコードをコンパイルしたい! あなたのコードには多くの致命的な問題があります:

  1. personalCalc()を返すように宣言されてintいますが、何も返しません(ただし、関数は呼び出されません。つまり、質問は明らかにSSCCEではありません。
  2. この関数commericalCalc()は、初期化されていない変数 ( written) の値を使用します。名前も悪いようです。
于 2013-11-08T21:53:46.710 に答える