/*C++ Program To read details of a book consists of chapters,
 *chapters consist of sections and sections consist of
 *subsections. Construct a tree and print the nodes.
 *Find the time and space requirements of your method.
 **/
# include <iostream>
# include <cstdlib>
# include <string.h>
using namespace std;
/*
 * Node Declaration
 */
struct node
{
    char label[10];
    int ch_count;
    struct node *child[10];
}*root;

/*
 * Class Declaration
 */
class GT
{
    public:
        void create_tree();  
 void display(node * r1);
     
        GT()
        {
            root = NULL;
        }
};

void GT::create_tree()
{
 int tbooks,tchapters,i,j,k;
 root = new node;
 cout<<"Enter name of book";
 cin>>root->label;
 cout<<"Enter no. of chapters in book";
 cin>>tchapters; 
 root->ch_count = tchapters;
 for(i=0;i<tchapters;i++)
 {
  root->child[i] = new node;
  cout<<"Enter Chapter name\n";
  cin>>root->child[i]->label;   
  cout<<"Enter no. of sections in  Chapter: "<<root->child[i]->label;
  cin>>root->child[i]->ch_count;
  for(j=0;j<root->child[i]->ch_count;j++)
  {
   root->child[i]->child[j] = new node;
   cout<<"Enter Section "<<j+1<<"name\n";
   cin>>root->child[i]->child[j]->label;   
   //cout<<"Enter no. of subsections in "<<r1->child[i]->child[j]->label;
   //cin>>r1->child[i]->ch_count;
  }  

 }

}


void GT::display(node * r1)
{
 int i,j,k,tchapters;
 if(r1 != NULL)
 { 
  cout<<"\n-----Book Hierarchy---";

  cout<<"\n Book title : "<<r1->label;
  tchapters = r1->ch_count;
  for(i=0;i<tchapters;i++)
  {
  
   cout<<"\n  Chapter "<<i+1;
   cout<<" "<<r1->child[i]->label;   
    cout<<"\n Sections";
   for(j=0;j<r1->child[i]->ch_count;j++)
   {
    //cin>>r1->child[i]->child[j]->label;   
    cout<<"\n  "<<r1->child[i]->child[j]->label;
   }  

  }
 }
}


/*
 * Main Contains Menu
 */
int main()
{
    int choice;
   GT gt;
    while (1)
    {
        cout<<"-----------------"<<endl;
        cout<<"Book Tree Creation"<<endl;
        cout<<"-----------------"<<endl;
        cout<<"1.Create"<<endl;
        cout<<"2.Display"<<endl;
        cout<<"3.Quit"<<endl;
        cout<<"Enter your choice : ";
        cin>>choice;
        switch(choice)
        {
        case 1:
              gt.create_tree();
        case 2:
              gt.display(root);
            break;
        case 3:
            exit(1);
        default:
            cout<<"Wrong choice"<<endl;
        }
    }
} 
by

C++ Online Compiler

Write, Run & Share C++ code online using OneCompiler's C++ online compiler for free. It's one of the robust, feature-rich online compilers for C++ language, running on the latest version 17. Getting started with the OneCompiler's C++ compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as C++ and start coding!

Read inputs from stdin

OneCompiler's C++ online compiler supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample program which takes name as input and print your name with hello.

#include <iostream>
#include <string>
using namespace std;

int main() 
{
    string name;
    cout << "Enter name:";
    getline (cin, name);
    cout << "Hello " << name;
    return 0;
}

About C++

C++ is a widely used middle-level programming language.

  • Supports different platforms like Windows, various Linux flavours, MacOS etc
  • C++ supports OOPS concepts like Inheritance, Polymorphism, Encapsulation and Abstraction.
  • Case-sensitive
  • C++ is a compiler based language
  • C++ supports structured programming language
  • C++ provides alot of inbuilt functions and also supports dynamic memory allocation.
  • Like C, C++ also allows you to play with memory using Pointers.

Syntax help

Loops

1. If-Else:

When ever you want to perform a set of operations based on a condition If-Else is used.

if(conditional-expression) {
   //code
}
else {
   //code
}

You can also use if-else for nested Ifs and If-Else-If ladder when multiple conditions are to be performed on a single variable.

2. Switch:

Switch is an alternative to If-Else-If ladder.

switch(conditional-expression){    
case value1:    
 // code    
 break;  // optional  
case value2:    
 // code    
 break;  // optional  
......    
    
default:     
 code to be executed when all the above cases are not matched;    
} 

3. For:

For loop is used to iterate a set of statements based on a condition.

for(Initialization; Condition; Increment/decrement){  
  //code  
} 

4. While:

While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.

while (condition) {  
// code 
}  

5. Do-While:

Do-while is also used to iterate a set of statements based on a condition. It is mostly used when you need to execute the statements atleast once.

do {  
 // code 
} while (condition); 

Functions

Function is a sub-routine which contains set of statements. Usually functions are written when multiple calls are required to same set of statements which increases re-usuability and modularity. Function gets run only when it is called.

How to declare a Function:

return_type function_name(parameters);

How to call a Function:

function_name (parameters)

How to define a Function:

return_type function_name(parameters) {  
 // code
}