Advertisement
greannmhar

сортировки 6

Nov 6th, 2023 (edited)
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.90 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int readarr(FILE* fin, int* data, int cnt); //считываем данные из файла в массив
  5.  
  6. int readarr(FILE* fin, int* data, int cnt)
  7. {
  8.     for (int k = 0; k < cnt; k++)
  9.     {
  10.         if (fscanf(fin, "%d", data + k) != 1){
  11.             return -1;
  12.         }
  13.     }
  14.     return 0;
  15. }
  16.  
  17. void PrintArray(int* data, int count);
  18.  
  19. void PrintArray(int* data, int count) {
  20.     for (int k = 0; k < count; k++)
  21.         printf("%d ", data[k]);
  22. }
  23.  
  24.  
  25. void proc(int* arr, int* el, int N);//проверяем что в массивах на одних тех же местах стоят равные элементы
  26.  
  27. void proc(int* arr, int* el, int N)
  28. {
  29.     for (int i = 0; i < N; i++)
  30.     {
  31.         el[arr[i]] = el[arr[i]] + 1;
  32.     }
  33. }
  34.  
  35.  
  36. int main(void)
  37. {
  38.     FILE* file;
  39.     int* arr1;
  40.     int* arr2;
  41.     int* el1;
  42.     int* el2;
  43.     int N;
  44.     int f = 0;
  45.    
  46.     if ((file = fopen("in.txt", "rt")) == NULL) {
  47.         printf("Can't open input file!\n");
  48.         return -1;
  49.     }
  50.    
  51.     if (fscanf(file, "%d", &N) != 1) {
  52.         printf("Can't read N!\n");
  53.         fclose(file);
  54.         return -1;
  55.     }
  56.    
  57.     if (N < 1) {
  58.         printf("Invalid N!\n");
  59.         fclose(file);
  60.         return -1;
  61.     }
  62.    
  63.     if ((arr1 = (int*) malloc(N * sizeof(int))) == NULL)
  64.     {
  65.         printf("Can't allocate memory!\n");
  66.         fclose(file);
  67.         return -1;
  68.     }
  69.     if ((arr2 = (int*) malloc(N * sizeof(int))) == NULL)
  70.     {
  71.         printf("Can't allocate memory 2!\n");
  72.         fclose(file);
  73.         free(arr1);
  74.         return -1;
  75.     }
  76.     if ((el1 = (int*) malloc(102 * sizeof(int))) == NULL)
  77.     {
  78.         printf("Can't allocate memory 3!\n");
  79.         fclose(file);
  80.         free(arr1);
  81.         free(arr2);
  82.         return -1;
  83.     }
  84.     if ((el2 = (int*) malloc(102 * sizeof(int))) == NULL)
  85.     {
  86.         printf("Can't allocate memory 4!\n");
  87.         fclose(file);
  88.         free(arr1);
  89.         free(arr2);
  90.         free(el1);
  91.         return -1;
  92.     }
  93.    
  94.     if (readarr(file, arr1, N) < 0) {
  95.         printf("Can't read array 1!\n");
  96.         fclose(file);
  97.         free(arr1);
  98.         free(arr2);
  99.     }
  100.     if (readarr(file, arr2, N) < 0) {
  101.         printf("Can't read array 1!\n");
  102.         fclose(file);
  103.         free(arr1);
  104.         free(arr2);
  105.     }
  106.     for (int i = 0; i < 102; i++){
  107.         el1[i] = 0;
  108.     }
  109.     for (int i = 0; i < 102; i++){
  110.         el2[i] = 0;
  111.     }
  112.     proc(arr1, el1, N);
  113.     proc(arr2, el2, N);
  114.     for (int i = 0; i < 102; i++)
  115.     {
  116.         if (el1[i] != el2[i])
  117.         {
  118.             f = 1;
  119.         }
  120.     }
  121.     if (f == 0)
  122.     {
  123.         printf("arrays are anagrams\n");
  124.     }
  125.     else
  126.     {
  127.         printf("arrays are NOT anagrams\n");
  128.     }
  129.    
  130.     free(arr1);
  131.     free(arr2);
  132.     free(el1);
  133.     free(el2);
  134.     fclose(file);
  135.    
  136.     return 0;
  137. }
  138.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement