fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4.  
  5. bool result(int array[], size_t size);
  6. void print(int array[], size_t size);
  7. bool contains_zero(int array[], size_t size);
  8.  
  9. int main(void) {
  10.  
  11. int input_1[] = {1, 2, 3};
  12. int input_2[] = {-5, -3, -1, 2, 4, 6};
  13. int input_3[] = {};
  14. int input_4[] = {-1, 1};
  15. int input_5[] = {-97364, -71561, -69336, 19675, 71561, 97863};
  16. int input_6[] = {-53974, -39140, -36561, -23935, -15680, 0};
  17.  
  18. print(input_1, sizeof(input_1));
  19. printf(" -> %s\n", result(input_1, sizeof(input_1)) ? "true" : "false");
  20. print(input_2, sizeof(input_2));
  21. printf(" -> %s\n", result(input_2, sizeof(input_2)) ? "true" : "false");
  22. print(input_3, sizeof(input_3));
  23. printf(" -> %s\n", result(input_3, sizeof(input_3)) ? "true" : "false");
  24. print(input_4, sizeof(input_4));
  25. printf(" -> %s\n", result(input_4, sizeof(input_4)) ? "true" : "false");
  26. print(input_5, sizeof(input_5));
  27. printf(" -> %s\n", result(input_5, sizeof(input_5)) ? "true" : "false");
  28. print(input_6, sizeof(input_6));
  29. printf(" -> %s\n", result(input_6, sizeof(input_6)) ? "true" : "false");
  30.  
  31. return EXIT_SUCCESS;
  32. }
  33.  
  34. void print(int array[], size_t size) {
  35. size_t length = size / sizeof(int);
  36. printf("[");
  37. unsigned int i;
  38. if (length == 0) {
  39. printf("]");
  40. return;
  41. }
  42. for (i = 0; i < length; i++) {
  43. if (i == length - 1) {
  44. printf("%d]", array[i]);
  45. } else {
  46. printf("%d, ", array[i]);
  47. }
  48. }
  49. }
  50.  
  51. bool contains_zero(int array[], size_t size) {
  52. size_t length = size / sizeof(int);
  53. unsigned int i;
  54. for (i = 0; i < length; i++) {
  55. if (array[i] == 0)
  56. return true;
  57. }
  58. return false;
  59. }
  60.  
  61. bool result(int array[], size_t size) {
  62. if (array == NULL)
  63. return false;
  64. long unsigned length = size / sizeof(int);
  65. if (length == 0)
  66. return false;
  67. if (array[0] > 0)
  68. return false;
  69. if (contains_zero(array, size) == true)
  70. return true;
  71.  
  72. unsigned int index;
  73. for (index = 0; index < length; index++) {
  74. int num = array[index];
  75. if (num == 0)
  76. return true;
  77. unsigned int index_2;
  78. for (index_2 = index + 1; index_2 < length; index_2++) {
  79. int num_2 = array[index_2];
  80. if (num + num_2 == 0) {
  81. return true;
  82. }
  83. }
  84. }
  85. return false;
  86. }
Success #stdin #stdout 0s 10320KB
stdin
Standard input is empty
stdout
[1, 2, 3] -> false
[-5, -3, -1, 2, 4, 6] -> false
[] -> false
[-1, 1] -> true
[-97364, -71561, -69336, 19675, 71561, 97863] -> true
[-53974, -39140, -36561, -23935, -15680, 0] -> true