2015-11-30 2 views
0

Итак, у меня есть программа для класса, в которой Im-запись выполняется, за исключением функции печати. Функция ввода правильная, и логическое значение будет обновляться во входной функции, но когда я пытаюсь перейти к функции печати, она всегда печатает (-), и если пользователь вводит «Y», тогда предполагается обходить (-) и просто распечатайте фракцию. Если кто-то все равно хочет заставить его работать, я чувствую, что я все испробовал.Функция печати в классе, не обновляющемся при обновлении булева.

Редактировать: Функция печати работает, когда я печатаю только две фракции в главном, которые являются f1 и f2, но проблема возникает, когда передаю положительное значение в функцию печати, на которую я верю.

class fraction 

{ 
    private: 
     int numerator; 
     int denom; 
     bool positive; 

    public: 
     void inputFrac(); 
     void printFrac(); 

     fraction fracMult(fraction& b); 
     fraction fracDiv(fraction& b); 
     fraction fracAdd(fraction& b); 
     fraction fracSub(fraction& b); 
}; 

void fraction::printFrac() 
{ 
if (positive=true) 
    { 
     cout << "-" << numerator << "/" << denom; 
    } 
    else 
    { 
     cout << "+" << numerator << "/" << denom; 
    } 
} 
void fraction::inputFrac() 
{  
    char tempchar1; 
    fraction tempchar; 

    cout<<"Please input the numerator "; 
    cin>>numerator; 
    cout<< "Please input the denominator "; 
    cin>>denom; 
    cout<<"Is the fraction positive? (Y or N) "; 
    cin>>tempchar1; 

    if((tempchar1=='Y')) 
    { 
     positive=true; 

    } 
    else 
    { 
     positive=false; 
    } 
} 

ответ

0

Вы назначаете в своем заявлении if. Изменение:

if (positive=true) 

к:

if (positive==true) 
+3

Или даже: 'if (positive)' – Buddy

+0

И это хороший пример того, что вы лучше привыкли писать '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ] == variable) '. Потому что даже когда вы делаете ошибку и записываете '=' вместо '==', вы получаете ошибку компиляции. Конечно, это не поможет, если вы сравниваете 2 неконстантных переменных, но по крайней мере это помогает сбрить некоторые ошибки, подобные этим. –

+0

Я добавил это, и фракция печатает как любой первый знак, поэтому он продолжает печатать с (-), даже если я поместил Y для обеих фракций, когда он спрашивает, работает ли его положительное Редактирование: функция печати работает, я просто попробовал это с f1 и f2, и он распечатал их с правильными знаками, но по какой-то причине, когда я отправляюсь распечатывать их, когда они передают функции, которые он не работает – John

0

В функции printFrac, у вас есть if (positive=true). Это неверно, за то, что вы делаете. Вместо этого вы должны иметь if (positive) {/*stuff*/}.

+0

Я добавил это, и фракция печатает как любой первый знак, поэтому он продолжает печатать с (-), даже если я положил Y для обе фракции, когда она спрашивает, является ли ее положительный – John

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