Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на языке Pascal


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

lamed
Статус: Практикант
Рейтинг: 2188
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 1892
∙ повысить рейтинг »
_Ayl_
Статус: Практикант
Рейтинг: 1797
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Pascal (Паскаль)

Номер выпуска:1045
Дата выхода:19.03.2010, 03:00
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:335 / 204
Вопросов / ответов:1 / 1

Вопрос № 177238: Дорогие эксперты, помогите пожалуйста с задачей на записи: В списке студентов указано: * Фамилия * Имя * Отчество * Пол * Возраст * Курс В исходном файле рассортировать в алфавитном порядке фамилии студенток, фамилии студентов...



Вопрос № 177238:

Дорогие эксперты, помогите пожалуйста с задачей на записи:
В списке студентов указано:
* Фамилия
* Имя
* Отчество
* Пол
* Возраст
* Курс
В исходном файле рассортировать в алфавитном порядке фамилии студенток, фамилии студентов остаются на своих местах. Составить новый файл, где все студенты будут сгруппированы (рассортированы) по курсам. Организовать вывод всех файлов.


Отправлен: 14.03.2010, 02:46
Вопрос задал: Плотникова Лариса Павловна, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает star9491, Студент :
Здравствуйте, Плотникова Лариса Павловна.

Код:
uses crt;

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;

begin
Assign(f,'D:\1.dat');
Reset(f);
count:=FileSize(f);
GetMem(p,count*SizeOf(TStudent));
FileToArray(f);
Close(f);
ClrScr;
WriteArray;
WomanSort;
Assign(f,'D:\2.dat');
Rewrite(f);
ArrayToFile(f);
Close(f);
Writeln;
WriteArray;
Assign(f,'D:\1.dat');
Reset(f);
FileToArray(f);
CoursSort;
Close(f);
Assign(f,'D:\3.dat');
Rewrite(f);
ArrayToFile(f);
Close(f);
Writeln;
WriteArray;
FreeMem(p,count*SizeOf(TStudent));
Readln;
end.

Ответ отправил: star9491, Студент
Ответ отправлен: 17.03.2010, 13:55
Номер ответа: 260179

Оценка ответа: 5

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 260179 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.14 от 03.03.2010

    В избранное