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);
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.