Pizza02
Home ] Up ]

 

//pizza02.cpp
//Authors: AOU


/////////////////////////////////////////////////////////////////
// include files
/////////////////////////////////////////////////////////////////
#include <iostream.h>
#include <time.h>
#include <stdlib.h>


/////////////////////////////////////////////////////////////////
// prototypes
/////////////////////////////////////////////////////////////////
void sortBubble(int array[], int low, int high);
void displayArray(int array[], int low, int high);
void displayArray2(int array[], int low, int high);
int min1(int array[], int low, int high);


/////////////////////////////////////////////////////////////////
// main
/////////////////////////////////////////////////////////////////
void main(void)
  {
  int a[]={21, 12, 30, 19, 21, 69, 13, -1};
  int n = sizeof(a)/sizeof(a[0]);
  cout << "n = " << n << endl;
  displayArray(a, 0, n-1);
  displayArray2(a, 0, n-1);
  int k = min1(a, 0, n-1);
  cout << "minimum value at " << k << " is " << a[k] << endl;
  // call here the min2 function

  int b[]={21, 12, 30, 19, 21, 69, 13};
  int m = sizeof(b)/sizeof(b[0]);
  cout << "m = " << m << endl;
  displayArray(b, 0, m-1);
  displayArray2(b, 0, m-1);
  int p = min1(b, 0, m-1);
  cout << "minimum value at " << p << " is " << b[p] << endl;
  // call here the min2 function
  }


/////////////////////////////////////////////////////////////////
// min1 to return the index of minimum value (non-recursive)
/////////////////////////////////////////////////////////////////
int min1(int array[], int low, int high)
  {
  /*
  index of the minimum value?
  minYet = low
  compare value at minYet with every value in the list 
    if a value is < value at minYet then
       copy index of that value to minYet

  return minYet
  */
  /*
  minYet = low
  for i= low to high
    if array[i] < array[minYet]
       minYest = i

  return minYet
  */
  int minYet = low;
  for (int i= low; i<=high; i++)
    if (array[i] < array[minYet])
       minYet = i;

  return minYet;
  }


/////////////////////////////////////////////////////////////////
// displayArray to display array elements (non-recursive)
/////////////////////////////////////////////////////////////////
void displayArray(int array[], int low, int high)
  {
  for (int i=low; i<= high; i++)
    cout << array[i] << ' ';

  cout << endl;
  }


/////////////////////////////////////////////////////////////////
// displayArray2 to display array elements (recursive)
/////////////////////////////////////////////////////////////////
void displayArray2(int array[], int low, int high)
  {
  /*
  if only one element to be printed then
      print that element
    else
      print the fist element
      display the rest

  -----------------------
  if low and high are the same
      print element at low
    else
      print element at low
      display (array, low+1, high)

  */
  if (low == high)
      cout << array[low] << endl;
    else
      {
      cout << array[low] << ' ';
      displayArray2(array, low+1, high);
      }
  }


/////////////////////////////////////////////////////////////////
// sortBubble to sort array elements (non-recursive)
/////////////////////////////////////////////////////////////////
void sortBubble(int array[], int low, int high)
  {
  bool sorted;
  do
    {
    sorted = true;
    for (int i=low; i<high; i++)
      {
      if (array[i] > array[i+1])
        {
        int temp = array[i];
        array[i] = array[i+1];
        array[i+1] = temp;
        sorted = false;
        }
      }
    }
    while (!sorted);
  }


/////////////////////////////////////////////////////////////////
// Output
/////////////////////////////////////////////////////////////////
/*
n = 8
21 12 30 19 21 69 13 -1
21 12 30 19 21 69 13 -1
minimum value at 7 is -1
m = 7
21 12 30 19 21 69 13
21 12 30 19 21 69 13
minimum value at 1 is 12
Press any key to continue
*/