Given the C++ code: // toh.cpp #include #include using namespace std; int main() {     vector t[3];     int n;     cout << "Enter the number of rings: ";     cin >> n;     int from = 0;     int candidate = 1;     int to, move = 0;     if ( n % 2 == 0)     to = 2;   // (from + to)%mod3, counter clockwise     else         to = 1;  // (from + to)%mod3, clockwise     for ( int i =  n + 1 ; i >= 1; i-- )         t[0].push_back(i);       t[1].push_back(n+1);       t[2].push_back(n+1);     if ( n % 2  ==  0 )     {       while ( t[1].size() < (n+1) ) {           cout << "move " << ++move << ":" << " Move candidate " << candidate;           cout << " from tower " << (char) (from + 'A');           cout << " to tower " << (char)(to + 'A') << endl;           t[to].push_back(t[from].back());           t[from].pop_back();           if (t[(to+2)%3].back() < t[(to+1)%3].back())               from = (to + 2)%3;           else               from = (to + 1)%3;           if (t[(from)%3].back() < t[(from+2)%3].back())               to = (from + 2)%3;           else               to = (from + 1)%3;           candidate = t[from].back();         }         return 0;     } else {       while ( t[1].size() < ( n+1 )   ) {           cout << "move " << ++move << ":" << " Move candidate " << candidate;           cout << " from tower " << (char) (from + 'A');           cout << " to tower " << (char)(to + 'A') << endl;           t[to].push_back(t[from].back());           t[from].pop_back();           if (t[(to+1)%3].back() < t[(to+2)%3].back())               from = ( to + 1 )%3;           else               from = ( to + 2 )%3;           //cout << "from = " << from << endl;           if (t[(from)%3].back()  <  t[(from+1)%3].back())               to = (from + 1)%3;           else               to = (from + 2)%3;           //cout << "to = " << to <

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question

Given the C++ code:

// toh.cpp
#include <iostream>
#include <vector>
using namespace std;

int main() {
    vector<int> t[3];
    int n;
    cout << "Enter the number of rings: ";
    cin >> n;
    int from = 0;
    int candidate = 1;
    int to, move = 0;

    if ( n % 2 == 0)
    to = 2;   // (from + to)%mod3, counter clockwise
    else
        to = 1;  // (from + to)%mod3, clockwise

    for ( int i =  n + 1 ; i >= 1; i-- )
        t[0].push_back(i);
      t[1].push_back(n+1);
      t[2].push_back(n+1);


    if ( n % 2  ==  0 )
    {

      while ( t[1].size() < (n+1) ) {

          cout << "move " << ++move << ":" << " Move candidate " << candidate;
          cout << " from tower " << (char) (from + 'A');
          cout << " to tower " << (char)(to + 'A') << endl;

          t[to].push_back(t[from].back());
          t[from].pop_back();
          if (t[(to+2)%3].back() < t[(to+1)%3].back())
              from = (to + 2)%3;
          else
              from = (to + 1)%3;

          if (t[(from)%3].back() < t[(from+2)%3].back())
              to = (from + 2)%3;
          else
              to = (from + 1)%3;
          candidate = t[from].back();
        }
        return 0;

    } else {

      while ( t[1].size() < ( n+1 )   ) {
          cout << "move " << ++move << ":" << " Move candidate " << candidate;
          cout << " from tower " << (char) (from + 'A');
          cout << " to tower " << (char)(to + 'A') << endl;
          t[to].push_back(t[from].back());
          t[from].pop_back();
          if (t[(to+1)%3].back() < t[(to+2)%3].back())
              from = ( to + 1 )%3;
          else
              from = ( to + 2 )%3;
          //cout << "from = " << from << endl;
          if (t[(from)%3].back()  <  t[(from+1)%3].back())
              to = (from + 1)%3;
          else
              to = (from + 2)%3;
          //cout << "to = " << to <<endl;

          candidate = t[from].back();
        }
        return 0;
    }

    return 0;
}

Given the while loop:

      while ( t[1].size() < ( n+1 )   ) {
          cout << "move " << ++move << ":" << " Move candidate " << candidate;
          cout << " from tower " << (char) (from + 'A');
          cout << " to tower " << (char)(to + 'A') << endl;
          t[to].push_back(t[from].back());
          t[from].pop_back();
          if (t[(to+1)%3].back() < t[(to+2)%3].back())
              from = ( to + 1 )%3;
          else
              from = ( to + 2 )%3;
          //cout << "from = " << from << endl;
          if (t[(from)%3].back()  <  t[(from+1)%3].back())
              to = (from + 1)%3;
          else
              to = (from + 2)%3;
          //cout << "to = " << to <<endl;

          candidate = t[from].back();
        }
        return 0;

Question: Explain what each instruction is doing.

Expert Solution
steps

Step by step

Solved in 2 steps

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY