C Board  

Go Back   C Board > General Programming Boards > FAQ Board

 
 
LinkBack Thread Tools Display Modes
Old 12-24-2002, 09:45 AM   #1
Registered User
 
Join Date: Nov 2002
Posts: 11
Question FAQ: How to test whether integer is even or odd

Hi. I need to write a function that tests whether an integer is even or not. This is how far I've got. I wasn't sure if its best to use an 'if' statement in the function.

Code:
/* a function that tests whether an integer is even, returning a true or false
   answer */

#include <iostream>

using namespace std;

int main()
{
  int n = 0;

  cout << "Enter a number: ";
  cin >> n;

  cout << test(n) << endl;

  return 0;
}

int test(int n)
{
  if (n
cheers.
giggsy is offline  
Old 12-24-2002, 09:48 AM   #2
RoD
Banned
 
RoD's Avatar
 
Join Date: Sep 2002
Posts: 6,334
mod by two.

variable = variable % 2;
RoD is offline  
Old 12-24-2002, 09:48 AM   #3
Code Goddess
 
Prelude's Avatar
 
Join Date: Sep 2001
Posts: 9,661
Code:
#include <iostream>

int main()
{
  int val;

  std::cout<<"Enter a number: ";
  std::cin>> val;

  if ( val % 2 == 0 )
    std::cout<< val <<" is even"<<std::endl;
  else
    std::cout<< val <<" is odd"<<std::endl;
}
-Prelude
__________________
My best code is written with the delete key.
Prelude is offline  
Old 12-24-2002, 09:52 AM   #4
Programming Sex-God
 
Polymorphic OOP's Avatar
 
Join Date: Nov 2002
Posts: 1,078
Or, if you want to optimize just do:

Value & 1

if the result of the expression is true then the number was odd, if false, then the number was even
Polymorphic OOP is offline  
Old 12-24-2002, 10:01 AM   #5
RoD
Banned
 
RoD's Avatar
 
Join Date: Sep 2002
Posts: 6,334
hmm, both seem about the same imo, i had only ever learned the modulous way of doing it.
RoD is offline  
Old 12-24-2002, 10:11 AM   #6
Programming Sex-God
 
Polymorphic OOP's Avatar
 
Join Date: Nov 2002
Posts: 1,078
Bitwise operations are faster than division, multiplication, addition, subtraction because it's just a quick check on the bits.
Polymorphic OOP is offline  
Old 12-24-2002, 10:15 AM   #7
RoD
Banned
 
RoD's Avatar
 
Join Date: Sep 2002
Posts: 6,334
thnx for the knowledge.
RoD is offline  
Old 12-24-2002, 10:43 AM   #8
Registered User
 
Join Date: Nov 2002
Posts: 11
I tried the following:

Code:
/* a function that tests whether an integer is even, returning a true or false
   answer */

#include <iostream>

using namespace std;

int evenTest(int);

int main()
{
  int n = 0;

  cout << "Enter a number: ";
  cin >> n;

  cout << evenTest(n) << endl;

  return 0;
}

int evenTest(int n)
{
  if (n % 2 == 0)
    cout << n << " is even" << endl;
else
    cout << n << " is odd" << endl;
}
It generates the following output:

Code:
Enter a number: 10
10 is even
98476
Why is 98476 generated?
Also, Polymorphic OOP, how would I implement Value & 1 ?
giggsy is offline  
Old 12-24-2002, 10:48 AM   #9
Programming Sex-God
 
Polymorphic OOP's Avatar
 
Join Date: Nov 2002
Posts: 1,078
It's result is 1 if it's odd and 0 if it's even

so

Code:
std::cout << "Value is " << ( Value & 1 ? "odd" : "even" );
Polymorphic OOP is offline  
Old 12-24-2002, 10:55 AM   #10
Programming Sex-God
 
Polymorphic OOP's Avatar
 
Join Date: Nov 2002
Posts: 1,078
Quote:
Originally posted by giggsy
Why is 98476 generated?
Because you are "cout"ing the value that evenTest returns (which is garbage cuz you didn't return anything.

What you should do is:

Code:
/* a function that tests whether an integer is even, returning a true or false
   answer */

#include <iostream>

using namespace std;

bool evenTest(int);

int main()
{
  int n = 0;

  cout << "Enter a number: ";
  cin >> n;

  cout << n << " is " << ( evenTest(n) ? "even" : "odd" ) << endl;

  return 0;
}

inline bool evenTest(int n)
{
 return n % 2 == 0;
}
Polymorphic OOP is offline  
Old 12-24-2002, 10:57 AM   #11
I lurk
 
Join Date: Aug 2002
Posts: 1,361
Quote:
Originally posted by giggsy
I tried the following:

Code:
/* a function that tests whether an integer is even, returning a true or false
   answer */

#include <iostream>

using namespace std;

int evenTest(int);

int main()
{
  int n = 0;

  cout << "Enter a number: ";
  cin >> n;

  cout << evenTest(n) << endl;

  return 0;
}

int evenTest(int n)
{
  if (n % 2 == 0)
    cout << n << " is even" << endl;
else
    cout << n << " is odd" << endl;
}
It generates the following output:

Code:
Enter a number: 10
10 is even
98476
Why is 98476 generated?
Also, Polymorphic OOP, how would I implement Value & 1 ?
That random number is generated because you're printing the result of a function which is supposed to return an int, but actually returns nothing.
Eibro is offline  
Old 12-24-2002, 11:00 AM   #12
Skunkmeister
 
Stoned_Coder's Avatar
 
Join Date: Aug 2001
Posts: 2,572
Code:
const char* EvenOrOdd( int value)
{
     if(value&1) return"odd";
     return "even";
}
__________________
Free the weed!! Class B to class C is not good enough!!
And the FAQ is here :- http://faq.cprogramming.com/cgi-bin/smartfaq.cgi
Stoned_Coder is offline  
 

Thread Tools
Display Modes

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Looking for constructive criticism wd_kendrick C Programming 16 05-28-2008 09:42 AM
No Match For Operator+ ??????? Paul22000 C++ Programming 24 05-14-2008 10:53 AM
My C++ test is COMING!!... [Z-D] C++ Programming 52 12-01-2006 08:02 PM
FAQ how do i convert a string to an integer?? (C) Unregistered FAQ Board 1 12-02-2001 05:03 PM


All times are GMT -6. The time now is 11:36 PM.


Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.0 RC2

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22