PDA

View Full Version : Program for even and odd numbers




Quboid
Dec 14, 2006, 01:31 PM
hello all,
My final programming exam is tomorrow. And i am practiciing at this moment. Just a quick question, how do write the code to figure out if a number is even or not even. I have it theoretically as finding the mode 2 of the number and test to see if it is zero. but the mod function doesn't work on my xcode compiler. I tried using the % command (a%b) but that doesn't work either.

PS. I am programmnig in C.

thanks



hanschien
Dec 14, 2006, 01:48 PM
hello all,
My final programming exam is tomorrow. And i am practiciing at this moment. Just a quick question, how do write the code to figure out if a number is even or not even. I have it theoretically as finding the mode 2 of the number and test to see if it is zero. but the mod function doesn't work on my xcode compiler. I tried using the % command (a%b) but that doesn't work either.

PS. I am programmnig in C.

thanks


if(number%2==0)

Eraserhead
Dec 14, 2006, 02:31 PM
You need to add

#include <stdio.h>
#include <stdlib.h>

in XCode for modulus to work ;).

savar
Dec 14, 2006, 02:42 PM
hello all,
My final programming exam is tomorrow. And i am practiciing at this moment. Just a quick question, how do write the code to figure out if a number is even or not even. I have it theoretically as finding the mode 2 of the number and test to see if it is zero. but the mod function doesn't work on my xcode compiler. I tried using the % command (a%b) but that doesn't work either.

PS. I am programmnig in C.

thanks

The word is modulo (or modulus)...its actually an operator (not a command).

Anyway, in C the modulo operator is '%', so (a%b) evaluates to r, where r is the remainder after performing integer division of a by b.

elfin buddy
Dec 14, 2006, 02:47 PM
I personally find Xcode horrible for writing in C. I just use a text editor in the terminal and the GCC program to compile. Works like a charm :)

Still, I don't think you need to add a #include <stdlib.h> line for it to work in Xcode. I just tested the following code under a C Tool project in Xcode, and it ran perfectly:

#include <stdio.h>

int main(void)
{
int a;
int b;
int c;

b = 2;

printf("Please enter the number to check: ");
scanf("%d", &a);

c = a % b;

if (c == 0)
{
printf("%d is even.\n", a);
}
else
{
printf("%d is odd.\n", a);
}

return(0);
}

But, whatever works, eh?

Doctor Q
Dec 14, 2006, 03:11 PM
Even if you didn't know about the % operator, you could test parity (even/odd-ness) using integer arithmetic.

If i is an integer, this test would do it:int j = ( i >= 0 ? i : -i ) ;
if ( j/2 == (j+1)/2 )
printf("%d is even\n",i) ;
else
printf("%d is odd\n",i) ;In integer arithmetic, 0/2 and 1/2 are 0, 2/2 and 3/2 are 1, 4/2 and 5/2 are 2, and so on.

bronxbomber92
Dec 14, 2006, 03:36 PM
You could go into good 'ole bitwise operators also!

But I won't go into that....;)

atszyman
Dec 14, 2006, 03:49 PM
You could go into good 'ole bitwise operators also!

But I won't go into that....;)

why not?

if (number&0x1 == 1)
printf("number is odd/n");
else
printf("number is even/n");

Doctor Q
Dec 14, 2006, 04:21 PM
My example didn't work for negative integers, so I edited the post above to fix it. I don't win any points for bug-free programming today.

bronxbomber92
Dec 14, 2006, 07:10 PM
why not?

if (number&0x1 == 1)
printf("number is odd/n");
else
printf("number is even/n");

Because Quboid probably hasn't gotten into bitwise operators yet. :p
( excuse me if I'm wrong )

gekko513
Dec 14, 2006, 07:24 PM
why not?

if (number&0x1 == 1)
printf("number is odd/n");
else
printf("number is even/n");
<pedant>
== has precedence over &, so you're actually just saying if (number&(1==1)) ... which happens to give the right answer because true (1==1) is usually set to 1, maybe it's even defined to be 1 in C, but I don't know for sure.

if (number&1) is sufficient, but if ((number&0x1) == 1) is probably more readable while also doing what you think it does.

</pedant>

Sorry, Quboid, for digressing.

Eraserhead
Dec 15, 2006, 08:12 AM
Still, I don't think you need to add a #include <stdlib.h> line for it to work in Xcode.

You're probably right, I was doing it in Cocoa, and don't want to check in the program itself which C libraries are required, as having either seemed to be OK to the compilier.

Nutter
Dec 15, 2006, 08:22 AM
if (number&1) is sufficient, but if ((number&0x1) == 1) is probably more readable while also doing what you think it does.


Surely you mean if ((number&0x1) == YES)?

:-)

Eraserhead
Dec 15, 2006, 11:00 AM
Surely you mean if ((number&0x1) == YES)?

:-)

No, because, the YES, NO thing is only for Objective-C, not real C.

Quboid
Dec 15, 2006, 01:22 PM
Thanks a million guys, i had the exam today and got exempted......i ahve a prject to finish though. Looking for some help.

gekko513
Dec 15, 2006, 03:10 PM
Surely you mean if ((number&0x1) == YES)?

:-)

No, because, the YES, NO thing is only for Objective-C, not real C.

And more importantly if ((number&0x2) == YES) wouldn't work for if ((number&0x2) == 0x2) or just if (number&2).

MarkCollette
Dec 15, 2006, 07:08 PM
Come on guys, we can still take it up a notch :)


#include <stdio.h>

int main(int argc, char *argv[]) {
char *even_odd_index[] = { "even\n", "odd\n" };
char *even_odd_offset = "even\n\0\0\0odd\n";
int val = 5;
printf( even_odd_index[val & 0x01] );
printf( &even_odd_offset[(val & 0x01)<<3] );
}

MrFrankly
Dec 16, 2006, 09:08 AM
I couldn't help but create my own little 1-line-app version of odd and even - nothing new which hasn't be posted yet, just wrapped into a runnable program.


#include "stdio.h"
int main (int argc, char ** argv) {
return printf("the number %s is %s", argv[1], atoi(argv[1]) & 1 ? "odd" : "even") < 0;
}

Nutter
Dec 17, 2006, 09:19 AM
No, because, the YES, NO thing is only for Objective-C, not real C.

I stand corrected. It just seems inelegant to me to have to make the assumption that logical truth == 1, as safe as that assumption may be.

And more importantly if ((number&0x2) == YES) wouldn't work for if ((number&0x2) == 0x2) or just if (number&2).

Oh yeah. I forgot that we weren't actually testing a Boolean result. My point is rendered rather pointless in this case...

cblackburn
Dec 18, 2006, 04:39 PM
I couldn't help but create my own little 1-line-app version of odd and even - nothing new which hasn't be posted yet, just wrapped into a runnable program.


Someone needs to write an asm version! :D

Chris