C ++ ошибка C2059 - PullRequest
       10

C ++ ошибка C2059

0 голосов
/ 13 января 2010

решаемые


Когда я пытаюсь скомпилировать эту программу, я получаю следующие ошибки:

(50): ошибка C2059: синтаксическая ошибка: '<=' <p>(50): ошибка C2143: синтаксическая ошибка : отсутствует ';' до '{'

(51): ошибка C2059: синтаксическая ошибка: '>'

(51): ошибка C2143: синтаксическая ошибка: отсутствует ';' до '{'

(62): ошибка C2059: синтаксис ошибка: 'else'

(62): ошибка C2143: синтаксическая ошибка: отсутствует ';' до '{'


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

class income {
private:
    double incm;
    double subtract;
    double taxRate;
    double add;
    char status;
public:
    void setStatus ( char stats ) { status = stats; }
    void setIncm (double in ) { incm = in; }
    void setSubtract ( double sub ) { subtract = sub; }
    void setTaxRate ( double rate ) { taxRate = rate; }
    void setAdd ( double Add ) { add = Add; }

    char getStatus () { return status; }
    double getIncm () { return incm; }
    double getsubtract () { return subtract; }
    double getTaxRate () { return taxRate; }
    double getAdd () { return add; }
    void calcIncome ();
};

//calcIncome
int main () {
    income _new;
    double ajIncome = 0, _incm = 0;
    char status = ' ';
    bool done = false;
    while ( !done ) {
        cout << "Please enter your TAXABLE INCOME:\n" << endl;
        cin >> _incm;
        if(cin.fail()) { cin.clear(); }
        if ( _incm <= 0) { cout << "the income must be greater than 0... \n" << endl; }
        if ( _incm > 0) { done = true; _new.setIncm(_incm); }
    }

    done = false;
    char stt [2] = " ";
    while ( !done ) {
        cout << "Please declare weather you are filing taxes jointly or single" << "\n";
        cout << "\t's' = single\n\t'm' = married" << endl;
        cin >> stt;
        if(cin.fail()) { cin.clear(); }
        if ( status == 's' || status == 'm' ) { done = true; _new.setStatus(stt[0]); }
        //if else { }
    }

    return 0;
};

Это часть домашнего задания, поэтому любые указания по улучшению моего программирования были бы ** великолепны **

Примечание. Я использую Windows 7 с VS express C ++ 2008

Ответы [ 2 ]

2 голосов
/ 13 января 2010

income - это название вашего класса. _incm - это имя вашей переменной. Возможно, вы имели в виду это (обратите внимание на использование _incm, а не income):

if (_incm <= 0) { cout << "the income must be greater than 0... \n" << endl; }
if (_incm > 0) { done = true; _new.setIncm(_incm); }

Часто вы используете CamelCase для имен классов и строчные буквы для имен переменных экземпляра. Поскольку C ++ чувствителен к регистру, они не будут конфликтовать друг с другом, если используют другой регистр.

2 голосов
/ 13 января 2010

Ваша переменная называется incom, а не income.income относится к типу, поэтому компилятор запутывается, и вы получаете синтаксическую ошибку при попытке сравнить этот тип со значением в строке 50.

Одно замечание для улучшения программирования - использовать большеразличные имена переменных, чтобы избежать таких недоразумений ...;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...