By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
446,387 Members | 1,729 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 446,387 IT Pros & Developers. It's quick & easy.

Noobie question about Switch

P: n/a
Hi all, this is a newbie question :-)

I was wondering if there was a way to use the switch statement in a manner
that each case statement includes more that a simple value. i.e.:
switch ( myFloat )
{

case >0: // ??? how do i write this ???

// execute if myfloat >0

break;

case 0:

// execute if myfloat ==0

break;

default:

// you got the idea
}

TIA
Aristotelis
Jul 22 '05 #1
Share this Question
Share on Google+
6 Replies


P: n/a
Hello,

"Aristotelis E. Charalampakis"
<ar***********************@REMOVEMEhotmail.com> wrote in message
news:bs***********@ulysses.noc.ntua.gr...
Hi all, this is a newbie question :-)

I was wondering if there was a way to use the switch statement in a manner
that each case statement includes more that a simple value. i.e.:
switch ( myFloat )
{

case >0: // ??? how do i write this ???

// execute if myfloat >0

break;

case 0:

// execute if myfloat ==0

break;

default:

// you got the idea
}

TIA
Aristotelis


You can use if/else if/else combos or some sort of control table of your
design:
float range[3*2] = { 0.1, 0.9, 1, // if greater than 0.1 and below 0.9 then
integer i = 1
1.1, 2.1, 2}; // if 1.1 and 2.1 then 2, etc..

--
Elias
Jul 22 '05 #2

P: n/a
So it is not possible to write something like
"case >0" ?

Can it be written in the form

switch ( TRUE )
case myFloat>0:
etc?

In VB I can write something like this:

select case myFloat
case 2 , 3
'Do something
case Is > 4
'do something else
case else
'default
end select

Or

select case True
case myFloat>4
'Do something
case myFloat<0
'do something else
case else
'default
end select

Is there a way to implement the above with the switch statement?

TIA,
Aristotelis

"lallous" <la*****@lgwm.org> wrote in message
news:bs************@ID-161723.news.uni-berlin.de...
Hello,

"Aristotelis E. Charalampakis"
<ar***********************@REMOVEMEhotmail.com> wrote in message
news:bs***********@ulysses.noc.ntua.gr...
Hi all, this is a newbie question :-)

I was wondering if there was a way to use the switch statement in a manner that each case statement includes more that a simple value. i.e.:
switch ( myFloat )
{

case >0: // ??? how do i write this ???

// execute if myfloat >0

break;

case 0:

// execute if myfloat ==0

break;

default:

// you got the idea
}

TIA
Aristotelis
You can use if/else if/else combos or some sort of control table of your
design:
float range[3*2] = { 0.1, 0.9, 1, // if greater than 0.1 and below 0.9

then integer i = 1
1.1, 2.1, 2}; // if 1.1 and 2.1 then 2, etc..
--
Elias

Jul 22 '05 #3

P: n/a

"Aristotelis E. Charalampakis" <ar***********************@REMOVEMEhotmail.com> wrote in message
In VB I can write something like this:
We're not in VB anymore.
select case myFloat
case 2 , 3

In C/C++:
case 2: case 3:

There's no way to do the relationals directly. You could do something like:

switch(i) {
case 2:
case 3:
...

default:
if(i > 10) { ...

You can't do switch with floats at all. The arg has to be an integer or
enum type.
Jul 22 '05 #4

P: n/a
Aristotelis E. Charalampakis wrote:
Hi all, this is a newbie question :-)

I was wondering if there was a way to use the switch statement in a
manner that each case statement includes more that a simple value.
i.e.:
switch ( myFloat )
You cannot use switch/case on floating point values, only integral
values.
{

case >0: // ??? how do i write this ???

// execute if myfloat >0

break;

case 0:

// execute if myfloat ==0

break;

default:

// you got the idea
}


There is no way to do that. Just use if:

if (myFloat == 0)

// execut if myFloat == 0

else if (myFloat > 0)

// esecute if myFloat > 0

else

// you got the idea

Btw: testing floating point values for equality is most often a bad idea
Jul 22 '05 #5

P: n/a
Thank you all. I will stick to the if / else combos.
Btw: testing floating point values for equality is most often a bad idea


Yes, it is a bad idea. I am not noobie in general, just in C++.

Yet, I have persuaded myself to write some dlls (mostly math stuff) in C++,
so that I get to know it. Some other dlls are in Visual Fortran 6.5, the gui
in VB.

Aristotelis.
Jul 22 '05 #6

P: n/a
"Aristotelis E. Charalampakis" <ar***********************@REMOVEMEhotmail.com> wrote in message news:<bs***********@ulysses.noc.ntua.gr>...
Hi all, this is a newbie question :-)

I was wondering if there was a way to use the switch statement in a manner
that each case statement includes more that a simple value. i.e.:


A way of doing it (just as tiring as if-else though) is:

switch (myFloat > 0) {
case true: blah blah; break; //myfloat > 0
case false: switch (myFloat == 0) {
case true: blah blah; break; //myfloat == 0
case false: blah blah; break; //myfloat < 0
}
break;
}
Jul 22 '05 #7

This discussion thread is closed

Replies have been disabled for this discussion.