Facebook
From Chunky Tortoise, 3 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 52
  1. /**
  2.  * Names: Luke Whipple and Colton Johnson
  3.  *
  4.  * A simple warm-up program to prepare us for usiong arrays in the future.
  5.  */
  6.  
  7. #include <stdarg.h>
  8.  
  9. #include <stddef.h>
  10.  
  11. #include <setjmp.h>
  12.  
  13. #include <stdlib.h>
  14.  
  15. #include <math.h>
  16.  
  17. #include "array_utils.h"
  18.  
  19. int contains(const int * arr, int size, int x) {
  20. if ((arr == NULL) || (size <= 0)) {
  21.     return 0;
  22. }
  23.   return(containsWithin(arr, size, x, 0, size - 1));
  24. }
  25.  
  26. int containsWithin(const int * arr, int size, int x, int i, int j) {
  27.   int n;
  28.   if ((arr == NULL) || (i < 0) || (j < 0) || (size <= 0) || (j >= size) || (i >= size)) {
  29.     return 0;
  30.   }
  31.   for (n = i; n <= j; n++) {
  32.     if (arr[n] == x) {
  33.       return (1);
  34.     }
  35.  
  36.   }
  37.   return (0);
  38.  
  39. }
  40.  
  41. int * paddedCopy(const int * arr, int oldSize, int newSize) {
  42.  
  43.   if ((arr == NULL) || (oldSize < 0) || (newSize < 0)) {
  44.     return NULL;
  45.   }
  46.   if (oldSize < newSize) {
  47.  
  48.     int * copy = (int * ) malloc(newSize * sizeof(int));
  49.     for (int i = 0; i < oldSize; i++) {
  50.       copy[i] = arr[i];
  51.     }
  52.     for (int i = oldSize; i < newSize; i++) {
  53.       copy[i] = 0;
  54.     }
  55.     return (copy);
  56.   }
  57.  
  58.   if (newSize < oldSize) {
  59.     int * copy = (int * ) malloc(newSize * sizeof(int));
  60.     for (int i = 0; i < newSize; i++) {
  61.       copy[i] = arr[i];
  62.  
  63.     }
  64.     return (copy);
  65.  
  66.   }
  67.   if (newSize == oldSize) {
  68.    int * copy = (int * ) malloc(oldSize * sizeof(int));
  69.    for (int i = 0; i < oldSize; i++) {
  70.       copy[i] = arr[i];
  71. }
  72.       return(copy);
  73.   }
  74.  return(0);
  75. }
  76.  
  77. void reverse(int * arr, int size) {
  78.  
  79.  
  80.     int k = 0;
  81.   for (int i = size - 1; i >= size/2; i--) {  
  82.    
  83.     int placeHolder = arr[i];  
  84.     arr[i] = arr[k];
  85.  
  86.     arr[k] = placeHolder;
  87.     k++;
  88.   }
  89.  
  90.  
  91. }
  92.  
  93. int * reverseCopy(const int * arr, int size) {
  94.   if (arr == NULL || size < 0) {
  95.     return NULL;
  96.   }
  97.  
  98.   int *copy = paddedCopy(arr, size, size);
  99.  
  100.   reverse(copy, size);
  101.  
  102.   return copy;
  103. }