Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>You are missing a few curly braces in your read function.</p> <p>I redid it here:</p> <pre><code> void read(char &amp;readStatus, char &amp;var, bool &amp;varStatus) { term t; // term variable to push it into the list of terms char c, lc, sign; // c = current char, lc = lastchar and sign the '+' or '-' sign before a coefficient int coef, pow; //variables to pass the coef and power to term t bool coefRead = false, powRead = false; //reading status of coef and power while (c != '\r') { //we read characters until carriage return c = getch(); // get the new imputed char if (tolower(c) == 'r' || tolower(c) == 'q') { //if the user inputed r or q we reset the input or quit the program readStatus = c; //pass current char value to readStatus so the program will know what to do next return; //aborting the reading process } else { if (printable(c)) cout &lt;&lt; c; //print on screen only the correct characters if (!coefRead &amp;&amp; !powRead) //we set term coef to the inputed value { if (isdigit(c)) { if (isdigit(lc)) coef = coef * 10 + int(c); //if the last char was also a digit we multiply the last value of coef by 10 and add current char else { if (sign == '-') coef = -(int(c));//if the current coef has '-' before we set coef to it's negative value else coef = int(c); //this means a new term's coef is read } //end else }//end if isdigit(c) if (!isdigit(c) &amp;&amp; isdigit(lc)) coefRead = true; //if the last char was a digit and we reached the var name we stop reading the coefficient } //end if else if (coefRead &amp;&amp; !powRead) //after coefficient is read we get the term's varname and power { if (isdigit(c)) { // just like in the case with coefficient we read the power until the current char is not a digit if (isdigit(lc)) pow = pow * 10 + int(c); else pow = int(c); } else if (isalpha(c) &amp;&amp; isdigit(lc) &amp;&amp; !varStatus) { //if the last char was a digit and the current not we reached the var name var = c; //also even though the variable is inputed more than once we save it only once varStatus = true; //we mark the var name as read } else { if (isdigit(lc)) powRead = true; } } //end else if else { if (c == '+' || c == '-') { // if a sign was inputed it means a new term is coming and we push the current term to the list and reset t.coef = coef; // coefRead and powRead so we can read another term t.pow = pow; poly.push_back(t); sign = c; coefRead = false; powRead = false; } } lc = c; // we save the last character } //end else } //end while } //end function </code></pre> <p><strong>EDIT</strong></p> <p>I also fixed the print function:</p> <pre><code> void print(char var) { for ( i=poly.begin() ; i != poly.end(); i++ ) { //going through the entire list to retrieve the terms and print them if (i == poly.end()) { // if we reached the last term if (i-&gt;pow == 0) //if the last term's power is 0 we print only it's coefficient cout &lt;&lt; i-&gt;coef; else cout &lt;&lt; i-&gt;coef &lt;&lt; var &lt;&lt; "^" &lt;&lt; i-&gt;pow; //otherwise we print both } else { if (i-&gt;coef &gt; 0) //if the coef value is positive cout &lt;&lt; i-&gt;coef &lt;&lt; var &lt;&lt; "^" &lt;&lt; i-&gt;pow &lt;&lt; " + "; //we also add the '+' sign else cout &lt;&lt; i-&gt;coef &lt;&lt; var &lt;&lt; "^" &lt;&lt; i-&gt;pow &lt;&lt; " - "; // otherwise we add '-' sign } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload