Advertisement
KuoHsiangYu

Lars Pedersen debug1

Oct 31st, 2018
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.42 KB | None | 0 0
  1. //Lars Pedersen debug1
  2. //original author: Lars Pedersen
  3. //debugger: Kuo, Hsiang-Yu
  4. //source code: https://www.facebook.com/groups/prog11/permalink/2290376831033845/
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8.  
  9.  
  10. void mergeArrays(double[], double[], int, int, double *);
  11. void printResults(double *, int, int);
  12.  
  13. int main(void) {
  14.  
  15.     double *newArray = NULL;
  16.  
  17.     double array1[] = { 1.5, 3.5, 11.5, 17.5, 37.5 };
  18.     int array1Size = sizeof(array1) / sizeof(double);
  19.     double array2[] = { 2.1, 12.4, 14.6, 48.2, 50.5 };
  20.     int array2Size = sizeof(array2) / sizeof(double);
  21.  
  22.     double array3[] = { 1.5, 3.2, 11.6, 17.2, 37.2, 51.7, 53.5 };
  23.     int array3Size = sizeof(array3) / sizeof(double);
  24.     double array4[] = { 2.1, 12.4, 14.6, 48.2, 50.5 };
  25.     int array4Size = sizeof(array4) / sizeof(double);
  26.  
  27.     double array5[] = { 1.5, 3.5, 11.5, 17.5, 37.5 };
  28.     int array5Size = sizeof(array5) / sizeof(double);
  29.     double array6[] = { 2.1, 12.5, 14.5, 48.5, 50.5, 52.5, 54.5 };
  30.     int array6Size = sizeof(array6) / sizeof(double);
  31.  
  32.     newArray = (double *)malloc((array1Size + array2Size) * sizeof(double));
  33.     mergeArrays(array1, array2, array1Size, array2Size, newArray);
  34.  
  35.     newArray = (double *)malloc((array3Size + array4Size) * sizeof(double));
  36.     mergeArrays(array3, array4, array3Size, array4Size, newArray);
  37.  
  38.     newArray = (double *)malloc((array5Size + array6Size) * sizeof(double));
  39.     mergeArrays(array5, array6, array5Size, array6Size, newArray);
  40.  
  41.     printf("a[0]: %.2lf \n", newArray[0]);
  42.  
  43.     printResults(newArray, array1Size, array2Size);
  44.  
  45.     free(newArray);
  46.     system("pause");
  47.     return 0;
  48. }
  49.  
  50. void mergeArrays(double a[], double b[], int sizeOfArray1, int sizeOfArray2, double(*newArray)) {
  51.  
  52.     int i = 0, j = 0, k = 0;
  53.     while (i < sizeOfArray1 && j < sizeOfArray2) {
  54.         if (a[i] < b[j]) {
  55.             newArray[k] = a[i];
  56.             i++, k++;
  57.         }
  58.         else if (a[i] > b[j]) {
  59.             newArray[k] = b[j];
  60.             j++, k++;
  61.         }
  62.         else {
  63.             newArray[k] = a[i];
  64.             i++, j++, k++;
  65.         }
  66.     }
  67.     while (i < sizeOfArray1 || j < sizeOfArray2) {
  68.         if (i < sizeOfArray1) {
  69.             newArray[k] = a[i];
  70.             i++, k++;
  71.         }
  72.         if (j < sizeOfArray2) {
  73.             newArray[k] = b[j];
  74.             j++, k++;
  75.         }
  76.     }
  77.     for (int i = 0; i < (sizeOfArray1 + sizeOfArray2); i++) {
  78.         printf("%.2lf, ", newArray[i]);
  79.     }
  80.     printf("\n");
  81. }
  82.  
  83. void printResults(double newArray[], int sizeOfArray1, int sizeOfArray2) {
  84.     for (int i = 0; i < (sizeOfArray1 + sizeOfArray2); i++) {
  85.         printf("%.2lf, ", newArray[i]);
  86.     }
  87.     printf("\n");
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement