- Prepare
- C
- Functions
- Variadic functions in C
- Discussions
Variadic functions in C
Variadic functions in C
+ 0 comments Here are the solution of HackerRank Variadic functions in C Solution
Join Telegram Group for Updates Join Group For Updates
+ 0 comments int sum (int count,...) { int sum = 0; va_list p; va_start(p, count); for(int i = 0; i < count; i++){ sum += va_arg(p, int); } va_end(p); return sum; } int min(int count,...) { va_list p; va_start(p, count); int min = va_arg(p, int); for(int i = 0; i < count - 1; i++){ int temp = va_arg(p, int); if(temp < min){ min = temp; } } va_end(p); return min; } int max(int count,...) { va_list p; va_start(p, count); int max = va_arg(p, int); for(int i = 0; i < count - 1; i++){ int temp = va_arg(p, int); if(temp > max){ max = temp; } } va_end(p); return max; }
+ 0 comments int sum (int count,...) { va_list sumList; va_start(sumList, count); int sum = 0;
for (int i = 1; i <= count; i++) { sum += (va_arg(sumList, int)); } va_end(sumList); return sum;
}
int min(int count,...) { va_list min; va_start(min, count); int minNum = va_arg(min, int);
for (int i = 1; i <= count; i++) { int temp = va_arg(min, int); minNum = (minNum < temp) ? minNum : temp; } va_end(min); return minNum;
}
int max(int count,...) { va_list max; va_start(max, count); int maxNum = va_arg(max, int);
for (int i = 1; i <= count; i++) { int temp = va_arg(max, int); maxNum = (maxNum > temp) ? maxNum : temp; } va_end(max); return maxNum;
}
+ 0 comments include
include
include
include
define MIN_ELEMENT 1
define MAX_ELEMENT 1000000
TUSHAR GAURAV
int sum(int count, ...) { va_list arr; int t = 0; va_start(arr, count); while(count--){ t += va_arg(arr, int); } return t; }
int min(int count, ...) { va_list arr; int mn = MIN_ELEMENT; va_start(arr, count); while(count--){ if(mn > va_arg(arr, int)) mn = va_arg(arr, int); } return mn; }
int max(int count, ...) { va_list arr; int mx = MAX_ELEMENT; va_start(arr, count); while(count--){ if(mx < va_arg(arr, int)) mx = va_arg(arr, int); } return mx; }
int test_implementations_by_sending_three_elements() { srand(time(NULL));
int elements[3]; elements[0] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[1] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[2] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; fprintf(stderr, "Sending following three elements:\n"); for (int i = 0; i < 3; i++) { fprintf(stderr, "%d\n", elements[i]); } int elements_sum = sum(3, elements[0], elements[1], elements[2]); int minimum_element = min(3, elements[0], elements[1], elements[2]); int maximum_element = max(3, elements[0], elements[1], elements[2]); fprintf(stderr, "Your output is:\n"); fprintf(stderr, "Elements sum is %d\n", elements_sum); fprintf(stderr, "Minimum element is %d\n", minimum_element); fprintf(stderr, "Maximum element is %d\n\n", maximum_element); int expected_elements_sum = 0; for (int i = 0; i < 3; i++) { if (elements[i] < minimum_element) { return 0; } if (elements[i] > maximum_element) { return 0; } expected_elements_sum += elements[i]; } return elements_sum == expected_elements_sum;
}
int test_implementations_by_sending_five_elements() { srand(time(NULL));
int elements[5]; elements[0] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[1] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[2] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[3] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[4] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; fprintf(stderr, "Sending following five elements:\n"); for (int i = 0; i < 5; i++) { fprintf(stderr, "%d\n", elements[i]); } int elements_sum = sum(5, elements[0], elements[1], elements[2], elements[3], elements[4]); int minimum_element = min(5, elements[0], elements[1], elements[2], elements[3], elements[4]); int maximum_element = max(5, elements[0], elements[1], elements[2], elements[3], elements[4]); fprintf(stderr, "Your output is:\n"); fprintf(stderr, "Elements sum is %d\n", elements_sum); fprintf(stderr, "Minimum element is %d\n", minimum_element); fprintf(stderr, "Maximum element is %d\n\n", maximum_element); int expected_elements_sum = 0; for (int i = 0; i < 5; i++) { if (elements[i] < minimum_element) { return 0; } if (elements[i] > maximum_element) { return 0; } expected_elements_sum += elements[i]; } return elements_sum == expected_elements_sum;
}
int test_implementations_by_sending_ten_elements() { srand(time(NULL));
int elements[10]; elements[0] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[1] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[2] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[3] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[4] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[5] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[6] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[7] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[8] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[9] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; fprintf(stderr, "Sending following ten elements:\n"); for (int i = 0; i < 10; i++) { fprintf(stderr, "%d\n", elements[i]); } int elements_sum = sum(10, elements[0], elements[1], elements[2], elements[3], elements[4], elements[5], elements[6], elements[7], elements[8], elements[9]); int minimum_element = min(10, elements[0], elements[1], elements[2], elements[3], elements[4], elements[5], elements[6], elements[7], elements[8], elements[9]); int maximum_element = max(10, elements[0], elements[1], elements[2], elements[3], elements[4], elements[5], elements[6], elements[7], elements[8], elements[9]); fprintf(stderr, "Your output is:\n"); fprintf(stderr, "Elements sum is %d\n", elements_sum); fprintf(stderr, "Minimum element is %d\n", minimum_element); fprintf(stderr, "Maximum element is %d\n\n", maximum_element); int expected_elements_sum = 0; for (int i = 0; i < 10; i++) { if (elements[i] < minimum_element) { return 0; } if (elements[i] > maximum_element) { return 0; } expected_elements_sum += elements[i]; } return elements_sum == expected_elements_sum;
}
int main () { int number_of_test_cases; scanf("%d", &number_of_test_cases);
while (number_of_test_cases--) { if (test_implementations_by_sending_three_elements()) { printf("Correct Answer\n"); } else { printf("Wrong Answer\n"); } if (test_implementations_by_sending_five_elements()) { printf("Correct Answer\n"); } else { printf("Wrong Answer\n"); } if (test_implementations_by_sending_ten_elements()) { printf("Correct Answer\n"); } else { printf("Wrong Answer\n"); } } return 0;
}
+ 0 comments include
include
include
include
define MIN_ELEMENT 1
define MAX_ELEMENT 1000000
int sum(int count, ...) { va_list arr; int t = 0; va_start(arr, count); while(count--){ t += va_arg(arr, int); } return t; }
int min(int count, ...) { va_list arr; int mn = MIN_ELEMENT; va_start(arr, count); while(count--){ if(mn > va_arg(arr, int)) mn = va_arg(arr, int); } return mn; }
int max(int count, ...) { va_list arr; int mx = MAX_ELEMENT; va_start(arr, count); while(count--){ if(mx < va_arg(arr, int)) mx = va_arg(arr, int); } return mx; }
int test_implementations_by_sending_three_elements() { srand(time(NULL));
int elements[3]; elements[0] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[1] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[2] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; fprintf(stderr, "Sending following three elements:\n"); for (int i = 0; i < 3; i++) { fprintf(stderr, "%d\n", elements[i]); } int elements_sum = sum(3, elements[0], elements[1], elements[2]); int minimum_element = min(3, elements[0], elements[1], elements[2]); int maximum_element = max(3, elements[0], elements[1], elements[2]); fprintf(stderr, "Your output is:\n"); fprintf(stderr, "Elements sum is %d\n", elements_sum); fprintf(stderr, "Minimum element is %d\n", minimum_element); fprintf(stderr, "Maximum element is %d\n\n", maximum_element); int expected_elements_sum = 0; for (int i = 0; i < 3; i++) { if (elements[i] < minimum_element) { return 0; } if (elements[i] > maximum_element) { return 0; } expected_elements_sum += elements[i]; } return elements_sum == expected_elements_sum;
}
int test_implementations_by_sending_five_elements() { srand(time(NULL));
int elements[5]; elements[0] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[1] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[2] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[3] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[4] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; fprintf(stderr, "Sending following five elements:\n"); for (int i = 0; i < 5; i++) { fprintf(stderr, "%d\n", elements[i]); } int elements_sum = sum(5, elements[0], elements[1], elements[2], elements[3], elements[4]); int minimum_element = min(5, elements[0], elements[1], elements[2], elements[3], elements[4]); int maximum_element = max(5, elements[0], elements[1], elements[2], elements[3], elements[4]); fprintf(stderr, "Your output is:\n"); fprintf(stderr, "Elements sum is %d\n", elements_sum); fprintf(stderr, "Minimum element is %d\n", minimum_element); fprintf(stderr, "Maximum element is %d\n\n", maximum_element); int expected_elements_sum = 0; for (int i = 0; i < 5; i++) { if (elements[i] < minimum_element) { return 0; } if (elements[i] > maximum_element) { return 0; } expected_elements_sum += elements[i]; } return elements_sum == expected_elements_sum;
}
int test_implementations_by_sending_ten_elements() { srand(time(NULL));
int elements[10]; elements[0] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[1] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[2] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[3] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[4] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[5] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[6] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[7] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[8] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; elements[9] = rand() % (MAX_ELEMENT - MIN_ELEMENT + 1) + MIN_ELEMENT; fprintf(stderr, "Sending following ten elements:\n"); for (int i = 0; i < 10; i++) { fprintf(stderr, "%d\n", elements[i]); } int elements_sum = sum(10, elements[0], elements[1], elements[2], elements[3], elements[4], elements[5], elements[6], elements[7], elements[8], elements[9]); int minimum_element = min(10, elements[0], elements[1], elements[2], elements[3], elements[4], elements[5], elements[6], elements[7], elements[8], elements[9]); int maximum_element = max(10, elements[0], elements[1], elements[2], elements[3], elements[4], elements[5], elements[6], elements[7], elements[8], elements[9]); fprintf(stderr, "Your output is:\n"); fprintf(stderr, "Elements sum is %d\n", elements_sum); fprintf(stderr, "Minimum element is %d\n", minimum_element); fprintf(stderr, "Maximum element is %d\n\n", maximum_element); int expected_elements_sum = 0; for (int i = 0; i < 10; i++) { if (elements[i] < minimum_element) { return 0; } if (elements[i] > maximum_element) { return 0; } expected_elements_sum += elements[i]; } return elements_sum == expected_elements_sum;
}
int main () { int number_of_test_cases; scanf("%d", &number_of_test_cases);
while (number_of_test_cases--) { if (test_implementations_by_sending_three_elements()) { printf("Correct Answer\n"); } else { printf("Wrong Answer\n"); } if (test_implementations_by_sending_five_elements()) { printf("Correct Answer\n"); } else { printf("Wrong Answer\n"); } if (test_implementations_by_sending_ten_elements()) { printf("Correct Answer\n"); } else { printf("Wrong Answer\n"); } } return 0;
}
Sort 118 Discussions, By:
Please Login in order to post a comment