Вопрос № 177238: Дорогие эксперты, помогите пожалуйста с задачей на записи: В списке студентов указано: * Фамилия * Имя * Отчество * Пол * Возраст * Курс В исходном файле рассортировать в алфавитном порядке фамилии студенток, фамилии студентов...
Вопрос № 177238:
Дорогие эксперты, помогите пожалуйста с задачей на записи: В списке студентов указано: * Фамилия * Имя * Отчество * Пол * Возраст * Курс В исходном файле рассортировать в алфавитном порядке фамилии студенток, фамилии студентов остаются на своих местах. Составить новый файл, где все студенты будут сгруппированы (рассортированы) по курсам. Организовать вывод всех файлов.
type TSex=(Male,Female); TStudent = record Fam:String; Name:String; Parent:String; Sex:TSex; Age:Byte; Cours:Byte; end; SFile=file of TStudent; TSArray=array[1..1]
of TStudent; PSArray=^TSArray;
var f:SFile; count:Integer; p:PSArray;
procedure FileToArray(var f:SFile); var i:Integer; begin {SR-} for i:=1 to count do begin Read(f,p^[i]); end; {SR+} end;
procedure ArrayToFile(var f:SFile); var i:Integer; begin {SR-} for i:=1 to count do begin Write(f,p^[i]); end; {SR+} end;
procedure
WomanSort; var i,j,k:Integer; temp:TStudent; begin for i:=1 to count-1 do begin if p^[i].Sex=Female then begin j:=count; while j>=i+1 do begin k:=j-1; while k>=i do begin if (p^[j].Sex=Female) and (p^[k].Sex=Female) and (p^[k].Fam>p^[j].Fam) then begin temp:=p^[j]; p^[j]:=p^[k]; p^[k]:=temp; k:=i; end else k:=k-1; end; j:=j-1;
end; end; end; end;
procedure CoursSort; var i,j:Integer; temp:TStudent; begin for i:=1 to count-1 do begin for j:=count downto i+1 do begin if p^[j-1].Cours>p^[j].Cours then begin temp:=p^[j]; p^[j]:=p^[j-1]; p^[j-1]:=temp; end; end; end; end;
procedure WriteArray; var i:Integer; begin {SR-} for i:=1 to count do
begin Write('#',i,' ',p^[i].Fam,' ',p^[i].Name, ' ',p^[i].Parent,' '); if p^[i].Sex=Male then Write('Man') else Write('Woman'); Writeln(' ',p^[i].Age,' ',p^[i].Cours); end; {SR+} end;
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.