Posts

Recursion examples with integers

#include <stdio.h> int dectobin(int num); int addDigits(int num); int revDigits(int num); int main() {     int n, num;     int (*fp)(int);       printf("enter your choice & value\n");     printf("1. Dec->binary\n");     printf("2. addDigits\n");     printf("3. Rev digits\n");     scanf("%d %d", &n, &num);     switch(n) {         case 1:             fp=dectobin;             break;         case 2:             fp=addDigits;             break;         case 3:             fp=revDigits;             break;         default:             printf("\ninvalid selection.. exiting");             return 0;     }     printf("\nselection %d, output %d", n, fp(num));     return 0; } int dectobin(int num) {     if (num == 0)        return 0;     else        return (num % 2) + (10*dectobin(num/2)); } int addDigits(int num) {     if (num == 0)        return 0;     else    

A is an array sorted in ascending order. B is an array sorted in descending order. Merge A and B into C so that C is in ascending order.

#include <stdio.h> int main() {     int A[]={17,24,31,39,44}, B[]={49,36,29,20,18,13};     int sizea = sizeof(A)/sizeof(A[0]);     int sizeb = sizeof(B)/sizeof(B[0]);     int C[sizea+sizeb], k=0, m=sizeb-1, count=0;             //print array     printf("\nArray A\n");     for(int i=0; i<sizea; i++)         printf("%d\t", A[i]);     printf("\n");         //print array     printf("\nArray B\n");     for(int i=0; i<sizeb; i++)         printf("%d\t", B[i]);     printf("\n");         //copy the array     while (k<sizea && m>0) {         if (A[k] <= B[m]) {             C[count++] = A[k];             k++;         }         else {             C[count++] = B[m];             m--;         }     }     while (k<sizea) {         C[count++] = A[k];         k++;     }     while (m>=0) {         C[count++] = B[m];         m--;     }         //print array     printf(

An array A contains integers that first increase in value and then decrease in value. It is unknown at which point the numbers start to decrease. Write efficient code to copy the numbers in A to another array B so that B is sorted in ascending order.

Image
for example: #include <stdio.h> int Bsearch(int A[], int size, int low); int main() {     int A[]={17,24,31,44,49,36,29,20,18,13};     int sizea = sizeof(A)/sizeof(A[0]);     int B[sizea], k=0, m=sizea-1, count=0;     for(int i=0; i<sizea; i++)         printf("%d\t", A[i]);     printf("\n");     int pivot = Bsearch(A, sizea, 0);     if (pivot == -1) {         printf("invalid logic");         return 0;     }     else         printf("pivot index %d\n", pivot);          //copy the array      while (k<pivot && m>pivot) {         if (A[k] <= A[m]) {             B[count++] = A[k];             k++;         }         else {             B[count++] = A[m];             m--;         }     }     while (k<pivot) {         B[count++] = A[k];         k++;     }     while (m>pivot) {         B[count++] = A[m];         m--;     }     B[count++] = A[pivot