Отсортировать бинарный файл по возрастанию - C (СИ)
Формулировка задачи:
Отсортировать бинарный файл по возрастанию. Олимпиада: спортсмен, фамилия, фирма, возраст. Отсортировать по возрастанию.
моя структура:
#include <conio.h> #include <stdio.h> typedef struct { char fa[20], fi[30]; int vo; } olimpiada; int main() { printf("vvedi kolichestvo uchastnikov olimpiadi:\n"); int k,i,j; scanf("%d",&k); olimpiada ol[k]; olimpiada temp; for (i=0;i<k;i++) { printf("SPOTSMEN # %d",i+1); printf("\nvvedite familiyu:\n"); scanf("%s",ol[i].fa); printf("vvedite firmu:\n"); scanf("%s",ol[i].fi); printf("vvedite vozrast:\n"); scanf("%d",&ol[i].vo); } printf("\nINFORMACIYA O SPORTSMENAH:\n"); for (i=0;i<k;i++) { printf("Sportsmen #%d\n",i+1); printf("familiya: %s; firma: %s; vozrast: %d\n",ol[i].fa,ol[i].fi,ol[i].vo); } for (i=k-1;i>0;i--) for (j=0;j<i;j++) if(ol[j+1].vo<ol[j].vo) { temp=ol[j+1]; ol[j+1]=ol[j]; ol[j]=temp; } printf("\nPOSLE SORTIROVKI:\n"); for(i=0;i<k;i++) { printf("Sportsmen #%d\n",i+1); printf("familiya: %s; firma: %s; VOZRAST: %d\n",ol[i].fa,ol[i].fi,ol[i].vo); } getch(); return 0; }
Решение задачи: «Отсортировать бинарный файл по возрастанию»
textual
Листинг программы
#include <conio.h> #include <stdio.h> typedef struct { char fa[30]; char fi[30]; int vo; } olimpiada; int main() { char fn[50]; printf("vvedite imya fayla:\n"); scanf("%s",fn); olimpiada ol; FILE *f=fopen(fn,"wb"); int i,k; printf("scol'ko olimpiycev?\n"); scanf("%d",&k); for (i=0;i<k;i++) { printf("vvedite familiyu:\n"); scanf("%s",ol[i].fa); printf("vvedite firmu:\n"); scanf("%s",ol[i].fi); printf("vvedite vozrast sportsmena:\n"); scanf("%d",ol[i].vo); fwrite(&ol,sizeof(ol),1,f); } fclose(f); FILE *f=fopen(fn,"rb"); olimpiada ol; for(int i=0;i<k;i++) printf("%s %s %d\n",ol[i].fa,ol[i].fi,ol[i].vo); fclose(f); olimpiada buffer; FILE *f=fopen(fn,"rb"); int i,j; printf("\nSORTIROVKA:\n"); for(i=k-1;i>0;i--) for(j=0;j<i;j++) if(ol[j+1].vo<ol[j].vo) { buffer=ol[j]; ol[j]=ol[j+1]; ol[j+1]=buffer; } FILE *f=fopen(fn,"rb"); olimpiada ol; for(int i=0;i<k;i++) printf("%s %s %d\n",ol[i].fa,ol[i].fi,ol[i].vo); fclose(f); getch(); return 0; }
Объяснение кода листинга программы
В этом коде используется язык программирования C. Программа открывает файл, считывает из него данные, сортирует их, а затем записывает обратно в файл. Вот список действий, которые выполняет программа:
- Подключает необходимые библиотеки.
- Объявляет структуру данных
олимпиец
, в которой хранятся данные об участниках соревнований (фамилия, имя, возраст). - В цикле считывает данные об участниках и записывает их в файл.
- Закрывает файл.
- Открывает файл для чтения.
- В цикле считывает данные из файла и выводит их на экран.
- Создает буфер для временного хранения данных.
- Сортирует данные в цикле, сравнивая возраст участников.
- Записывает отсортированные данные обратно в файл.
- Открывает файл для чтения.
- В цикле считывает данные из файла и выводит их на экран.
- Закрывает файл.
- В цикле ожидает ввода данных пользователем с помощью функции getch().
- Возвращает 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д