Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.08 KB | None | 0 0
  1. #include <algorithm>
  2. #include <stdarg.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. int *gen(int n, int m) {
  7.     int *ar = (int *)malloc(n * sizeof(int));
  8.     for (int i = 0; i < n; i++) {
  9.         ar[i] = rand() % m;
  10.     }
  11.     return ar;
  12. }
  13.  
  14. void isSorted(int *ar, int n) {
  15.  
  16.     for (int i = 0; i < n - 1; i++) {
  17.         if (ar[i] > ar[i + 1]) {
  18.             printf("not sorted\n");
  19.             return;
  20.         }
  21.     }
  22.     printf("sorted\n");
  23. }
  24.  
  25. void print(int *ar, int n) {
  26.     for (int i = 0; i < n; i++) {
  27.         printf("%d ", ar[i]);
  28.     }
  29.     printf("\n");
  30. }
  31.  
  32. void radixSort(unsigned *ar, int size, unsigned byte) {
  33.     if (size < 2)
  34.         return;
  35.     if (byte == 0)
  36.         return;
  37.  
  38.     int l = 0;
  39.     for (int i = 0; i < size; i++) {
  40.         if ((ar[i] & byte) == 0) {
  41.             std::swap(ar[i], ar[l++]);
  42.         }
  43.     }
  44.  
  45.     radixSort(ar, l, byte >> 1);
  46.     radixSort(ar + l, size - l, byte >> 1);
  47. }
  48.  
  49. void cntSort(int *ar, int n, int max) {
  50.     int *temp = (int *)malloc(max * sizeof(int));
  51.     for (int i = 0; i < max; i++) {
  52.         temp[i] = 0;
  53.     }
  54.  
  55.     for (int i = 0; i < n; i++) {
  56.         temp[ar[i]]++;
  57.     }
  58.  
  59.     int k = 0;
  60.     for (int i = 0; i < max; i++) {
  61.         for (int j = 0; j < temp[i]; j++) {
  62.             ar[k++] = i;
  63.         }
  64.     }
  65.  
  66.     free(temp);
  67. }
  68.  
  69. int sum(int cnt, ...) {
  70.     va_list args;
  71.     va_start(args, cnt);
  72.  
  73.     int s = 0;
  74.     for (int i = 0; i < cnt; i++) {
  75.         s += va_arg(args, int);
  76.     }
  77.  
  78.     va_end(args);
  79.     return s;
  80. }
  81.  
  82. void print(const char *str, ...) {
  83.     va_list args;
  84.     va_start(args, str);
  85.  
  86.     for (int i = 0; str[i]; i++) {
  87.         switch (str[i]) {
  88.         case 'd':
  89.             printf("%d", va_arg(args, int));
  90.             break;
  91.         case 'f':
  92.             printf("%lf", va_arg(args, double));
  93.             break;
  94.         case 's':
  95.             printf("%s", va_arg(args, char *));
  96.             break;
  97.         case 'c':
  98.             printf("%c", va_arg(args, int));
  99.             break;
  100.         }
  101.         printf("\n");
  102.     }
  103.     va_end(args);
  104. }
  105.  
  106. int main() {
  107.     /*
  108.         int n = 20, m = 100;
  109.         int *ar = gen(n, m);
  110.  
  111.         print(ar, n);
  112.  
  113.         cntSort(ar, n, 100);
  114.         // radixSort((unsigned *)ar, n, 128);
  115.  
  116.         isSorted(ar, n);
  117.         print(ar, n);
  118.  
  119.         free(ar);
  120.     */
  121.  
  122.     // printf("%d\n", sum(3, 1, 2, 3));
  123.     // printf("%d\n", sum(5, 1, 2, 3, 4, 5));
  124.  
  125.     print("dfsc", 10, 3.14, "hello", '!');
  126.  
  127.     return 0;
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement