Noobie question about Switch

L

lallous

Hello,

"Aristotelis E. Charalampakis"
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..
 
A

Aristotelis E. Charalampakis

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
 
A

Aristotelis E. Charalampakis

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 said:
Hello,

"Aristotelis E. Charalampakis"
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..
 
R

Ron Natalie

Aristotelis E. Charalampakis said:
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.
 
R

Rolf Magnus

Aristotelis said:
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
 
A

Aristotelis E. Charalampakis

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.
 
C

Chris Mantoulidis

Aristotelis E. Charalampakis said:
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;
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,743
Messages
2,569,478
Members
44,898
Latest member
BlairH7607

Latest Threads

Top