Avatar of fird
fird asked on

do while loop

anyone can help me to insert the do while loop in this program since the program only sort the bubble sort part.

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <sys\timeb.h>
#include <ctime>
#include <string>
#include <fstream>

using namespace std;

class Timer
{
 public:
 Timer()
   : secStart(0), secStop(0),
     milliSecStart(0), milliSecStop(0)
 { }  
 void start(string msg="")
   {
    cout << msg;
    ftime(&time);
    secStart = time.time;    
    milliSecStart = time.millitm;
   }
 void stop(string msg="")
   {
    ftime(&time);
    secStop = time.time;    
    milliSecStop = time.millitm;
    cout << msg;
   }

 //Will returns number of milliseconds ellapsed
 long read()
   {
         secDiff =      secStop -      secStart;
    milliSecDiff = milliSecStop - milliSecStart;
    if (milliSecDiff < 0)
       {
        milliSecDiff += 1000;
        secDiff--;
       }
     return (secDiff*1000 + milliSecDiff);
   }  
 private:
   long       secStart,      secStop;
   short milliSecStart, milliSecStop;
   long       secDiff,  milliSecDiff;
   struct timeb time;
};

class DataStore
{
 public:
   DataStore(int Size)
     {  
       size = Size;
       data = new int[Size];
     }
   ~DataStore()
     { delete[] data; }
   void randomizeData(int seekValue)
     {
      srand( seekValue );
      for (int i=0; i<size; i++)
         { data[i] = rand() % size; }
     }
   void bubbleSort(int N)
     {
      for (int i=0; i<N; i++)
      for (int j=N-1; j>=i+1; j--)
        {
         if (data[j] < data[j-1] )
           {
            int  temp = data[j];
            data[j]   = data[j-1];
            data[j-1] = temp;
           }
        }
     }
   void selectionSort(int N){
      for (int x = 0; x < N; x++){
            int index_of_max = x;
            for(int y = x; y < N; y++){
                if(data[index_of_max] > data[y]){
                    index_of_max = y;
                }
            }
            int temp = data[x];
            data[x] = data[index_of_max];
            data[index_of_max] = temp;
      }
   }
   void insertionSort(int N){
      int i, j, key;
      for(j = 1; j < N; j++){
            key = data[j];
            for(i = j - 1; (i >= 0) && (data[i] > key); i--){
                data[i+1] = data[i];
            }
            data[i+1] = key;
      }
   }
   void shellSort(int N){
      int flag = 1, i, temp, arrayLength = N;
      while(flag || (N > 1)){
            flag = 0;
            N = (N + 1) / 2;
            for(i = 0; i < (arrayLength - N); i++){
                if(data[i + N] < data[i]){
                    temp = data[i + N];
                    data[i + N] = data[i];
                    data[i] = temp;
                    flag = 1;
                }
            }
      }
   }
   
   void quickSort(int low, int high){
      int lowbound = low + 1;
      int highbound = high - 1;
      int temp;
      while(lowbound <= highbound){
            if(data[lowbound] < data[low]){
                lowbound++;
            }else{
                temp = data[lowbound];
                data[lowbound] = data[highbound];
                data[highbound] = temp;
                highbound--;
            }
      }
      highbound++;
      lowbound--;
     
      temp = data[low];
      data[low] = data[lowbound];
      data[lowbound] = temp;
     
      if(low != lowbound)
          quickSort(low, lowbound);
      if(high != highbound)
          quickSort(highbound, high);
   }
 // MERGE SORT
   void mergeSort(int left, int right){
      if(left < right){
              int mid = (left + right) / 2;
              mergeSort(left, mid);
              mergeSort(mid+1, right);
              merge(left,right);
      }
   }

   void merge(int left, int right){
         int size = right - left + 1;
         int mid = (left+right)/2;
      
          int *b = new int[size];
          int count = 0;
          for(int x = left; x <= mid; x++, count++){
              b[count] = data[x];
         }
         for(int x = right; x >= mid+1; x--, count++){
              b[count] = data[x];
         }
         for(int x = 0, y = size-1, put=left; x <= y; put++){
              if(b[x] <= b[y]){
                    data[put] = b[x];
                    x++;
              }
              else{
                    data[put] = b[y];
                    y--;
              }
          }
          delete[] b;
   }
 // END MERGE SORT
 
 // START RADIX SORT
   int radixSort(int size,int p,int k){
      int *counts;
      int *temp;
      int *data_tmp;
      int index;
      int pval;
      int i;
      int j;
      int n;
      data_tmp = data;

      if((counts = (int *)malloc(k * sizeof(int))) == NULL){
            return -1;
      }

      if((temp = (int *)malloc(size * sizeof(int))) == NULL){
            return -1;
      }

      for( n=0; n < p; n++){
            for(i=0; i < k; i++){
                counts[i] = 0;
            }
            pval = (int)pow((double)k,(double)n);

            for(j=0; j < size; j++){
                index = (int)(data_tmp[j] / pval) % k;
                counts[index] = counts[index] +1;
            }
            for(i = 1; i < k; i++){
                counts[i] = counts[i] + counts[i -1];
            }
            for(j = size -1; j >= 0; j--){
                index = (data_tmp[j] / pval) % k;
                temp[counts[index] -1] = data_tmp[j];
                counts[index] = counts[index] -1;
            }
            memcpy(data,temp,size * sizeof(int));
       }
       free(counts);
       free(temp);
       return 0;
   }
   // END RADIX SORT
   void display(int N)
     {
      for (int i=0; i<N; i++)
         cout << data[i] << " ";
     }
 
private:
     int* data;
     int size;
};

void menu()
{
    int ch;
    cout << endl << endl;
    cout << "\n\t\t------------------------------------------" << endl;
    cout << "\t\t\t\tMain Menu ";
    cout << "\n\t\t------------------------------------------" << endl << endl;
    cout << "\t\t[1] - Bubble Sort" << endl;
    cout << "\t\t[2] - Selection Sort" << endl;
    cout << "\t\t[3] - Insertion Sort" << endl;
    cout << "\t\t[4] - Shell Sort" << endl;
    cout << "\t\t[5] - Quick Sort" << endl;
    cout << "\t\t[6] - Merge Sort" << endl;
    cout << "\t\t[7] - Radix Sort" << endl;
    cout << "\t\t[0] - Quit Program" << endl << endl;
    cout << "\n\t\t\tPlease enter your choice : ";
    cin >> ch;
    cout << endl;
    cout << "\n\t\t------------------------------------------" << endl;
}

int main(void)
{
 
 Timer t;
 DataStore d(100000);
 
 //d.randomizeData( 17710 );
 //d.display(1000); //display data that is randomized
 
 ofstream sortOutput("sortOutput.txt");
 int countData;

 menu();
   
 int ch;  
 switch(ch)
 {
    case 1:    cout << "BubbleSort Start" << endl;
               sortOutput << "Bubble Sort\n";
               for(int i = 0, countData = 10000; i < 10; i++)
               {
                    t.start("\nTimer Started\nSorting..");
                    d.bubbleSort(countData);
                    t.stop("Timer Stopped\n");
                    cout << countData << " random numbers sorted" << endl;
                    cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                    sortOutput << countData << "random numbers sort = " 
                               << t.read() << " miliseconds\n" << endl;
                    //d.display(countData); //display sorted data
                    countData += 10000;
                    d.randomizeData(17710);
               }
 
                cout << "BubbleSort End" << endl;
                menu();
                break;
               
               
    case 2:     cout << "SelectionSort Start" << endl;
                sortOutput << "\nSelection Sort\n";
 
                for(int i = 0, countData = 10000; i < 10; i++)
                {
                    t.start("Timer Started\nSorting..");
                    d.selectionSort(countData);
                    t.stop("Timer Stopped\n");
                    cout << countData << " random numbers sorted" << endl;
                    cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                    sortOutput << countData << "random numbers sort = " 
                               << t.read() << " miliseconds\n" << endl;
                    //d.display(countData);
                    countData += 10000;
                    d.randomizeData(17710);
                }
                cout << "SelectionSort End" << endl;
                menu();
                break;
               

     case 3:    cout << "InsertionSort Start" << endl;
                sortOutput << "\nInsertion Sort\n";
 
                for(int i = 0, countData = 10000; i < 10; i++)
                {
                    t.start("Timer Started\nSorting..");
                    d.insertionSort(countData);
                    t.stop("Timer Stopped\n");
                    cout << countData << " random numbers sorted" << endl;
                    cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                    sortOutput << countData << "random numbers sort = " 
                               << t.read() << " miliseconds\n" << endl;
                    //d.display(countData);
                    countData += 10000;
                    d.randomizeData(17710);
                }
                cout << "InsertionSort End" << endl;
                menu();
                break;
               
               
     case 4:    cout << "ShellSort Start" << endl;
                sortOutput << "\nShell Sort\n";        
               
                for(int i = 0, countData = 10000; i < 10; i++)
                {
                    t.start("Timer Started\nSorting..");
                    d.shellSort(countData);
                    t.stop("Timer Stopped\n");
                    cout << countData << " random numbers sorted" << endl;
                    cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                    sortOutput << countData << "random numbers sort = " 
                               << t.read() << " miliseconds\n" << endl;
                    //d.display(countData);
                    countData += 10000;
                    d.randomizeData(17710);
                 }
                 cout << "ShellSort End" << endl;
                 menu();
                 break;
                 
 
     case 5:     cout << "quickSort Start" << endl;
                 sortOutput << "\nQuick Sort\n";
 
                 for(int i = 0, countData = 10000; i < 10; i++)
                 {
                     t.start("Timer Started\nSorting..");
                     d.quickSort(0,countData);
                     t.stop("Timer Stopped\n");
                     cout << countData << " random numbers sorted" << endl;
                     cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                     sortOutput << countData << "random numbers sort = " 
                                << t.read() << " miliseconds\n" << endl;
                     //d.display(countData);
                     countData += 10000;
                     d.randomizeData(17710);
                 }
                 cout << "quickSort End" << endl;
                 menu();
                 break;
 
     case 6:     cout << "mergeSort Start" << endl;
                 sortOutput << "\nMerge Sort\n";
 
                 for(int i = 0, countData = 10000; i < 10; i++)
                 {
                      t.start("Timer Started\nSorting..");
                      d.mergeSort(0, countData);
                      t.stop("Timer Stopped\n");
                      cout << countData << " random numbers sorted" << endl;
                      cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                      sortOutput << countData << "random numbers sort = " 
                                 << t.read() << " miliseconds\n" << endl;
                      //d.display(countData);
                      countData += 10000;
                      d.randomizeData(17710);
                 }
                 cout << "mergeSort End" << endl;
                 menu();
                 break;
                 
                 
     case 7:     cout << "radixSort Start" << endl;
                 sortOutput << "\nRadix Sort\n" << endl;
 
                 for(int i = 0, countData = 10000; i < 10; i++)
                 {
                      t.start("Timer Started\nSorting..");
                      d.radixSort(countData,20,10);
                      t.stop("Timer Stopped\n");
                      cout << countData << " random numbers sorted" << endl;
                      cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                      sortOutput << countData << "random numbers sort = " 
                                 << t.read() << " miliseconds\n" << endl;
                      //d.display(countData);
                      countData += 10000;
                      d.randomizeData(17710);
                  }
                  cout << "radixSort End" << endl;
                  menu();
                  break;
                 

    case 0:       cout << "\n\t\t------------------------------------------" << endl;
                  cout << endl;
                  cout << "\tThank You for using this system!" << endl;
                  cout << "\tGoodbye!" << endl;
                  cout << endl << endl;
                  cout << "\n\t\t------------------------------------------" << endl;
                  cout << endl;  
                  break;
                 
    default:     cout << "Invalid Choice!\a\a\a" << endl;
                 menu();      

  sortOutput.close();
 
  system("pause");
  return 0;
 }
}
C++

Avatar of undefined
Last Comment
imladris

8/22/2022 - Mon
imladris

A while loop allows the code enclosed in its block to be executed repeatedly.

In your case, I'm guessing that what you want to do repeatedly is show the menu, get a response, and sort according to the response.

So the while would begin before the call to menu, and end after the switch.

The second call to menu is probably not needed.

Also, menu should return the value that it got as input (e.g. return(ch)) so that the switch can use that value. So you would wind up with something like:

int ch=menu();
switch(ch)

and menu, of course, would have to be changed to "int menu" instead of "void menu", because now it is returning something.
ASKER
fird

the program show the menu repeatedly but when i choose let say 2 for selection sort, the sorting programs running is not selection sort but also bubble sort. Same goes if i choose other menu.
imladris

That's because in this piece of the code:

ofstream sortOutput("sortOutput.txt");
 int countData;

 menu();
   
 int ch;  
 switch(ch)


ch doesn't get initialized to anything. The call to menu does a "cin>>ch" in it, but it is putting the input into a ch which is *local* to menu. So the code in main is not affected by it. The solution is to change the call to menu so that it returns ch, as I already outlined.
Experts Exchange has (a) saved my job multiple times, (b) saved me hours, days, and even weeks of work, and often (c) makes me look like a superhero! This place is MAGIC!
Walt Forbes
ASKER
fird

meaning that i must change all ch to menu?
imladris

HMmm. How to explain this.

Observe your menu function. It contains a declaration "int ch". That declaration "creates" a variable. That variable is declared *inside* menu, so it is *local* to menu. That means it will cease to exist as soon as you exit menu.

You also have a variable "int ch" declared in main. It is declared inside main, and so it is local to *main*. That is, even though it happens to have the same name, it is a completely separate variable.

So the goal is that you want the variable ch (in main) to get the value of the input. The value of the input was assigned to ch (in menu). The apparent simplest approach to modifying your program is to change menu, so that it *returns* the value of its local variable. So change the declaration of menu, and give it a return. Something like:

int menu()
{   ...
    ...
     return(ch);
}

Then, in main, you can say:

int ch=menu();

Now the input is assigned to ch (in menu). Then ch (in menu) is returned to main, where it is assigned to ch (in main).
ASKER
fird

sorry i didn't get it :( which part i must change to menu?
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
ASKER
fird

