C++ exponent operator error in free fall distance calculation

  • Context: Comp Sci 
  • Thread starter Thread starter wahaj
  • Start date Start date
  • Tags Tags
    C++
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
5 replies · 5K views
wahaj
Messages
154
Reaction score
2

Homework Statement


can some one tell me what I am doing wrong in this program. I am getting a
error C2296: '^' : illegal, left operand has type 'double'
error at line 10 where I do my distance calculations. I am using Microsoft Visual Studios 2008.




Homework Equations


The program is supposed to input the time in seconds and then use the formula
distance = (g * time2)/2 where g = 9.81

The Attempt at a Solution



Code:
#include <iostream>
using namespace std;
int main()
{
   double time, distance;

   cout << "Enter the time in seconds.\n";
   cin >> time;
   distance = (9.81*(time)^2)/2;
   cout << "Distance traveled under free fall is "<< distance <<" meters per second.";
}
 
Last edited by a moderator:
Physics news on Phys.org
wahaj said:

Homework Statement


can some one tell me what I am doing wrong in this program. I am getting a
error C2296: '^' : illegal, left operand has type 'double'
error at line 10 where I do my distance calculations. I am using Microsoft Visual Studios 2008.




Homework Equations


The program is supposed to input the time in seconds and then use the formula
distance = (g * time2)/2 where g = 9.81

The Attempt at a Solution



Code:
#include <iostream>
using namespace std;
int main()
{
   double time, distance;
	
	
   cout << "Enter the time in seconds.\n";
   cin >> time;
   distance = (9.81*(time)^2)/2;
   cout << "Distance traveled under free fall is "<< distance <<" meters per second.";
}

You are using ^ as an exponentiation operator - there is no such exponentiation operator in any C-based language (including C++ and C#). The ^ operator is the bitwise "exclusive or" operator.

Rewrite your assignment statement like so:
Code:
   distance = (9.81*time*time)/2;
 
^ is bitwise exclusive or
 
Really? well thanks for the help
 
So you know, if you need to do more complicated exponents, e.g. x^(2.3), you could include <cmath> and use the "pow()" function. Then instead of writing x^y, you would write pow(x,y). However, when you're just doing something like x^2, it's easier to just use x*x.
 
I know about cmath I didn't add it to my program because I was under the impression I could just use ^ to represent exponent. Thanks for the help