Сортировка через qsort - C (СИ)
Формулировка задачи:
Вывести статистику появления символов на экран, все работает, но сказали улучшить сортировку, подскажите как сделать ее через qsort, пожалуйста
#include <stdio.h> #include <stdlib.h> #include <locale.h> #include <conio.h> #define N 224 //количество символов в таблице ANSII начиная с пробела int main() { setlocale(LC_ALL, "RUS"); FILE *f1; if (!(f1 = fopen("C:\\Users\\user\\Desktop\\source.txt", "r"))) { fprintf(stderr, "Error opening file"); getch(); exit(1); } int i, c, A[N][2], x = 32; for (i = 0; i < N; ++i, ++x) {//создаем двумерный массив,в первом столбце символы ANSII начиная с 32-го,т.е. с пробела A[i][0] = x; //во второй будем заносить количество появлений в тексте данного символа A[i][1] = 0; } while ((c = fgetc(f1)) != EOF) { checkchar(c, A); } for (i = 0; i < N - 1; ++i)//сортируем на убывание for (int j = N - 2; j >= i; --j) if (A[j][1] < A[j + 1][1]) { for (int m = 1; m >= 0; --m) { c = A[j][m]; A[j][m] = A[j + 1][m]; A[j + 1][m] = c; } } for (i = 0; i < N; ++i) if (A[i][1] != 0) printf("%c %d\n", A[i][0], A[i][1]); fclose(f1); getch(); return 0; } int checkchar(int c, int A[N][2]) { int i; for (i = 0; i < N; ++i) { if (c == A[i][0]) A[i][1]++; } return 0; } int sort() { }
Решение задачи: «Сортировка через qsort»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> #define N 256 int main(void) { setlocale(LC_CTYPE, ""); FILE *f1; f1 = fopen("source.txt", "r"); if (f1 == NULL) { fprintf(stderr, "Error opening file"); getchar(); exit(1); } int a[N]; memset(a, 0, sizeof(a)); int c; while ((c = fgetc(f1)) != EOF) a[c]++; for (int i = 0; i < N; ++i) if (a[i] != 0) printf("%c : %d \n", i, a[i]); fclose(f1); getchar(); }
Объяснение кода листинга программы
- Подключение необходимых библиотек
- Объявление массива переменной длины
- Открытие файла для чтения
- Инициализация массива под 0
- Чтение файла построчно и подсчет символов
- Вывод результатов на экран
- Закрытие файла
- Получение символа от пользователя для проверки корректности работы программы
- Выход из программы с ошибкой при неправильном открытии файла
- Выход из программы при закрытии файла без ошибок
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д