it is not working :(
ASKER
fird

sorry i can't get u :(
imladris

If you attempted to make the alterations I suggested, please post the current code for menu and main, and list any errors or symptoms you are experiencing when you compile or run the code.
All of life is about relationships, and EE has made a viirtual community a real community. It lifts everyone's boat
William Peck
ASKER
fird

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <sys\timeb.h>
#include <ctime>
#include <string>
#include <fstream>

using namespace std;

class Timer
{
 public:
 Timer()
   : secStart(0), secStop(0),
     milliSecStart(0), milliSecStop(0)
 { }  
 void start(string msg="")
   {
    cout << msg;
    ftime(&time);
    secStart = time.time;    
    milliSecStart = time.millitm;
   }
 void stop(string msg="")
   {
    ftime(&time);
    secStop = time.time;    
    milliSecStop = time.millitm;
    cout << msg;
   }

 //Will returns number of milliseconds ellapsed
 long read()
   {
         secDiff =      secStop -      secStart;
    milliSecDiff = milliSecStop - milliSecStart;
    if (milliSecDiff < 0)
       {
        milliSecDiff += 1000;
        secDiff--;
       }
     return (secDiff*1000 + milliSecDiff);
   }  
 private:
   long       secStart,      secStop;
   short milliSecStart, milliSecStop;
   long       secDiff,  milliSecDiff;
   struct timeb time;
};

class DataStore
{
 public:
   DataStore(int Size)
     {  
       size = Size;
       data = new int[Size];
     }
   ~DataStore()
     { delete[] data; }
   void randomizeData(int seekValue)
     {
      srand( seekValue );
      for (int i=0; i<size; i++)
         { data[i] = rand() % size; }
     }
   void bubbleSort(int N)
     {
      for (int i=0; i<N; i++)
      for (int j=N-1; j>=i+1; j--)
        {
         if (data[j] < data[j-1] )
           {
            int  temp = data[j];
            data[j]   = data[j-1];
            data[j-1] = temp;
           }
        }
     }
   void selectionSort(int N){
      for (int x = 0; x < N; x++){
            int index_of_max = x;
            for(int y = x; y < N; y++){
                if(data[index_of_max] > data[y]){
                    index_of_max = y;
                }
            }
            int temp = data[x];
            data[x] = data[index_of_max];
            data[index_of_max] = temp;
      }
   }
   void insertionSort(int N){
      int i, j, key;
      for(j = 1; j < N; j++){
            key = data[j];
            for(i = j - 1; (i >= 0) && (data[i] > key); i--){
                data[i+1] = data[i];
            }
            data[i+1] = key;
      }
   }
   void shellSort(int N){
      int flag = 1, i, temp, arrayLength = N;
      while(flag || (N > 1)){
            flag = 0;
            N = (N + 1) / 2;
            for(i = 0; i < (arrayLength - N); i++){
                if(data[i + N] < data[i]){
                    temp = data[i + N];
                    data[i + N] = data[i];
                    data[i] = temp;
                    flag = 1;
                }
            }
      }
   }
   
   void quickSort(int low, int high){
      int lowbound = low + 1;
      int highbound = high - 1;
      int temp;
      while(lowbound <= highbound){
            if(data[lowbound] < data[low]){
                lowbound++;
            }else{
                temp = data[lowbound];
                data[lowbound] = data[highbound];
                data[highbound] = temp;
                highbound--;
            }
      }
      highbound++;
      lowbound--;
     
      temp = data[low];
      data[low] = data[lowbound];
      data[lowbound] = temp;
     
      if(low != lowbound)
          quickSort(low, lowbound);
      if(high != highbound)
          quickSort(highbound, high);
   }
 // MERGE SORT
   void mergeSort(int left, int right){
      if(left < right){
              int mid = (left + right) / 2;
              mergeSort(left, mid);
              mergeSort(mid+1, right);
              merge(left,right);
      }
   }

   void merge(int left, int right){
         int size = right - left + 1;
         int mid = (left+right)/2;
      
          int *b = new int[size];
          int count = 0;
          for(int x = left; x <= mid; x++, count++){
              b[count] = data[x];
         }
         for(int x = right; x >= mid+1; x--, count++){
              b[count] = data[x];
         }
         for(int x = 0, y = size-1, put=left; x <= y; put++){
              if(b[x] <= b[y]){
                    data[put] = b[x];
                    x++;
              }
              else{
                    data[put] = b[y];
                    y--;
              }
          }
          delete[] b;
   }
 // END MERGE SORT
 
 // START RADIX SORT
   int radixSort(int size,int p,int k){
      int *counts;
      int *temp;
      int *data_tmp;
      int index;
      int pval;
      int i;
      int j;
      int n;
      data_tmp = data;

      if((counts = (int *)malloc(k * sizeof(int))) == NULL){
            return -1;
      }

      if((temp = (int *)malloc(size * sizeof(int))) == NULL){
            return -1;
      }

      for( n=0; n < p; n++){
            for(i=0; i < k; i++){
                counts[i] = 0;
            }
            pval = (int)pow((double)k,(double)n);

            for(j=0; j < size; j++){
                index = (int)(data_tmp[j] / pval) % k;
                counts[index] = counts[index] +1;
            }
            for(i = 1; i < k; i++){
                counts[i] = counts[i] + counts[i -1];
            }
            for(j = size -1; j >= 0; j--){
                index = (data_tmp[j] / pval) % k;
                temp[counts[index] -1] = data_tmp[j];
                counts[index] = counts[index] -1;
            }
            memcpy(data,temp,size * sizeof(int));
       }
       free(counts);
       free(temp);
       return 0;
   }
   // END RADIX SORT
   void display(int N)
     {
      for (int i=0; i<N; i++)
         cout << data[i] << " ";
     }
 
private:
     int* data;
     int size;
};

void sorting();

void menu()
{
    char ch;
    cout << endl << endl;
    cout << "\t******************************************" << endl;
    cout << "\t\t\tMain Menu " << endl;
    cout << "\t******************************************" << endl << endl;
    cout << "\t\t[1] - Bubble Sort" << endl;
    cout << "\t\t[2] - Selection Sort" << endl;
    cout << "\t\t[3] - Insertion Sort" << endl;
    cout << "\t\t[4] - Shell Sort" << endl;
    cout << "\t\t[5] - Quick Sort" << endl;
    cout << "\t\t[6] - Merge Sort" << endl;
    cout << "\t\t[7] - Radix Sort" << endl << endl;
    cout << "\t\t[8] - Quit Program" << endl << endl;
    cout << endl;
    cout << "\t******************************************" << endl << endl;
    cout << "\tPlease enter your choice : ";  
    cin >> ch;  
    sorting();
}

void sorting()
{
 char ch;
 int countData;
 Timer t;
 DataStore d(100000);
 
 ofstream sortOutput("sortOutput.txt");
 do { switch(!ch)
 {
    case 1:    cout << "BubbleSort Start" << endl;
               sortOutput << "Bubble Sort\n";
               for(int i = 0, countData = 10000; i < 10; i++)
               {
                    t.start("\nTimer Started\nSorting..");
                    d.bubbleSort(countData);
                    t.stop("Timer Stopped\n");
                    cout << countData << " random numbers sorted" << endl;
                    cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                    sortOutput << countData << "random numbers sort = " 
                               << t.read() << " miliseconds\n" << endl;
                    //d.display(countData); //display sorted data
                    countData += 10000;
                    d.randomizeData(17710);
                }
                cout << "BubbleSort End" << endl;
                menu();
                break;
               
               
    case 2:     cout << "SelectionSort Start" << endl;
                sortOutput << "\nSelection Sort\n";
 
                for(int i = 0, countData = 10000; i < 10; i++)
                {
                    t.start("Timer Started\nSorting..");
                    d.selectionSort(countData);
                    t.stop("Timer Stopped\n");
                    cout << countData << " random numbers sorted" << endl;
                    cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                    sortOutput << countData << "random numbers sort = " 
                               << t.read() << " miliseconds\n" << endl;
                    //d.display(countData);
                    countData += 10000;
                    d.randomizeData(17710);
                }
                cout << "SelectionSort End" << endl;
                menu();
                break;
               

     case 3:    cout << "InsertionSort Start" << endl;
                sortOutput << "\nInsertion Sort\n";
 
                for(int i = 0, countData = 10000; i < 10; i++)
                {
                    t.start("Timer Started\nSorting..");
                    d.insertionSort(countData);
                    t.stop("Timer Stopped\n");
                    cout << countData << " random numbers sorted" << endl;
                    cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                    sortOutput << countData << "random numbers sort = " 
                               << t.read() << " miliseconds\n" << endl;
                    //d.display(countData);
                    countData += 10000;
                    d.randomizeData(17710);
                }
                cout << "InsertionSort End" << endl;
                menu();
                break;
               
               
     case 4:    cout << "ShellSort Start" << endl;
                sortOutput << "\nShell Sort\n";        
               
                for(int i = 0, countData = 10000; i < 10; i++)
                {
                    t.start("Timer Started\nSorting..");
                    d.shellSort(countData);
                    t.stop("Timer Stopped\n");
                    cout << countData << " random numbers sorted" << endl;
                    cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                    sortOutput << countData << "random numbers sort = " 
                               << t.read() << " miliseconds\n" << endl;
                    //d.display(countData);
                    countData += 10000;
                    d.randomizeData(17710);
                 }
                 cout << "ShellSort End" << endl;
                 menu();
                 break;
                 
 
     case 5:     cout << "quickSort Start" << endl;
                 sortOutput << "\nQuick Sort\n";
 
                 for(int i = 0, countData = 10000; i < 10; i++)
                 {
                     t.start("Timer Started\nSorting..");
                     d.quickSort(0,countData);
                     t.stop("Timer Stopped\n");
                     cout << countData << " random numbers sorted" << endl;
                     cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                     sortOutput << countData << "random numbers sort = " 
                                << t.read() << " miliseconds\n" << endl;
                     //d.display(countData);
                     countData += 10000;
                     d.randomizeData(17710);
                 }
                 cout << "quickSort End" << endl;
                 menu();
                 break;
 
     case 6:     cout << "mergeSort Start" << endl;
                 sortOutput << "\nMerge Sort\n";
 
                 for(int i = 0, countData = 10000; i < 10; i++)
                 {
                      t.start("Timer Started\nSorting..");
                      d.mergeSort(0, countData);
                      t.stop("Timer Stopped\n");
                      cout << countData << " random numbers sorted" << endl;
                      cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                      sortOutput << countData << "random numbers sort = " 
                                 << t.read() << " miliseconds\n" << endl;
                      //d.display(countData);
                      countData += 10000;
                      d.randomizeData(17710);
                 }
                 cout << "mergeSort End" << endl;
                 menu();
                 break;
                 
                 
     case 7:     cout << "radixSort Start" << endl;
                 sortOutput << "\nRadix Sort\n" << endl;
 
                 for(int i = 0, countData = 10000; i < 10; i++)
                 {
                      t.start("Timer Started\nSorting..");
                      d.radixSort(countData,20,10);
                      t.stop("Timer Stopped\n");
                      cout << countData << " random numbers sorted" << endl;
                      cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                      sortOutput << countData << "random numbers sort = " 
                                 << t.read() << " miliseconds\n" << endl;
                      //d.display(countData);
                      countData += 10000;
                      d.randomizeData(17710);
                  }
                  cout << "radixSort End" << endl;
                  menu();
                  break;
                 

    case 8:      cout << "\t*******************************************" << endl;
                 cout << endl;
                 cout << "\t\tThank You for using this system!" << endl;
                 cout << "\t\tGoodbye!" << endl;
                 cout << endl << endl;
                 cout << "\t*******************************************" << endl;
                 cout << endl;  
                 break;
                 
    default:     cout << "\t\tInvalid Choice!\a\a\a" << endl;
                 menu();      

 }
 
  while sortOutput.close();
 }


int main(void)
{
 
 Timer t;
 DataStore d(100000);
 
 d.randomizeData( 17710 );
 //d.display(1000); //display data that is randomized
 
 menu();

 system("pause");
 return 0;
 
}

/////////////////////////////////////////

i got errors here. the errors are 447 C:\WINDOWS\Desktop\esemen3.cpp
return-statement with a value, in function and 431 C:\WINDOWS\Desktop\esemen3.cpp
parse error before `.' token



 }
 
  while sortOutput.close();
 }
imladris

HMMmmm. I was proposing that you change menu to this:

int menu()
{
    int ch;
    cout << endl << endl;
    cout << "\n\t\t------------------------------------------" << endl;
    cout << "\t\t\t\tMain Menu ";
    cout << "\n\t\t------------------------------------------" << endl << endl;
    cout << "\t\t[1] - Bubble Sort" << endl;
    cout << "\t\t[2] - Selection Sort" << endl;
    cout << "\t\t[3] - Insertion Sort" << endl;
    cout << "\t\t[4] - Shell Sort" << endl;
    cout << "\t\t[5] - Quick Sort" << endl;
    cout << "\t\t[6] - Merge Sort" << endl;
    cout << "\t\t[7] - Radix Sort" << endl;
    cout << "\t\t[0] - Quit Program" << endl << endl;
    cout << "\n\t\t\tPlease enter your choice : ";
    cin >> ch;
    cout << endl;
    cout << "\n\t\t------------------------------------------" << endl;
    return(ch);
}


And that you change main to this:

int main(void)
{
 
 Timer t;
 DataStore d(100000);
 
 //d.randomizeData( 17710 );
 //d.display(1000); //display data that is randomized
 
 ofstream sortOutput("sortOutput.txt");
 int countData;

int ch= menu();
   
 switch(ch)
 {     ...
        ...
  }

  sortOutput.close();
 
  system("pause");
  return 0;
 }

ASKER
fird

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <sys\timeb.h>
#include <ctime>
#include <string>
#include <fstream>

using namespace std;

class Timer
{
 public:
 Timer()
   : secStart(0), secStop(0),
     milliSecStart(0), milliSecStop(0)
 { }  
 void start(string msg="")
   {
    cout << msg;
    ftime(&time);
    secStart = time.time;    
    milliSecStart = time.millitm;
   }
 void stop(string msg="")
   {
    ftime(&time);
    secStop = time.time;    
    milliSecStop = time.millitm;
    cout << msg;
   }

 //Will returns number of milliseconds ellapsed
 long read()
   {
         secDiff =      secStop -      secStart;
    milliSecDiff = milliSecStop - milliSecStart;
    if (milliSecDiff < 0)
       {
        milliSecDiff += 1000;
        secDiff--;
       }
     return (secDiff*1000 + milliSecDiff);
   }  
 private:
   long       secStart,      secStop;
   short milliSecStart, milliSecStop;
   long       secDiff,  milliSecDiff;
   struct timeb time;
};

class DataStore
{
 public:
   DataStore(int Size)
     {  
       size = Size;
       data = new int[Size];
     }
   ~DataStore()
     { delete[] data; }
   void randomizeData(int seekValue)
     {
      srand( seekValue );
      for (int i=0; i<size; i++)
         { data[i] = rand() % size; }
     }
   void bubbleSort(int N)
     {
      for (int i=0; i<N; i++)
      for (int j=N-1; j>=i+1; j--)
        {
         if (data[j] < data[j-1] )
           {
            int  temp = data[j];
            data[j]   = data[j-1];
            data[j-1] = temp;
           }
        }
     }
   void selectionSort(int N){
      for (int x = 0; x < N; x++){
            int index_of_max = x;
            for(int y = x; y < N; y++){
                if(data[index_of_max] > data[y]){
                    index_of_max = y;
                }
            }
            int temp = data[x];
            data[x] = data[index_of_max];
            data[index_of_max] = temp;
      }
   }
   void insertionSort(int N){
      int i, j, key;
      for(j = 1; j < N; j++){
            key = data[j];
            for(i = j - 1; (i >= 0) && (data[i] > key); i--){
                data[i+1] = data[i];
            }
            data[i+1] = key;
      }
   }
   void shellSort(int N){
      int flag = 1, i, temp, arrayLength = N;
      while(flag || (N > 1)){
            flag = 0;
            N = (N + 1) / 2;
            for(i = 0; i < (arrayLength - N); i++){
                if(data[i + N] < data[i]){
                    temp = data[i + N];
                    data[i + N] = data[i];
                    data[i] = temp;
                    flag = 1;
                }
            }
      }
   }
   
   void quickSort(int low, int high){
      int lowbound = low + 1;
      int highbound = high - 1;
      int temp;
      while(lowbound <= highbound){
            if(data[lowbound] < data[low]){
                lowbound++;
            }else{
                temp = data[lowbound];
                data[lowbound] = data[highbound];
                data[highbound] = temp;
                highbound--;
            }
      }
      highbound++;
      lowbound--;
     
      temp = data[low];
      data[low] = data[lowbound];
      data[lowbound] = temp;
     
      if(low != lowbound)
          quickSort(low, lowbound);
      if(high != highbound)
          quickSort(highbound, high);
   }
 // MERGE SORT
   void mergeSort(int left, int right){
      if(left < right){
              int mid = (left + right) / 2;
              mergeSort(left, mid);
              mergeSort(mid+1, right);
              merge(left,right);
      }
   }

   void merge(int left, int right){
         int size = right - left + 1;
         int mid = (left+right)/2;
      
          int *b = new int[size];
          int count = 0;
          for(int x = left; x <= mid; x++, count++){
              b[count] = data[x];
         }
         for(int x = right; x >= mid+1; x--, count++){
              b[count] = data[x];
         }
         for(int x = 0, y = size-1, put=left; x <= y; put++){
              if(b[x] <= b[y]){
                    data[put] = b[x];
                    x++;
              }
              else{
                    data[put] = b[y];
                    y--;
              }
          }
          delete[] b;
   }
 // END MERGE SORT
 
 // START RADIX SORT
   int radixSort(int size,int p,int k){
      int *counts;
      int *temp;
      int *data_tmp;
      int index;
      int pval;
      int i;
      int j;
      int n;
      data_tmp = data;

      if((counts = (int *)malloc(k * sizeof(int))) == NULL){
            return -1;
      }

      if((temp = (int *)malloc(size * sizeof(int))) == NULL){
            return -1;
      }

      for( n=0; n < p; n++){
            for(i=0; i < k; i++){
                counts[i] = 0;
            }
            pval = (int)pow((double)k,(double)n);

            for(j=0; j < size; j++){
                index = (int)(data_tmp[j] / pval) % k;
                counts[index] = counts[index] +1;
            }
            for(i = 1; i < k; i++){
                counts[i] = counts[i] + counts[i -1];
            }
            for(j = size -1; j >= 0; j--){
                index = (data_tmp[j] / pval) % k;
                temp[counts[index] -1] = data_tmp[j];
                counts[index] = counts[index] -1;
            }
            memcpy(data,temp,size * sizeof(int));
       }
       free(counts);
       free(temp);
       return 0;
   }
   // END RADIX SORT
   void display(int N)
     {
      for (int i=0; i<N; i++)
         cout << data[i] << " ";
     }
 
private:
     int* data;
     int size;
};

void sorting();

int menu()
{
    int ch;
    cout << endl << endl;
    cout << "\n\t\t------------------------------------------" << endl;
    cout << "\t\t\t\tMain Menu ";
    cout << "\n\t\t------------------------------------------" << endl << endl;
    cout << "\t\t[1] - Bubble Sort" << endl;
    cout << "\t\t[2] - Selection Sort" << endl;
    cout << "\t\t[3] - Insertion Sort" << endl;
    cout << "\t\t[4] - Shell Sort" << endl;
    cout << "\t\t[5] - Quick Sort" << endl;
    cout << "\t\t[6] - Merge Sort" << endl;
    cout << "\t\t[7] - Radix Sort" << endl;
    cout << "\t\t[0] - Quit Program" << endl << endl;
    cout << "\n\t\t\tPlease enter your choice : ";
    cin >> ch;
    cout << endl;
    cout << "\n\t\t------------------------------------------" << endl;
    return(ch);
}
int main(void)
{
 
 Timer t;
 DataStore d(100000);
 
 //d.randomizeData( 17710 );
 //d.display(1000); //display data that is randomized
 
 ofstream sortOutput("sortOutput.txt");
 int countData;

int ch= menu();

 switch(!ch)
 {
    case 1:    cout << "BubbleSort Start" << endl;
               sortOutput << "Bubble Sort\n";
               for(int i = 0, countData = 10000; i < 10; i++)
               {
                    t.start("\nTimer Started\nSorting..");
                    d.bubbleSort(countData);
                    t.stop("Timer Stopped\n");
                    cout << countData << " random numbers sorted" << endl;
                    cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                    sortOutput << countData << "random numbers sort = " 
                               << t.read() << " miliseconds\n" << endl;
                    //d.display(countData); //display sorted data
                    countData += 10000;
                    d.randomizeData(17710);
                }
                cout << "BubbleSort End" << endl;
                menu();
                break;
               
               
    case 2:     cout << "SelectionSort Start" << endl;
                sortOutput << "\nSelection Sort\n";
 
                for(int i = 0, countData = 10000; i < 10; i++)
                {
                    t.start("Timer Started\nSorting..");
                    d.selectionSort(countData);
                    t.stop("Timer Stopped\n");
                    cout << countData << " random numbers sorted" << endl;
                    cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                    sortOutput << countData << "random numbers sort = " 
                               << t.read() << " miliseconds\n" << endl;
                    //d.display(countData);
                    countData += 10000;
                    d.randomizeData(17710);
                }
                cout << "SelectionSort End" << endl;
                menu();
                break;
               

     case 3:    cout << "InsertionSort Start" << endl;
                sortOutput << "\nInsertion Sort\n";
 
                for(int i = 0, countData = 10000; i < 10; i++)
                {
                    t.start("Timer Started\nSorting..");
                    d.insertionSort(countData);
                    t.stop("Timer Stopped\n");
                    cout << countData << " random numbers sorted" << endl;
                    cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                    sortOutput << countData << "random numbers sort = " 
                               << t.read() << " miliseconds\n" << endl;
                    //d.display(countData);
                    countData += 10000;
                    d.randomizeData(17710);
                }
                cout << "InsertionSort End" << endl;
                menu();
                break;
               
               
     case 4:    cout << "ShellSort Start" << endl;
                sortOutput << "\nShell Sort\n";        
               
                for(int i = 0, countData = 10000; i < 10; i++)
                {
                    t.start("Timer Started\nSorting..");
                    d.shellSort(countData);
                    t.stop("Timer Stopped\n");
                    cout << countData << " random numbers sorted" << endl;
                    cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                    sortOutput << countData << "random numbers sort = " 
                               << t.read() << " miliseconds\n" << endl;
                    //d.display(countData);
                    countData += 10000;
                    d.randomizeData(17710);
                 }
                 cout << "ShellSort End" << endl;
                 menu();
                 break;
                 
 
     case 5:     cout << "quickSort Start" << endl;
                 sortOutput << "\nQuick Sort\n";
 
                 for(int i = 0, countData = 10000; i < 10; i++)
                 {
                     t.start("Timer Started\nSorting..");
                     d.quickSort(0,countData);
                     t.stop("Timer Stopped\n");
                     cout << countData << " random numbers sorted" << endl;
                     cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                     sortOutput << countData << "random numbers sort = " 
                                << t.read() << " miliseconds\n" << endl;
                     //d.display(countData);
                     countData += 10000;
                     d.randomizeData(17710);
                 }
                 cout << "quickSort End" << endl;
                 menu();
                 break;
 
     case 6:     cout << "mergeSort Start" << endl;
                 sortOutput << "\nMerge Sort\n";
 
                 for(int i = 0, countData = 10000; i < 10; i++)
                 {
                      t.start("Timer Started\nSorting..");
                      d.mergeSort(0, countData);
                      t.stop("Timer Stopped\n");
                      cout << countData << " random numbers sorted" << endl;
                      cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                      sortOutput << countData << "random numbers sort = " 
                                 << t.read() << " miliseconds\n" << endl;
                      //d.display(countData);
                      countData += 10000;
                      d.randomizeData(17710);
                 }
                 cout << "mergeSort End" << endl;
                 menu();
                 break;
                 
                 
     case 7:     cout << "radixSort Start" << endl;
                 sortOutput << "\nRadix Sort\n" << endl;
 
                 for(int i = 0, countData = 10000; i < 10; i++)
                 {
                      t.start("Timer Started\nSorting..");
                      d.radixSort(countData,20,10);
                      t.stop("Timer Stopped\n");
                      cout << countData << " random numbers sorted" << endl;
                      cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                      sortOutput << countData << "random numbers sort = " 
                                 << t.read() << " miliseconds\n" << endl;
                      //d.display(countData);
                      countData += 10000;
                      d.randomizeData(17710);
                  }
                  cout << "radixSort End" << endl;
                  menu();
                  break;
                 

    case 8:      cout << "\t*******************************************" << endl;
                 cout << endl;
                 cout << "\t\tThank You for using this system!" << endl;
                 cout << "\t\tGoodbye!" << endl;
                 cout << endl << endl;
                 cout << "\t*******************************************" << endl;
                 cout << endl;  
                 break;
                 
    default:     cout << "\t\tInvalid Choice!\a\a\a" << endl;
                 menu();      

 }
  sortOutput.close();
}


int menu();

 system("pause");
 return 0;
 
}


-----------------------

still got error :(
Get an unlimited membership to EE for less than $4 a week.
Unlimited question asking, solutions, articles and more.
ASKER
fird

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <sys\timeb.h>
#include <ctime>
#include <string>
#include <fstream>

using namespace std;

class Timer
{
 public:
 Timer()
   : secStart(0), secStop(0),
     milliSecStart(0), milliSecStop(0)
 { }  
 void start(string msg="")
   {
    cout << msg;
    ftime(&time);
    secStart = time.time;    
    milliSecStart = time.millitm;
   }
 void stop(string msg="")
   {
    ftime(&time);
    secStop = time.time;    
    milliSecStop = time.millitm;
    cout << msg;
   }

 //Will returns number of milliseconds ellapsed
 long read()
   {
         secDiff =      secStop -      secStart;
    milliSecDiff = milliSecStop - milliSecStart;
    if (milliSecDiff < 0)
       {
        milliSecDiff += 1000;
        secDiff--;
       }
     return (secDiff*1000 + milliSecDiff);
   }  
 private:
   long       secStart,      secStop;
   short milliSecStart, milliSecStop;
   long       secDiff,  milliSecDiff;
   struct timeb time;
};

class DataStore
{
 public:
   DataStore(int Size)
     {  
       size = Size;
       data = new int[Size];
     }
   ~DataStore()
     { delete[] data; }
   void randomizeData(int seekValue)
     {
      srand( seekValue );
      for (int i=0; i<size; i++)
         { data[i] = rand() % size; }
     }
   void bubbleSort(int N)
     {
      for (int i=0; i<N; i++)
      for (int j=N-1; j>=i+1; j--)
        {
         if (data[j] < data[j-1] )
           {
            int  temp = data[j];
            data[j]   = data[j-1];
            data[j-1] = temp;
           }
        }
     }
   void selectionSort(int N){
      for (int x = 0; x < N; x++){
            int index_of_max = x;
            for(int y = x; y < N; y++){
                if(data[index_of_max] > data[y]){
                    index_of_max = y;
                }
            }
            int temp = data[x];
            data[x] = data[index_of_max];
            data[index_of_max] = temp;
      }
   }
   void insertionSort(int N){
      int i, j, key;
      for(j = 1; j < N; j++){
            key = data[j];
            for(i = j - 1; (i >= 0) && (data[i] > key); i--){
                data[i+1] = data[i];
            }
            data[i+1] = key;
      }
   }
   void shellSort(int N){
      int flag = 1, i, temp, arrayLength = N;
      while(flag || (N > 1)){
            flag = 0;
            N = (N + 1) / 2;
            for(i = 0; i < (arrayLength - N); i++){
                if(data[i + N] < data[i]){
                    temp = data[i + N];
                    data[i + N] = data[i];
                    data[i] = temp;
                    flag = 1;
                }
            }
      }
   }
   
   void quickSort(int low, int high){
      int lowbound = low + 1;
      int highbound = high - 1;
      int temp;
      while(lowbound <= highbound){
            if(data[lowbound] < data[low]){
                lowbound++;
            }else{
                temp = data[lowbound];
                data[lowbound] = data[highbound];
                data[highbound] = temp;
                highbound--;
            }
      }
      highbound++;
      lowbound--;
     
      temp = data[low];
      data[low] = data[lowbound];
      data[lowbound] = temp;
     
      if(low != lowbound)
          quickSort(low, lowbound);
      if(high != highbound)
          quickSort(highbound, high);
   }
 // MERGE SORT
   void mergeSort(int left, int right){
      if(left < right){
              int mid = (left + right) / 2;
              mergeSort(left, mid);
              mergeSort(mid+1, right);
              merge(left,right);
      }
   }

   void merge(int left, int right){
         int size = right - left + 1;
         int mid = (left+right)/2;
      
          int *b = new int[size];
          int count = 0;
          for(int x = left; x <= mid; x++, count++){
              b[count] = data[x];
         }
         for(int x = right; x >= mid+1; x--, count++){
              b[count] = data[x];
         }
         for(int x = 0, y = size-1, put=left; x <= y; put++){
              if(b[x] <= b[y]){
                    data[put] = b[x];
                    x++;
              }
              else{
                    data[put] = b[y];
                    y--;
              }
          }
          delete[] b;
   }
 // END MERGE SORT
 
 // START RADIX SORT
   int radixSort(int size,int p,int k){
      int *counts;
      int *temp;
      int *data_tmp;
      int index;
      int pval;
      int i;
      int j;
      int n;
      data_tmp = data;

      if((counts = (int *)malloc(k * sizeof(int))) == NULL){
            return -1;
      }

      if((temp = (int *)malloc(size * sizeof(int))) == NULL){
            return -1;
      }

      for( n=0; n < p; n++){
            for(i=0; i < k; i++){
                counts[i] = 0;
            }
            pval = (int)pow((double)k,(double)n);

            for(j=0; j < size; j++){
                index = (int)(data_tmp[j] / pval) % k;
                counts[index] = counts[index] +1;
            }
            for(i = 1; i < k; i++){
                counts[i] = counts[i] + counts[i -1];
            }
            for(j = size -1; j >= 0; j--){
                index = (data_tmp[j] / pval) % k;
                temp[counts[index] -1] = data_tmp[j];
                counts[index] = counts[index] -1;
            }
            memcpy(data,temp,size * sizeof(int));
       }
       free(counts);
       free(temp);
       return 0;
   }
   // END RADIX SORT
   void display(int N)
     {
      for (int i=0; i<N; i++)
         cout << data[i] << " ";
     }
 
private:
     int* data;
     int size;
};

void sorting();

/*void menu()
{
    char ch;
    cout << endl << endl;
    cout << "\t******************************************" << endl;
    cout << "\t\t\tMain Menu " << endl;
    cout << "\t******************************************" << endl << endl;
    cout << "\t\t[1] - Bubble Sort" << endl;
    cout << "\t\t[2] - Selection Sort" << endl;
    cout << "\t\t[3] - Insertion Sort" << endl;
    cout << "\t\t[4] - Shell Sort" << endl;
    cout << "\t\t[5] - Quick Sort" << endl;
    cout << "\t\t[6] - Merge Sort" << endl;
    cout << "\t\t[7] - Radix Sort" << endl << endl;
    cout << "\t\t[8] - Quit Program" << endl << endl;
    cout << endl;
    cout << "\t******************************************" << endl << endl;
    cout << "\tPlease enter your choice : ";  
    cin >> ch;  
    sorting();
}
*/
void sorting()
{
// int ch;
 int countData;
 Timer t;
 DataStore d(100000);
 
 ofstream sortOutput("sortOutput.txt");
 
 /*  
  switch(ch)
 {
    case 1:    cout << "BubbleSort Start" << endl;
               sortOutput << "Bubble Sort\n";
               for(int i = 0, countData = 10000; i < 10; i++)
               {
                    t.start("\nTimer Started\nSorting..");
                    d.bubbleSort(countData);
                    t.stop("Timer Stopped\n");
                    cout << countData << " random numbers sorted" << endl;
                    cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                    sortOutput << countData << "random numbers sort = " 
                               << t.read() << " miliseconds\n" << endl;
                    //d.display(countData); //display sorted data
                    countData += 10000;
                    d.randomizeData(17710);
                }
                cout << "BubbleSort End" << endl;
              //  main(void);
                break;
               
               
    case 2:     cout << "SelectionSort Start" << endl;
                sortOutput << "\nSelection Sort\n";
 
                for(int i = 0, countData = 10000; i < 10; i++)
                {
                    t.start("Timer Started\nSorting..");
                    d.selectionSort(countData);
                    t.stop("Timer Stopped\n");
                    cout << countData << " random numbers sorted" << endl;
                    cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                    sortOutput << countData << "random numbers sort = " 
                               << t.read() << " miliseconds\n" << endl;
                    //d.display(countData);
                    countData += 10000;
                    d.randomizeData(17710);
                }
                cout << "SelectionSort End" << endl;
             //   menu();
                break;
               

     case 3:    cout << "InsertionSort Start" << endl;
                sortOutput << "\nInsertion Sort\n";
 
                for(int i = 0, countData = 10000; i < 10; i++)
                {
                    t.start("Timer Started\nSorting..");
                    d.insertionSort(countData);
                    t.stop("Timer Stopped\n");
                    cout << countData << " random numbers sorted" << endl;
                    cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                    sortOutput << countData << "random numbers sort = " 
                               << t.read() << " miliseconds\n" << endl;
                    //d.display(countData);
                    countData += 10000;
                    d.randomizeData(17710);
                }
                cout << "InsertionSort End" << endl;
               // menu();
                break;
               
               
     case 4:    cout << "ShellSort Start" << endl;
                sortOutput << "\nShell Sort\n";        
               
                for(int i = 0, countData = 10000; i < 10; i++)
                {
                    t.start("Timer Started\nSorting..");
                    d.shellSort(countData);
                    t.stop("Timer Stopped\n");
                    cout << countData << " random numbers sorted" << endl;
                    cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                    sortOutput << countData << "random numbers sort = " 
                               << t.read() << " miliseconds\n" << endl;
                    //d.display(countData);
                    countData += 10000;
                    d.randomizeData(17710);
                 }
                 cout << "ShellSort End" << endl;
              //   menu();
                 break;
                 
 
     case 5:     cout << "quickSort Start" << endl;
                 sortOutput << "\nQuick Sort\n";
 
                 for(int i = 0, countData = 10000; i < 10; i++)
                 {
                     t.start("Timer Started\nSorting..");
                     d.quickSort(0,countData);
                     t.stop("Timer Stopped\n");
                     cout << countData << " random numbers sorted" << endl;
                     cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                     sortOutput << countData << "random numbers sort = " 
                                << t.read() << " miliseconds\n" << endl;
                     //d.display(countData);
                     countData += 10000;
                     d.randomizeData(17710);
                 }
                 cout << "quickSort End" << endl;
            //     menu();
                 break;
 
     case 6:     cout << "mergeSort Start" << endl;
                 sortOutput << "\nMerge Sort\n";
 
                 for(int i = 0, countData = 10000; i < 10; i++)
                 {
                      t.start("Timer Started\nSorting..");
                      d.mergeSort(0, countData);
                      t.stop("Timer Stopped\n");
                      cout << countData << " random numbers sorted" << endl;
                      cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                      sortOutput << countData << "random numbers sort = " 
                                 << t.read() << " miliseconds\n" << endl;
                      //d.display(countData);
                      countData += 10000;
                      d.randomizeData(17710);
                 }
                 cout << "mergeSort End" << endl;
            //     menu();
                 break;
                 
                 
     case 7:     cout << "radixSort Start" << endl;
                 sortOutput << "\nRadix Sort\n" << endl;
 
                 for(int i = 0, countData = 10000; i < 10; i++)
                 {
                      t.start("Timer Started\nSorting..");
                      d.radixSort(countData,20,10);
                      t.stop("Timer Stopped\n");
                      cout << countData << " random numbers sorted" << endl;
                      cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                      sortOutput << countData << "random numbers sort = " 
                                 << t.read() << " miliseconds\n" << endl;
                      //d.display(countData);
                      countData += 10000;
                      d.randomizeData(17710);
                  }
                  cout << "radixSort End" << endl;
          //        menu();
                  break;
                 

    case 8:      cout << "\t*******************************************" << endl;
                 cout << endl;
                 cout << "\t\tThank You for using this system!" << endl;
                 cout << "\t\tGoodbye!" << endl;
                 cout << endl << endl;
                 cout << "\t*******************************************" << endl;
                 cout << endl;  
                 break;
                 
    default:     cout << "\t\tInvalid Choice!\a\a\a" << endl;
               //  menu();      

 }
 
  sortOutput.close();
 */
}

int main(void)
{
 int ch;
 Timer t;
 DataStore d(100000);
 
 d.randomizeData( 17710 );
 ofstream sortOutput("sortOutput.txt");
 //d.display(1000); //display data that is randomized
 
 cout << endl << endl;
    cout << "\t******************************************" << endl;
    cout << "\t\t\tMain Menu " << endl;
    cout << "\t******************************************" << endl << endl;
    cout << "\t\t[1] - Bubble Sort" << endl;
    cout << "\t\t[2] - Selection Sort" << endl;
    cout << "\t\t[3] - Insertion Sort" << endl;
    cout << "\t\t[4] - Shell Sort" << endl;
    cout << "\t\t[5] - Quick Sort" << endl;
    cout << "\t\t[6] - Merge Sort" << endl;
    cout << "\t\t[7] - Radix Sort" << endl << endl;
    cout << "\t\t[8] - Quit Program" << endl << endl;
    cout << endl;
    cout << "\t******************************************" << endl << endl;
    cout << "\tPlease enter your choice : ";  
    cin >> ch;  
   
     switch(ch)
 {
    case 1:    cout << "BubbleSort Start" << endl;
               sortOutput << "Bubble Sort\n";
               for(int i = 0, countData = 10000; i < 10; i++)
               {
                    t.start("\nTimer Started\nSorting..");
                    d.bubbleSort(countData);
                    t.stop("Timer Stopped\n");
                    cout << countData << " random numbers sorted" << endl;
                    cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                    sortOutput << countData << "random numbers sort = " 
                               << t.read() << " miliseconds\n" << endl;
                    //d.display(countData); //display sorted data
                    countData += 10000;
                    d.randomizeData(17710);
                }
                cout << "BubbleSort End" << endl;
              //  main(void);
                break;
               
               
    case 2:     cout << "SelectionSort Start" << endl;
                sortOutput << "\nSelection Sort\n";
 
                for(int i = 0, countData = 10000; i < 10; i++)
                {
                    t.start("Timer Started\nSorting..");
                    d.selectionSort(countData);
                    t.stop("Timer Stopped\n");
                    cout << countData << " random numbers sorted" << endl;
                    cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                    sortOutput << countData << "random numbers sort = " 
                               << t.read() << " miliseconds\n" << endl;
                    //d.display(countData);
                    countData += 10000;
                    d.randomizeData(17710);
                }
                cout << "SelectionSort End" << endl;
             //   menu();
                break;
               

     case 3:    cout << "InsertionSort Start" << endl;
                sortOutput << "\nInsertion Sort\n";
 
                for(int i = 0, countData = 10000; i < 10; i++)
                {
                    t.start("Timer Started\nSorting..");
                    d.insertionSort(countData);
                    t.stop("Timer Stopped\n");
                    cout << countData << " random numbers sorted" << endl;
                    cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                    sortOutput << countData << "random numbers sort = " 
                               << t.read() << " miliseconds\n" << endl;
                    //d.display(countData);
                    countData += 10000;
                    d.randomizeData(17710);
                }
                cout << "InsertionSort End" << endl;
               // menu();
                break;
               
               
     case 4:    cout << "ShellSort Start" << endl;
                sortOutput << "\nShell Sort\n";        
               
                for(int i = 0, countData = 10000; i < 10; i++)
                {
                    t.start("Timer Started\nSorting..");
                    d.shellSort(countData);
                    t.stop("Timer Stopped\n");
                    cout << countData << " random numbers sorted" << endl;
                    cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                    sortOutput << countData << "random numbers sort = " 
                               << t.read() << " miliseconds\n" << endl;
                    //d.display(countData);
                    countData += 10000;
                    d.randomizeData(17710);
                 }
                 cout << "ShellSort End" << endl;
              //   menu();
                 break;
                 
 
     case 5:     cout << "quickSort Start" << endl;
                 sortOutput << "\nQuick Sort\n";
 
                 for(int i = 0, countData = 10000; i < 10; i++)
                 {
                     t.start("Timer Started\nSorting..");
                     d.quickSort(0,countData);
                     t.stop("Timer Stopped\n");
                     cout << countData << " random numbers sorted" << endl;
                     cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                     sortOutput << countData << "random numbers sort = " 
                                << t.read() << " miliseconds\n" << endl;
                     //d.display(countData);
                     countData += 10000;
                     d.randomizeData(17710);
                 }
                 cout << "quickSort End" << endl;
            //     menu();
                 break;
 
     case 6:     cout << "mergeSort Start" << endl;
                 sortOutput << "\nMerge Sort\n";
 
                 for(int i = 0, countData = 10000; i < 10; i++)
                 {
                      t.start("Timer Started\nSorting..");
                      d.mergeSort(0, countData);
                      t.stop("Timer Stopped\n");
                      cout << countData << " random numbers sorted" << endl;
                      cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                      sortOutput << countData << "random numbers sort = " 
                                 << t.read() << " miliseconds\n" << endl;
                      //d.display(countData);
                      countData += 10000;
                      d.randomizeData(17710);
                 }
                 cout << "mergeSort End" << endl;
            //     menu();
                 break;
                 
                 
     case 7:     cout << "radixSort Start" << endl;
                 sortOutput << "\nRadix Sort\n" << endl;
 
                 for(int i = 0, countData = 10000; i < 10; i++)
                 {
                      t.start("Timer Started\nSorting..");
                      d.radixSort(countData,20,10);
                      t.stop("Timer Stopped\n");
                      cout << countData << " random numbers sorted" << endl;
                      cout << "Time taken = " << t.read() << " miliseconds\n" << endl;
                      sortOutput << countData << "random numbers sort = " 
                                 << t.read() << " miliseconds\n" << endl;
                      //d.display(countData);
                      countData += 10000;
                      d.randomizeData(17710);
                  }
                  cout << "radixSort End" << endl;
          //        menu();
                  break;
                 

    case 8:      cout << "\t*******************************************" << endl;
                 cout << endl;
                 cout << "\t\tThank You for using this system!" << endl;
                 cout << "\t\tGoodbye!" << endl;
                 cout << endl << endl;
                 cout << "\t*******************************************" << endl;
                 cout << endl;  
                 break;
                 
    default:     cout << "\t\tInvalid Choice!\a\a\a" << endl;
               //  menu();      

 }
 
  sortOutput.close();


 system("pause");
 return 0;
 
}

------------------

i already can use all type of sorting but still got a problem. the problem is after the program sorted, it is not return to the menu. just press any key to continue and the program will close. can u help me? thanks :)
ASKER CERTIFIED SOLUTION
imladris

Log in or sign up to see answer
Become an EE member today7-DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform
Sign up - Free for 7 days
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
See how we're fighting big data
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
ask a question