Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include "mergesort.h"
  5. #include <stddef.h>
  6. int int_comparator(const void *a, const void *b) {
  7. return *(int *) b - *(int *) a;
  8. }
  9.  
  10. int char_comparator(const void *a, const void *b) {
  11. return *(char *) b - *(char *) a;;
  12. }
  13.  
  14. int str_comparator(const void *a, const void *b) {
  15. return strcmp(a, b);
  16. }
  17.  
  18.  
  19. int main(int argc, char **argv) {
  20. size_t elements = argc - 2;;
  21. size_t element_size;
  22. if (strcmp(argv[1], "int") == 0) {
  23. element_size = sizeof(int);
  24. int *data = malloc(sizeof(element_size) * elements);
  25. for (size_t i = 0; i < elements; i++){
  26. sscanf(argv[i+2], "%d", &data[i]);
  27. }
  28. mergesort(data, elements, element_size, &int_comparator);
  29. for(size_t i=0; i < elements; i++){
  30. printf("%d",data[i]);
  31. }
  32. free(data);
  33.  
  34. }
  35. else if (strcmp(argv[1], "char") == 0) {
  36. element_size = sizeof(char);
  37. elements = argc - 2;
  38. char *data = malloc(sizeof(element_size) * elements);
  39. for (size_t i = 0; i < elements; i++){
  40. sscanf(argv[i+2], "%c", &data[i]);
  41. }
  42. mergesort(data, elements, element_size, &char_comparator);
  43. for(size_t i=0; i < elements; i++){
  44. printf("%c",data[i]);
  45. }
  46. free(data);
  47.  
  48. }
  49. else if (strcmp(argv[1], "str") == 0) {
  50. elements = argc - 2;
  51. char *data[elements];
  52. element_size = sizeof(char*);
  53. for (size_t i = 0; i < elements; i++){
  54. data[i] = argv[i + 2];
  55. }
  56. mergesort(data, elements, element_size, &str_comparator);
  57. for(size_t i=0; i < elements; i++){
  58. printf("%s",data[i]);
  59. }
  60. free(data);
  61. }
  62.  
  63. return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement