Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Rewrite the program to use pointers. Do not change the declarations of any funct

ID: 3556446 • Letter: R

Question

Rewrite the program to use pointers. Do not change the declarations of any functions; only
convert their definitions to use pointers to array elements rather than array element indexing. (In other words,
make all the brackets associated with array element access disappear.)
Rewrite all loops to use pointer variables rather than integer counters.

#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>

#define MAX_SIZE 10

int read_array(int number[], int size);
void selection_sort(int number[], int size);
void print_array(char message[], int number[], int size);
void ensure(bool condition, char message[]);

int main() {
int number[MAX_SIZE];
int size;

size = read_array(number, MAX_SIZE);
ensure(size > 0, "The array is empty ");
print_array("Initial array: ", number, size);
selection_sort(number, size);
print_array("Sorted array: ", number, size);
return EXIT_SUCCESS;
}

int read_array(int number[], int size) {
int i = 0,temp;

   while(1) {
       printf("Enter 10 numbers to be sorted from least to greatest:");
       printf(" Enter %d Integer :",(i+1));
       scanf("%d",&temp);
       if(temp < 0) break;
   if(i == size){
       printf(" maximum number of integers has been entered. 11th integer will not be in the sorted array.");
           break;
           }
   number[i++] = temp;
       }
   printf(" ");
   return i;
   }

   void selection_sort(int number[], int size) {
   if(size == 1) return;
   int max = 0;
   int i = 0;
   for(i = 1; i < size; i++)
   if(number[i] > number[max]) max = i;
   int temp = number[size - 1];
   number[size - 1] = number[max];
   number[max] = temp;
   //print_array(" temp:", number,size);
   selection_sort(number, size - 1);
   }

   void print_array(char message[], int number[], int size) {
   int i;
   printf(message);
   for(i = 0; i < size; i++)
   printf("%d ",number[i]);
   printf(" ");
   }

   void ensure(bool condition, char message[]) {
if (!condition) {
printf(message);
exit(EXIT_FAILURE);
}
}

Explanation / Answer

#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>

#define MAX_SIZE 10

int read_array(int *number, int size);
void selection_sort(int *number, int size);
void print_array(char *message, int *number, int size);
void ensure(bool condition, char *message);

int main() {
int number[MAX_SIZE];
int size;

size = read_array(number, MAX_SIZE);
ensure(size > 0, "The array is empty ");
print_array("Initial array: ", number, size);
selection_sort(number, size);
print_array("Sorted array: ", number, size);
return EXIT_SUCCESS;
}

int read_array(int *number, int size) {
int i = 0,temp;

   while(1) {
       printf("Enter 10 numbers to be sorted from least to greatest:");
       printf(" Enter %d Integer :",(i+1));
       scanf("%d",&temp);
       if(temp < 0) break;
   if(i == size){
       printf(" maximum number of integers has been entered. 11th integer will not be in the sorted array.");
           break;
           }
   *(number+(i++)) = temp;
       }
   printf(" ");
   return i;
   }

   void selection_sort(int *number, int size) {
   if(size == 1) return;
   int max = 0;
   int i = 0;
   for(i = 1; i < size; i++)
   if(*(number+i) > *(number+max)) max = i;
   int temp = *(number+size - 1);
   *(number+size - 1) = *(number+max);
   *(number+max) = temp;

   //print_array(" temp:", number,size);
   selection_sort(number, size - 1);
   }

   void print_array(char *message, int *number, int size) {
   int i;
   printf(message);
   for(i = 0; i < size; i++)
   printf("%d ",*(number+i));  
   printf(" ");
   }

   void ensure(bool condition, char *message) {
if (!condition) {
printf(message);
exit(EXIT_FAILURE);
}
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote