Link to home
Start Free TrialLog in
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;
 }
}
Avatar of imladris
imladris
Flag of Canada image

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.
Avatar of fird
fird

ASKER

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.
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.
Avatar of fird

ASKER

meaning that i must change all ch to menu?
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).
Avatar of fird

ASKER

sorry i didn't get it :( which part i must change to menu?
Avatar of fird

ASKER

it is not working :(
Avatar of fird

ASKER

sorry i can't get u :(
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.
Avatar of fird

ASKER

#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();
 }
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;
 }

Avatar of fird

ASKER

#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 :(
Avatar of fird

ASKER

#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
Avatar of imladris
imladris
Flag of Canada image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial