Problem Solving with C++ (10th Edition)
Problem Solving with C++ (10th Edition)
10th Edition
ISBN: 9780134521176
Author: SAVITCH
Publisher: PEARSON
bartleby

Concept explainers

Expert Solution & Answer
Book Icon
Chapter 14, Problem 2P

Explanation of Solution

Recursive version of the function “indexOfSmallest”:

The recursive version of the function “indexOfSmallest” is shown below:

/* Recursive function definition for compute index of smallest element */

int indexOfSmallest(const int a[], int startIndex, int numberUsed)

{

    /* Assign minimum to array of starting index */

    int min = a[startIndex];

   /* If starting index is equal to "numberUsed-1", then */

    if(startIndex == numberUsed - 1)

        /* Returns the starting index */

        return startIndex;

   /* Otherwise recursively call the function "indexOfSmallest" */

   int indexOfMin = indexOfSmallest(a, startIndex+1, numberUsed);

   /* If the value of "min" is greater than "a[indexOfMin]" */

    if(min > a[indexOfMin])

        /* Returns index of minimum value */

        return indexOfMin;

    //Otherwise

    else

        /* Returns the starting index */

        return startIndex;

}

Complete executable program code:

The modified complete code is implemented for given function is given below:

//Header file

#include <iostream>

//Function declaration

void fillArray(int a[], int size, int& numberUsed);

//Precondition: size is the declared size of the array a.

//Postcondition: numberUsed is the number of values stored in a.

//a[0] through a[numberUsed - 1] have been filled with

//nonnegative integers read from the keyboard.

void sort(int a[], int numberUsed);

//Precondition: numberUsed <= declared size of the array a.

//The array elements a[0] through a[numberUsed - 1] have values.

//Postcondition: The values of a[0] through a[numberUsed - 1] have

//been rearranged so that a[0] <= a[1] <= ... <= a[numberUsed - 1].

void swapValues(int& v1, int& v2);

//Interchanges the values of v1 and v2.

int indexOfSmallest(const int a[], int startIndex, int numberUsed);

//Precondition: 0 <= startIndex < numberUsed. Referenced array elements have

//values.

//Returns the index i such that a[i] is the smallest of the values

//a[startIndex], a[startIndex + 1], ..., a[numberUsed - 1].

//Main function

int main( )

{

    //For standard input and output

    using namespace std;

    //Prompt statement

   cout << "This program sorts numbers from lowest to highest.\n";

    //Declare variables

    int sampleArray[10], numberUsed;

    //Call fill array function

    fillArray(sampleArray, 10, numberUsed);

    //Prompt statement

    cout << "Index of minimum number in given array: ";

    //Call the function "indexOfSmallest"

   cout << indexOfSmallest(sampleArray, 0, numberUsed) << endl;

    //Call the function "sort"

    sort(sampleArray, numberUsed);

    //Prompt statement

    cout << "In sorted order the numbers are:\n";

    //Display the sorted number using "for" loop

    for (int index = 0; index < numberUsed; index++)

    cout << sampleArray[index] << " ";

    cout << endl;

    return 0;

}

//Uses iostream:

//Function definition for fill array

void fillArray(int a[], int size, int& numberUsed)

{

    //For standard input and output

    using namespace std;

    //Prompt statement

   cout << "Enter up to " << size << " nonnegative whole numbers.\n" << "Mark the end of the list with a negative number...

Blurred answer
Students have asked these similar questions
Write a recursive Java function displayOutIn that displays two items from an array list at one instance from out-to-in. until one or last two items displayed and the process stops. For example, given array A = {15, 74, 106, 10, 9, 86, 34} the displayOutIn function displays the following:          15, 34          74, 86          106, 9          10
(This question is for a linked list of the type described on the front page, Item 5). Write a recursive function CountGE60. that receives a linked list (may or may not be empty) and returns the number of nodes (each containing a data item value) greater than or equal to 60.
Write a RECURSIVE function, without using any loops, that prints the contents of a matrix with 3 columns.  The function should take the matrix and the number of rows as arguments. void print_matrix(int arr[][3], int num_rows);
Knowledge Booster
Background pattern image
Computer Science
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
SEE MORE QUESTIONS
Recommended textbooks for you
Text book image
C++ Programming: From Problem Analysis to Program...
Computer Science
ISBN:9781337102087
Author:D. S. Malik
Publisher:Cengage Learning