Вывести список сотрудников по отделам в порядке убывания стажа - C (СИ)
Формулировка задачи:
Информация о сотрудниках предприятия содержит:
- Ф.И.О.;
- номер отдела;
- должность;
- дату начала работы.
Вывести список сотрудников по отделам в порядке убывания ста¬жа.
Программа почти работает... Создает файл, но не выводит... и помогите пожалуйста с сортировкой...
//--------------------------------------------------------------------------- #include <iostream.h> #include <conio.h> #include <vcl.h> #pragma hdrstop #include <tchar.h> //--------------------------------------------------------------------------- #pragma argsused #include <stdio.h> #include <stdlib.h> #include <string.h> struct Sved { char Fio[50]; int nom[10]; char dol[50]; char data[50]; float S_Bal; }zap; char Spis[] = "d:\Sp.dat"; FILE *F_zap; void main () { int i, kodR, size = sizeof(Sved); float s; // clrscr(); while(1) { puts(" sozdanie - 1"); puts(" Prosmotr - 2"); puts(" Dobavlenie - 3"); puts(" Vixod - 0"); scanf("%d", &kodR); switch(kodR) { case 1: case 3: if(kodR == 1) F_zap = fopen(Spis, "w+b"); else F_zap = fopen(Spis, "a+b"); while(4) { puts(" FIO (end = 0)"); scanf("%s", zap.Fio); if ((zap.Fio[0])=='0') break; puts(" vvedite nomer otdela "); scanf("%d", &zap.nom[i]); puts (" Dolshnost "); scanf ("%s", &zap.dol); puts(" Data nachala raboti "); scanf("%s", &zap.data); } zap.S_Bal = s / 3; fwrite(&zap, size, 1, F_zap); } fclose(F_zap); break; F_zap=fopen(Spis,"r+b"); while(4) { if(!fread(&zap, size, 1, F_zap)) break; printf("%20s %2d %2d %2d %5.2f\n", zap.Fio, zap.nom[10], zap.dol, zap.data, zap.S_Bal); } fclose(F_zap); break; return; } }
Решение задачи: «Вывести список сотрудников по отделам в порядке убывания стажа»
textual
Листинг программы
F_zap=fopen(Spis,"r+b"); while(4) { if(!fread(&zap, size, 1, F_zap)) break; printf("%20s %2d %2d %2d %5.2f\n", zap.Fio, zap.nom[10], zap.dol, zap.data, zap.S_Bal); } fclose(F_zap); break;
Объяснение кода листинга программы
- Открывается файл
Spis
для чтения и записи данных в двоичном формате с помощью функции fopen. - Запускается цикл while, который будет выполняться до тех пор, пока не будет прочитано 4 элемента.
- Внутри цикла while считывается один элемент из файла с помощью функции fread.
- Выводится список сотрудников на экран с помощью функции printf. Выводятся следующие данные:
- ФИО сотрудника (переменная zap.Fio).
- Номер отдела (переменная zap.nom[10]).
- Должность сотрудника (переменная zap.dol).
- Дата приема на работу (переменная zap.data).
- Стаж работы сотрудника (переменная zap.S_Bal).
- Если в процессе чтения файла возникла ошибка (например, достигли конца файла), то цикл while прерывается с помощью оператора break.
- После завершения работы с файлом он закрывается с помощью функции fclose.
- В случае возникновения ошибки при работе с файлом программа завершается с помощью оператора break.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д