Solved

C++ For Loop

Posted on 2006-10-26
6
200 Views
Last Modified: 2010-04-01
Hi experts,


I have a vector, vectorOfRadios of Radio objects with each object containing one boolean member variable, called IsRadioOn. I loop through each Radio in vectorOfRadios starting at the first Radio and looking ahead to the next radio i.e. vectorOfRadios.at(n+1) and check if the radios are either of the following options and based on those options call different functions:

for (int n = 0; n < vectorOfRadios.size()-1; n++)
{
        bool bFirstIsOn = vectorOfRadios.at(n).IsRadioOn;
        bool bSecondIsOn = vectorOfRadios.at(n+1).IsRadioOn;

        for (int j = 0; j < size; ++j)
        {
            int x = 0;
            int y = 0;
            if ((bFirstIsOn == true) && (bSecondIsOn == true))
            {
              // A, B, C, D and E are functions that return an integer.
                 x = A();
                 y = B();
            }
            else if  ((bFirstIsOn == true && (bSecondIsOn == false))
            {
                x = A();
                y = D();
            }
            else if  ((bFirstIsOn == false) && (bSecondIsOn == true))
           {
               x = B();
               y = C();
            }
           else if  ((bFirstIsOn == false) && (bSecondIsOn == false))
           {
               x = B();
               y = D();
           }
        
            // Do other stuff here using variables x and y
            // ...
      }
}

Is there a more elegant method for doing the above?

Thank you,
j.
0
Comment
Question by:XPUSR
  • 3
6 Comments
 
LVL 19

Accepted Solution

by:
BrianGEFF719 earned 23 total points
ID: 17815878
if (bFirstIsOn == true)
 x = A();
else
 x = B();

if (bSecondIsOn == false)
 y = D();
else
{
 if(bFirstIsOn == true)
  y = B();
 else
  y = C();
}
0
 
LVL 19

Expert Comment

by:BrianGEFF719
ID: 17815888
or you could try with the conditional iif.

x = (bFirstIsOn) ? A() : B();
y = (!bSecondIsOn) ? D() :;
y = (!bSecondIsOn && bFirstIsOn) ? B() : C();

0
 
LVL 19

Expert Comment

by:BrianGEFF719
ID: 17815899
Sorry try this:


x = (bFirstIsOn) ? A() : B();
y = (!bSecondIsOn) ? D() : 0;
y = (bSecondIsOn && bFirstIsOn) ? B() : C();


-Brian
0
 
LVL 4

Assisted Solution

by:Raymun
Raymun earned 22 total points
ID: 17953688
An alternative:

if( bSecondIsOn ) {
      if( bFirstIsOn ) {
            x = A();
            y = B();
      }
      else {
            x = B();
            y = C();
      }
}
else {
      y = D();
}

Both are correct. BrianGeFF719's is more concise but mine is more versatile.
0

Featured Post

Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

Join & Write a Comment

Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
Container Orchestration platforms empower organizations to scale their apps at an exceptional rate. This is the reason numerous innovation-driven companies are moving apps to an appropriated datacenter wide platform that empowers them to scale at a …
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.
The viewer will be introduced to the member functions push_back and pop_back of the vector class. The video will teach the difference between the two as well as how to use each one along with its functionality.

747 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now