2013-08-02 2 views
0

Итак, я пытаюсь написать базовую программу, которая будет отслеживать баланс, и вы можете сделать вывод, внести депозит и вообще выйти из программы. Это код.Оператор C++ if в функции

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

double balance = 0, withdraw = 0, deposit = 0; 
string choice; 

class Bank 
{ 
    public: 
     void withdrawMoney() 
     { 
      if(balance - withdraw >= 0) 
      { 
       balance = balance - withdraw; 
      } 
      else 
      { 
       cout << "$5 penalty for attempting to withdraw more than you have."; 
       balance -= 5; 
      } 
     } 
    public: 
     void depositMoney() 
     { 
      balance = balance + deposit; 
     } 
}; 
int main() 
{ 
    Bank bankObject; 
    cout << "Welcome to the Bank Program!" << endl; 
    while(true) 
    { 
     cout << "Would you like to make a withdrawal, a deposit, or quit the program: "; 
     cin >> choice; 
     if(choice.compare("withdrawal") == 0) 
     { 
      cout << "Please enter the amount to withdraw: "; 
      cin >> withdraw; 
      bankObject.withdrawMoney(); 
      cout << "New balance is: $" << balance << endl; 
     } 
     else if(choice.compare("deposit") == 0) 
     { 
      cout << "Please enter the amount to deposit: "; 
      cin >> deposit; 
      bankObject.depositMoney(); 
      cout << "New balance is: $" << balance << endl; 
     } 
     else if(choice.compare("quit") == 0) 
     { 
      break; 
     } 
     else 
     { 
      cout << "Invalid input." << endl; 
     } 
     cout << "Would you like to try again or quit: "; 
     cin >> choice; 
     if(choice.compare("quit") == 0) 
     { 
      break; 
     } 
    } 
    cout << "Thank you for using the Bank Program." << endl; 
    return 0; 
} 

Я новичок в C++, (я начал сегодня), но у меня есть предыдущий опыт работы с Java. Я постоянно получаю сообщение об ошибке при методе вывода в первом случае if, говоря, что у меня есть недопустимое использование функции-члена. Любая помощь будет оценена по достоинству. Кроме того, не уверен, если это имеет значение, но я использую IDE Code :: Blocks.

EDIT: первая проблема исправлена, но теперь есть еще один, когда я запускаю код, я могу пройти через него один раз просто отлично, но когда я попытаюсь пройти второй раз, набрав повторить попытку, он застрянет в цикл и отвечает на первый вопрос как «неправильный ввод». Помогите?

+1

Неверно указанная вами ошибка – artsylar

+0

CodeBlocks сообщает мне: Ошибка в функции члена 'void Bank :: remove() error: неверное использование функции-члена (вы забыли'() '?) – SiliconArmour

ответ

3

Вы используете withdraw как глобальную переменную, так и имя метода. Переименование одного из них должно исправить эту конкретную ошибку.

Редактировать: Когда вы набираете «попробуйте еще раз», ваша программа читает «try» (потому что по умолчанию это разбить вход по пробелам), оставив «снова» в буфере для следующего чтения с cin. Вы можете проверить это с помощью нескольких команд вывода отладки.

+0

Oh ... даже не подумал об этом. Благодаря! – SiliconArmour

+0

-> Добро пожаловать в Банковскую программу! Вы хотите сделать вывод средств, внести депозит или выйти из программы: ** депозит ** Пожалуйста, введите сумму депозита: ** 100 ** Новый баланс: $ 100 Хотите еще раз попробовать или выйти : ** попробуйте еще раз ** Вы хотите сделать вывод средств, внести депозит или выйти из программы: * Неверный ввод. * Хотите еще раз попробовать или выйти: <- Он будет продолжать делать это до тех пор, пока Я просто выхожу из программы. Кто-нибудь знает, почему? ** Полужирный ** текст - это ввод от меня, а текст * курсивом * - это ввод, который дал компьютер. Все в стрелках - это текст консоли. – SiliconArmour

+0

@SiliconArmour: Вполне нормально задавать другой вопрос, если найти новую проблему (и больше людей это увидит именно так). Но я обновил свой ответ в ответ на ваше редактирование. Удачи! –

Смежные вопросы