Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define S
- #if S 1
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <stdlib.h>
- void Sort(char str[][100], int num_str) {
- char box;
- for (size_t i = 0; i < num_str - 1; i++)
- {
- for (size_t j = 0; j < num_str - i - 1; j++) //sort by 1st char
- {
- if (str[j][0] > str[j + 1][0]) {
- for (size_t k = 0; k < 43; k++)
- {
- box = str[j][k];
- str[j][k] = str[j + 1][k];
- str[j + 1][k] = box;
- }
- }
- }
- for (size_t j = 0; j < num_str - i - 1; j++) //sort by 1st & 2nd char
- {
- if (str[j][1] > str[j + 1][1] && str[j][0] >= str[j + 1][0]) {
- for (size_t k = 0; k < 43; k++)
- {
- box = str[j][k];
- str[j][k] = str[j + 1][k];
- str[j + 1][k] = box;
- }
- }
- }
- for (size_t j = 0; j < num_str - i - 1; j++) //sort by 1st, 2nd and 3rd char
- {
- if (str[j][2] > str[j + 1][2] && str[j][1] >= str[j + 1][1] && str[j][0] >= str[j + 1][0]) {
- for (size_t k = 0; k < 43; k++)
- {
- box = str[j][k];
- str[j][k] = str[j + 1][k];
- str[j + 1][k] = box;
- }
- }
- }
- }
- }
- int CalcLength(char* str) {
- int i = 0;
- while (str[i] != '\n' && str[i] != ' ') {
- i++;
- }
- return i;
- }
- int main(int argc, char* argv[]) {
- FILE* fp;
- fp = fopen(argv[1], "r");
- int n = 0;
- fscanf(fp, "%d\n", &n);
- char str[100][100];
- int* lengths = calloc(n, sizeof(int));
- for (size_t i = 0; i < n; i++)
- {
- fgets(str[i], sizeof(str), fp);
- }
- for (size_t i = 0; i < n; i++)
- {
- lengths[i] = CalcLength(str[i]);
- //printf("%d\n", lengths[i]);
- }
- Sort(&str, n);
- for (size_t i = 0; i < n; i++)
- {
- lengths[i] = CalcLength(str[i]);
- //printf("%d\n", lengths[i]);
- }
- FILE* os = fopen(argv[2], "wt");
- FILE* ol = fopen(argv[3], "wt");
- for (size_t i = 0; i < n; i++)
- {
- if (lengths[i] >= n) fprintf(ol, "%s\n", str[i]);
- else fprintf(os, "%s\n", str[i]);
- }
- fclose(fp);
- fclose(os);
- fclose(ol);
- }
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement