1.c
unknown
c_cpp
19 days ago
1.4 kB
3
Indexable
/*Write a C program using pointers to merge two sorted integer arrays into a third sorted array WITHOUT using any sorting function.
Use only pointer arithmetic (no array indexing). Print the merged sorted result.
Also print the address of the largest element in the merged array.
*/
#include <stdio.h>
int main() {
int arr1[] = {1, 3, 5, 7, 9};
int arr2[] = {2, 4, 6, 8, 10};
int merged[10];
int *p1 = arr1;
int *p2 = arr2;
int *m = merged;
int size1 = 5, size2 = 5;
int *end1 = arr1 + size1;
int *end2 = arr2 + size2;
while (p1 < end1 && p2 < end2) {
if (*p1 < *p2) {
*m = *p1;
p1++;
} else {
*m = *p2;
p2++;
}
m++;
}
while (p1 < end1) {
*m = *p1;
p1++;
m++;
}
/* Copy remaining elements of arr2 */
while (p2 < end2) {
*m = *p2;
p2++;
m++;
}
printf("Merged Sorted Array:\n");
int *ptr = merged;
int *endMerged = merged + size1 + size2;
while (ptr < endMerged) {
printf("%d ", *ptr);
ptr++;
}
int *largest = endMerged - 1;
printf("\n\nLargest Element: %d\n", *largest);
printf("Address of Largest Element: %p\n", (void *)largest);
return 0;
}
Editor is loading...
Leave a Comment