Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include "mergesort.h"
- #include <stddef.h>
- int int_comparator(const void *a, const void *b) {
- return *(int *) b - *(int *) a;
- }
- int char_comparator(const void *a, const void *b) {
- return *(char *) b - *(char *) a;;
- }
- int str_comparator(const void *a, const void *b) {
- return strcmp(a, b);
- }
- int main(int argc, char **argv) {
- size_t elements = argc - 2;;
- size_t element_size;
- if (strcmp(argv[1], "int") == 0) {
- element_size = sizeof(int);
- int *data = malloc(sizeof(element_size) * elements);
- for (size_t i = 0; i < elements; i++){
- sscanf(argv[i+2], "%d", &data[i]);
- }
- mergesort(data, elements, element_size, &int_comparator);
- for(size_t i=0; i < elements; i++){
- printf("%d",data[i]);
- }
- free(data);
- }
- else if (strcmp(argv[1], "char") == 0) {
- element_size = sizeof(char);
- elements = argc - 2;
- char *data = malloc(sizeof(element_size) * elements);
- for (size_t i = 0; i < elements; i++){
- sscanf(argv[i+2], "%c", &data[i]);
- }
- mergesort(data, elements, element_size, &char_comparator);
- for(size_t i=0; i < elements; i++){
- printf("%c",data[i]);
- }
- free(data);
- }
- else if (strcmp(argv[1], "str") == 0) {
- elements = argc - 2;
- char *data[elements];
- element_size = sizeof(char*);
- for (size_t i = 0; i < elements; i++){
- data[i] = argv[i + 2];
- }
- mergesort(data, elements, element_size, &str_comparator);
- for(size_t i=0; i < elements; i++){
- printf("%s",data[i]);
- }
- free(data);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement