Jump to content

Newbie With C++, Need Help


Recommended Posts

Ok, i have *tried* to make a calculator for one of my first programs and i get a few errors on compile, can anyone help me fix these?

 

Here's my code

 

#include <iostream.h>



struct answer{

 int multiply;

 int add;

 int divide;

 int subtract;

}



{

main()



int Choice;

 int mulnumone;

 int mulnumtwo;

int addnumone;

int addnumtwo;

int divnumone;

int divnumtwo;

int subnumone;

int subnumtwo;



while (1) {



 // Menu Heading



 cout << "ttt//////////////////////////n";

 cout << "ttt/////// CALCULATOR ///////n";

 cout << "ttt//////////////////////////n";



 //Menu Choices



 cout << "nttt1) Multiply Numbers n";

 cout << "ttt2) Add Numbers n";

 cout << "ttt3) Divide Numbers n";

 cout << "ttt4) Subtract Numbers n";

 cout << "ttt5) Exit the calculator n";

 cout << "ntttPlease Enter your choice:  ";



 // Find users choice



 cin >> Choice;



 // Accordng to choice Calculate users input



 // Multiplication

 

if (Choice == 1)

   cout << "ntttYou chose to Multiply Numbers.nttt";

 cout << "ntttEnter the numbers that you want to Multiply, after you type each nimber, press enternttt";

 cout << "ntttEnter First Number:  nttt";

 cin >> mulnumone;

 cout << "ntttEnter Second Number:  nttt";

 cin >> mulnumtwo;



 // Calculate the Multiplication Equation



 answer.multiply = mulnumone * mulnumtwo; 

 cout << mulnumone << " times " << mulnumtwo << " equals " << answer.multiply << "n";



 // Addition 



else if (Choice == 2)

   cout << "ntttYou chose to Add Numbers.nttt";

 cout << "ntttEnter the numbers that you want to Add, after you type each nimber, press enternttt";

 cout << "ntttEnter First Number:  nttt";

 cin >> addnumone;

 cout << "ntttEnter Second Number:  nttt";

 cin >> addnumtwo;



 // Calculate the Addition Equation



 answer.add = mulnumone + mulnumtwo;

 cout << addnumone << " plus " << addnumtwo << " equals " << answer.add << "n";



 // Division



else if (Choice == 3)

  cout << "ntttYou chose to Divide Numbers.nttt";

cout << "ntttEnter the numbers that you want to Divide, after you type each nimber, press enternttt";

cout << "ntttEnter First Number:  nttt";

cin >> divnumone;

cout << "ntttEnter Second Number:  nttt";

cin >> divnumtwo;



// Calculate the Division Equation



answer.divide = divnumone / divnumtwo;

cout << divnumone << " divided by " << divnumtwo << " equals " << answer.add << "n";



// Subtraction



else if (Choice == 4)

cout << "ntttYou chose to Subtract Numbers.nttt";

cout << "ntttEnter the numbers that you want to Subtract, after you type each nimber, press enternttt";

cout << "ntttEnter First Number:  nttt";

cin >> subnumone;

cout << "ntttEnter Second Number:  nttt";

cin >> subnumtwo;



//Calculate the Subtraction Equation



answer.subtract = subnumone / subnumtwo;

cout << subnumone << " minus " << subnumtwo << " equals " << answer.subtract << "n";



// If users choice was to exit the calculator, exit



else if (Choice == 5)

  {

    cout << "ntttYou chose to Exit the Calculator. Bye.nttt";

    break;

  }



// If users Choice is not valid, must enter again



else

  {

    cout << "ntttYour choice is NOT valid!n";

    cout << "tttPlease enter a CORRECT choice!nnttt";

  }

}



return 0;

}

 

and here is g++'s output (through emacs)

 

g++ -O2 calculator.cpp -o calculator -Wno-deprecated

calculator.cpp:13: parse error before `{' token

calculator.cpp:26: parse error before `while'

calculator.cpp:31: syntax error before `<<' token

calculator.cpp:32: syntax error before `<<' token

calculator.cpp:36: syntax error before `<<' token

calculator.cpp:37: syntax error before `<<' token

calculator.cpp:38: syntax error before `<<' token

calculator.cpp:39: syntax error before `<<' token

calculator.cpp:40: syntax error before `<<' token

calculator.cpp:41: syntax error before `<<' token

calculator.cpp:45: syntax error before `>>' token

calculator.cpp:53: syntax error before `<<' token

calculator.cpp:54: syntax error before `<<' token

calculator.cpp:55: syntax error before `>>' token

calculator.cpp:56: syntax error before `<<' token

calculator.cpp:57: syntax error before `>>' token

calculator.cpp:62: syntax error before `<<' token

calculator.cpp:68: syntax error before `<<' token

calculator.cpp:69: syntax error before `<<' token

calculator.cpp:70: syntax error before `>>' token

calculator.cpp:71: syntax error before `<<' token

calculator.cpp:72: syntax error before `>>' token

calculator.cpp:77: syntax error before `<<' token

calculator.cpp:83: syntax error before `<<' token

calculator.cpp:84: syntax error before `<<' token

calculator.cpp:85: syntax error before `>>' token

calculator.cpp:86: syntax error before `<<' token

calculator.cpp:87: syntax error before `>>' token

calculator.cpp:92: syntax error before `<<' token

calculator.cpp:98: syntax error before `<<' token

calculator.cpp:99: syntax error before `<<' token

calculator.cpp:100: syntax error before `>>' token

calculator.cpp:101: syntax error before `<<' token

calculator.cpp:102: syntax error before `>>' token

calculator.cpp:107: syntax error before `<<' token

calculator.cpp:122: syntax error before `<<' token



Compilation exited abnormally with code 1 at Mon Sep 15 23:09:19

 

Help would be much appreciated

 

Thanks in advance.

Link to comment
Share on other sites

Okay

 

firstly your structure definition needs to end with a semicolon };

 

you must create an instance of your structure before you can use it "answer answer;"(created an instance of the answer structure named answer, it could be done when you make the structure).

 

you had { before main() not after as was mentioned

you needed to declare what type main() is eg "int main()" so g++ will know what main will return

you could use void main() but thats not recommended.

 

enclose your else if statment code in brackets if there is a fair bit of it.

 

that was about it, here is a version that compiles

 

#include <iostream.h>



struct answer{

 int multiply;

 int add;

 int divide;

 int subtract;

};





int main()

{



int Choice;

int mulnumone;

int mulnumtwo;

int addnumone;

int addnumtwo;

int divnumone;

int divnumtwo;

int subnumone;

int subnumtwo;



answer answer;



while (1) {



 // Menu Heading



 cout << "ttt//////////////////////////n";

 cout << "ttt/////// CALCULATOR ///////n";

 cout << "ttt//////////////////////////n";



 //Menu Choices



 cout << "nttt1) Multiply Numbers n";

 cout << "ttt2) Add Numbers n";

 cout << "ttt3) Divide Numbers n";

 cout << "ttt4) Subtract Numbers n";

 cout << "ttt5) Exit the calculator n";

 cout << "ntttPlease Enter your choice:  ";



 // Find users choice



 cin >> Choice;



 // Accordng to choice Calculate users input



 // Multiplication



if (Choice == 1)

{

 cout << "ntttYou chose to Multiply Numbers.nttt";

 cout << "ntttEnter the numbers that you want to Multiply, after you type each nimber, press enternttt";

 cout << "ntttEnter First Number:  nttt";

 cin >> mulnumone;

 cout << "ntttEnter Second Number:  nttt";

 cin >> mulnumtwo;



 // Calculate the Multiplication Equation



 answer.multiply = mulnumone * mulnumtwo;

 cout << mulnumone << " times " << mulnumtwo << " equals " << answer.multiply << "n";

}



 // Addition



else if (Choice == 2)

{

 cout << "ntttYou chose to Add Numbers.nttt";

 cout << "ntttEnter the numbers that you want to Add, after you type each nimber, press enternttt";

 cout << "ntttEnter First Number:  nttt";

 cin >> addnumone;

 cout << "ntttEnter Second Number:  nttt";

 cin >> addnumtwo;



 // Calculate the Addition Equation



 answer.add = mulnumone + mulnumtwo;

 cout << addnumone << " plus " << addnumtwo << " equals " << answer.add << "n";

}



 // Division



else if (Choice == 3)

{

cout << "ntttYou chose to Divide Numbers.nttt";

cout << "ntttEnter the numbers that you want to Divide, after you type each nimber, press enternttt";

cout << "ntttEnter First Number:  nttt";

cin >> divnumone;

cout << "ntttEnter Second Number:  nttt";

cin >> divnumtwo;





// Calculate the Division Equation



answer.divide = divnumone / divnumtwo;

cout << divnumone << " divided by " << divnumtwo << " equals " << answer.add << "n";

}



// Subtraction



else if (Choice == 4)

{

cout << "ntttYou chose to Subtract Numbers.nttt";

cout << "ntttEnter the numbers that you want to Subtract, after you type each nimber, press enternttt";

cout << "ntttEnter First Number:  nttt";

cin >> subnumone;

cout << "ntttEnter Second Number:  nttt";

cin >> subnumtwo;



//Calculate the Subtraction Equation



answer.subtract = subnumone / subnumtwo;

cout << subnumone << " minus " << subnumtwo << " equals " << answer.subtract << "n";

}



// If users choice was to exit the calculator, exit



else if (Choice == 5)

  {

    cout << "ntttYou chose to Exit the Calculator. Bye.nttt";

    break;

  }



// If users Choice is not valid, must enter again



else

  {

    cout << "ntttYour choice is NOT valid!n";

    cout << "tttPlease enter a CORRECT choice!nnttt";

  }

}



return 0;

}

Link to comment
Share on other sites

Thank you all for your help, it's much appreciated

 

Anyway, about this line

 

answer answer;

 

Can someone please explain in more depth what this does? because i don't really understand it, thanks.

 

And also, im going to try and add a few new features, like Squaring etc. Would it be done like this? (apart from adding it as one of my choices and declaring variables)

 

 else if (Choice == umm whatever)



  {

cout << "ntttYou chose to Square a Number.nttt";

cout << "ntttEnter the numbers that you want to Square, after you type the number, press enternttt";

cout << "ntttEnter Number:  ttt";

cin >> squarenum;



answer.square = squarenum ^2;

cout << "nttt"  << squarenum << " squared " << " equals " << answer.square << "n";

  }

 

That's just a guess but is that how you do squaring in c++? if not, could someone please tell me how? thanks.

Link to comment
Share on other sites

In regards to "answer answer;"

 

you are declaring an instance of the structure answer and calling it answer.

 

it's like int X;

you could have called it answer bob; then you would call bob.multiply , bob.add etc....

 

The structure definition below is just that, it's a definition, the stuct name(in this case answer) becomes a sort of new variable type.

struct answer{

 int multiply;

 int add;

 int divide;

 int subtract;

};

To make use of this new variable type you need to create in instance of it, hence "answer answer;" .

 

You can actually define instances of a stucture when you define the structure as follows

struct answer{

 int multiply;

 int add;

 int divide;

 int subtract;

} answer, bob;

Here two instances of the struct answer have been defined, answer and bob which can be used later in the program.

 

I hope that explains it a bit better. You could look at this page for some more examples.

http://www.cplusplus.com/doc/tutorial/tut3-5.html

 

Oh and another thing, there is an error in your code in the addition part "answer.add = mulnumone + mulnumtwo;" should be addnumone + addnumtwo;.

 

Once you understand this then you should improve you program by adding protections like not allowing a divide by zero error to occur, and preventing users from entering other than ints, eg currently adding a number and letter together gives a rather bad result.

Link to comment
Share on other sites

Yeah, thanks for that, i had done that already though over a week ago, now it does a few more things aswell.

 

Now im trying to figure out how i can find the size of an angle when i have the value CosA (where A is the angle) and also tanA and sinA.

 

Here's my code so far

 

#include <iostream.h>

#include <math.h>



struct answer{

 double multiply, add, divide, subtract, square, sqrt, tanA, cosine, sine, circumference, semiCircumference;

};



int main()



{

int Choice, choiceCircumference;

 double mulnumone, mulnumtwo, addnumone, addnumtwo, divnumone, divnumtwo, subnumone, subnumtwo, squarenum, sqrtnum, tannumopposite, tannumadjacent, cosnumadjacent, cosnumhypotenuse, sinnumopposite, sinnumhypotenuse, circleDiameter, semiCircleDiameter;



answer answer;



while (1) {



 // Menu Heading



 cout << "ttt##########################n";

 cout << "ttt####### CALCULATOR #######n";

 cout << "ttt##########################n";



 //Menu Choices



 cout << "nttt1) Multiply Numbers n";

 cout << "ttt2) Add Numbers n";

 cout << "ttt3) Divide Numbers n";

 cout << "ttt4) Subtract Numbers n";

 cout << "ttt5) Square Numbers n";

 cout << "ttt6) Find Square Root of number n";

 cout << "ttt7) Find cosA n";

 cout << "ttt8) Find sinA n";

 cout << "ttt9) Find tanA n";

 cout << "ttt10) Find Circumference n";

 cout << "ttt11) Exit the calculator n";

 cout << "ntttPlease Enter your choice:  ";



 // Find users choice



 cin >> Choice;



 // Accordng to choice Calculate users input



 // Multiplication



if (Choice == 1)



  {

 cout << "ntttYou chose to Multiply Numbers.nttt";

 cout << "ntttEnter the numbers that you want to Multiply, after you type each number, press enternttt";

 cout << "ntttEnter First Number:  ttt";

 cin >> mulnumone;

 cout << "ntttEnter Second Number:  ttt";

 cin >> mulnumtwo;



 // Calculate the Multiplication Equation



 answer.multiply = mulnumone * mulnumtwo;

 cout << "nttt"  << mulnumone << " times " << mulnumtwo << " equals " << answer.multiply << "nn";

  }



// Addition



else if (Choice == 2)

  {

 cout << "ntttYou chose to Add Numbers.nttt";

 cout << "ntttEnter the numbers that you want to Add, after you type each number, press enternttt";

 cout << "ntttEnter First Number:  ttt";

 cin >> addnumone;

 cout << "ntttEnter Second Number:  ttt";

 cin >> addnumtwo;



 // Calculate the Addition Equation



 answer.add = addnumone + addnumtwo;

 cout << "nttt" << addnumone << " plus " << addnumtwo << " equals " << answer.add << "nn";

  }



// Division



else if (Choice == 3)



  {

cout << "ntttYou chose to Divide Numbers.nttt";

cout << "ntttEnter the numbers that you want to Divide, after you type each number, press enternttt";

cout << "ntttEnter First Number:  ttt";

cin >> divnumone;

cout << "ntttEnter Second Number:  ttt";

cin >> divnumtwo;



// If divnumtwo equals 0, don't try to divide



if (divnumtwo == 0)



  {

    cout << "ntttSorry, you can not divide by Zero, Please try something else.nn";

  }



// Calculate the Division Equation



else

 {

answer.divide = divnumone / divnumtwo;

cout << "nttt" << divnumone << " divided by " << divnumtwo << " equals " << answer.divide << "nn";

 }

  }



// Subtraction



else if (Choice == 4)



  {

cout << "ntttYou chose to Subtract Numbers.nttt";

cout << "ntttEnter the numbers that you want to Subtract, after you type each number, press enternttt";

cout << "ntttEnter First Number:  ttt";

cin >> subnumone;

cout << "ntttEnter Second Number:  ttt";

cin >> subnumtwo;



//Calculate the Subtraction Equation



answer.subtract = subnumone - subnumtwo;

cout << "nttt"  << subnumone << " minus " << subnumtwo << " equals " << answer.subtract << "nn";

  }



// Squaring



else if (Choice == 5)



  {

    cout << "ntttYou chose to Square a Number.nttt";

    cout << "ntttEnter the number you want to Square:  ttt";

    cin >> squarenum;



    // Calculate the Squaring Equation



    answer.square = squarenum * squarenum;

    cout << "nttt" << squarenum << " squared equals " << answer.square << "nn";

  }



// Square Rooting



else if (Choice == 6)



  {

    cout << "ntttYou chose to find the Square Root of a number.nttt";

    cout << "ntttEnter the number you want the Square Root of:  ttt";

    cin >> sqrtnum;



    //Calculate Squaring Equation



    answer.sqrt = sqrt (sqrtnum);

    cout << "nttt" << "The square root of " << sqrtnum << " is " << answer.sqrt << "nn";

  }



// Finding cosA



else if (Choice == 7)



  {

    cout << "ntttYou chose to find cosA.nttt";

    cout << "ntttEnter the size of the adjacent side:  ttt";

    cin >> cosnumadjacent;

    cout << "ntttEnter the size of the hypotenuse:  ttt";

    cin >> cosnumhypotenuse;



    // Find cosA



    answer.cosine = cosnumadjacent / cosnumhypotenuse;

    cout << "nttt" << "cosA equals " << answer.cosine << "nn";

  }



// Finding sinA



else if (Choice == 8)



  {

    cout << "ntttYou chose to find sinA.nttt";

    cout << "ntttEnter the size of the opposite side: ttt";

    cin >> sinnumopposite;

    cout << "ntttEnter the size of the hypotenuse:  ttt";

    cin >> sinnumhypotenuse;



    // Find sinA



    answer.sine = sinnumopposite / sinnumhypotenuse;

    cout << "nttt" << "sinA equals " <<  answer.sine << "nn";

  }



// Finding tanA



else if (Choice == 9)



  {

    cout << "ntttYou chose to find tanA.nttt";

    cout << "ntttEnter the size of the opposite side:  ttt";

    cin >> tannumopposite;

    cout << "ntttEnter the size of the adjacent side:  ttt";

    cin >> tannumadjacent;



    // Find tanA



    answer.tanA = tannumopposite / tannumadjacent;

    cout << "nttt" << "tanA equals " << answer.tanA << "nn";

  }



// Finding Circumference



else if (Choice == 10)

{

    cout << "ntttWhat do you want to find the circumference of? n";

    cout << "nttt1) Circle. n";

    cout << "ttt2) Semicircle. n";

    cout << "tttWhat is your choice?  ";

    cin >> choiceCircumference;



if (choiceCircumference == 1)



  {

    cout << "ntttYou chose to find the circumfefence of a circle.nttt";

    cout << "ntttEnter the diameter of the circle:  ttt";

    cin >> circleDiameter;



    // Find Circumference of circle



    answer.circumference = circleDiameter * 3.14159;

    cout << "nttt" << "The circumference of the circle with the diameter " << circleDiameter << " is " << answer.circumference << "n";

  }



  else if (choiceCircumference == 2)



  {

  cout << "ntttYou chose to find the circumference of a Semicircle.nttt";

  cout << "ntttEnter the diameter of the Semicircle:  ttt";

  cin >> semiCircleDiameter;



  // Find Circumferene of semicircle



  answer.semiCircumference = (semiCircleDiameter * 3.14159) * 0.5;

  cout << "nttt" << "The circumference of the semicircle with the diameter " << semiCircleDiameter << " is " << answer.semiCircumference << "n";

  }

  }



 // If users choice was to exit the calculator, exit



else if (Choice == 11)

  {

    cout << "ntttYou chose to Exit the Calculator. Bye.nttt";

    break;

  }



// If users Choice is not valid, must enter again



else

  {

    cout << "ntttYour choice is NOT valid!n";

    cout << "tttPlease enter a CORRECT choice!nn";

  }

}



return 0;

}

[/code]

Link to comment
Share on other sites

btw why don't u use-switch case in place of if-else

so far i know, switch-case use for known selection, & if for comparison, an unknown condition ( like if user hit the key or what ... ) .

using switch-case, ur code become more attractive & clean ...

& use getchar in place on cin, for getting choice from user. as if user keep pressing enter key, cin still waits for input & ur display screen may disappear ( untill u use method of istream not to do this ) & u can't c the choice menu untill u press wrong key, or return from ur calculation

Link to comment
Share on other sites

Thank you very much for all of your help and Dr Thrall, i will try out your advice when i can be bothered ;), but for a start, trying ACOS() , ASIN(), and ATAN() produces the following errors.

 

calculator.cpp: In function `int main()':

calculator.cpp:177: `ACOS' undeclared (first use this function)

calculator.cpp:177: (Each undeclared identifier is reported only once for each function it appears in.)

calculator.cpp:197: `ASIN' undeclared (first use this function)

calculator.cpp:217: `ATAN' undeclared (first use this function)

 

do i need to add an extra header file or is it something different i do?

 

Thanks in Advance

Link to comment
Share on other sites

When something is generating an undefined error then the compilier can't find a reference to it. If it can't find a reference to it then it can't find the code for it. You need to make sure the 3 functions or the header file for the functions are declared. One good way to go about figuring this out is to do a google search on it..

 

E.g.

 

acos c++

 

and look for how to reference them.

 

Of course you can always read your manual too :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...