Advertisement
Guest User

Unbest File work

a guest
Jan 19th, 2020
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.92 KB | None | 0 0
  1. #define S
  2.  
  3. #if S 1
  4.  
  5. #define _CRT_SECURE_NO_WARNINGS
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8.  
  9.  
  10. void Sort(char str[][100], int num_str) {
  11.     char box;
  12.     for (size_t i = 0; i < num_str - 1; i++)
  13.     {
  14.         for (size_t j = 0; j < num_str - i - 1; j++) //sort by 1st char
  15.         {
  16.             if (str[j][0] > str[j + 1][0]) {
  17.                 for (size_t k = 0; k < 43; k++)
  18.                 {
  19.                     box = str[j][k];
  20.                     str[j][k] = str[j + 1][k];
  21.                     str[j + 1][k] = box;
  22.                 }
  23.             }
  24.         }
  25.  
  26.         for (size_t j = 0; j < num_str - i - 1; j++) //sort by 1st & 2nd char
  27.         {
  28.             if (str[j][1] > str[j + 1][1] && str[j][0] >= str[j + 1][0]) {
  29.                 for (size_t k = 0; k < 43; k++)
  30.                 {
  31.                     box = str[j][k];
  32.                     str[j][k] = str[j + 1][k];
  33.                     str[j + 1][k] = box;
  34.                 }
  35.             }
  36.         }
  37.  
  38.         for (size_t j = 0; j < num_str - i - 1; j++) //sort by 1st, 2nd and 3rd char
  39.         {
  40.             if (str[j][2] > str[j + 1][2] && str[j][1] >= str[j + 1][1] && str[j][0] >= str[j + 1][0]) {
  41.                 for (size_t k = 0; k < 43; k++)
  42.                 {
  43.                     box = str[j][k];
  44.                     str[j][k] = str[j + 1][k];
  45.                     str[j + 1][k] = box;
  46.                 }
  47.             }
  48.         }
  49.     }
  50. }
  51.  
  52. int CalcLength(char* str) {
  53.     int i = 0;
  54.     while (str[i] != '\n' && str[i] != ' ') {
  55.         i++;
  56.     }
  57.     return i;
  58. }
  59.  
  60. int main(int argc, char* argv[]) {
  61.     FILE* fp;
  62.     fp = fopen(argv[1], "r");
  63.  
  64.     int n = 0;
  65.     fscanf(fp, "%d\n", &n);
  66.  
  67.     char str[100][100];
  68.     int* lengths = calloc(n, sizeof(int));
  69.    
  70.  
  71.     for (size_t i = 0; i < n; i++)
  72.     {
  73.         fgets(str[i], sizeof(str), fp);
  74.     }
  75.  
  76.     for (size_t i = 0; i < n; i++)
  77.     {
  78.         lengths[i] = CalcLength(str[i]);
  79.         //printf("%d\n", lengths[i]);
  80.     }
  81.  
  82.     Sort(&str, n);
  83.  
  84.     for (size_t i = 0; i < n; i++)
  85.     {
  86.         lengths[i] = CalcLength(str[i]);
  87.         //printf("%d\n", lengths[i]);
  88.     }
  89.    
  90.  
  91.     FILE* os = fopen(argv[2], "wt");
  92.     FILE* ol = fopen(argv[3], "wt");
  93.  
  94.     for (size_t i = 0; i < n; i++)
  95.     {
  96.         if (lengths[i] >= n) fprintf(ol, "%s\n", str[i]);
  97.         else fprintf(os, "%s\n", str[i]);
  98.     }
  99.  
  100.     fclose(fp);
  101.     fclose(os);
  102.     fclose(ol);
  103. }
  104. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement