PDA

View Full Version : Kochan Exercise 4-4

veshman
Jan 30, 2009, 09:56 AM
Hi, I'm very new to programming and was wondering if I could get some help on this problem. I'm working through Kochan's 2.0 book, and am getting an error on problem 4-4, as shown in the image.

If I make x an integer, the program seems to run fine. But if I make it a float, it errors with "invalid operands to binary ^"

lee1210
Jan 30, 2009, 10:04 AM
^ is not the exponentiation operator, it is the bitwise XOR operator. There is, in fact, no exponentiation operator. There is a pow function in math.h for dealing with doubles. For integers, for powers of 2, you can use << to shift left. For other integers... you have to do it yourself.

-Lee

EDIT: For simple, fixed powers, just multiply the appropriate number of times.

lazydog
Jan 30, 2009, 10:08 AM
... or since you're using floats, powf()!

b e n

mdeh
Jan 30, 2009, 11:04 AM
Hi, I'm very new to programming and was wondering if I could get some help on this problem. I'm working through Kochan's 2.0 book, and am getting an error on problem 4-4, as shown in the image.

If I make x an integer, the program seems to run fine. But if I make it a float, it errors with "invalid operands to binary ^"

As Lee said below, just use simple substitution. You have not yet used Pow or shift ( << ) operators.

So,

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
/* 3x³ - 2x² + 6 for x = 2.55 */

float x = 2.55;

NSLog(@"Given x = 2.55\n");
NSLog(@" 3x³ - 2x² + 6 = %f:", 3 * (x * x * x) - 2 *( x * x) + 6);
[pool drain];
return 0;
}

veshman
Jan 30, 2009, 10:21 PM
Thanks a lot for your responses!

That makes sense.....I thought I was missing something big. And as you pointed out, I'm thus far unfamiliar with powf and bit operations (read about them, but haven't used them).

Bhavesh