IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> сортировка записей в файле
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 6
Пол: Женский

Репутация: -  0  +


Ребята!!!Помогите пожалуйста!!!Мне необходимо отсортировать записи в типизированном файле по полю строкового типа.Вот листинг всей программы!Я не знаю,как вывести результаты на экран..Подскажите?!
program zadan2;
uses crt;
type Tanim=record
Fio:string;
Name:string;
Poroda:string;
age:byte;
end;
const n=3;adr:string='an.doc';
var anim:array[1..n]of Tanim;
fan:file of Tanim;i,a:byte;b:string;K:integer;
function Compare(a, b: String): Integer;
var
i, n, lA, lB: Integer;
function Min(a, b: Integer): Integer;
begin
if a < b then
Min := a
else
Min := b;
end;
begin
lA := Length(a);
lB := Length(b);
n := Min(lA, lB);
i := 1;
while (i <= n) and (a[i] = b[i]) do inc(i);
if (i > n) then begin
if (lA = lB) then Compare := 0
else
if lA > lB then Compare := - 1
else Compare := 1;
end
else
if ord(a[i]) < ord(b[i]) then
Compare := 1
else
Compare := -1
end;

begin
Assign(fan,adr);
rewrite(fan);
writeln('Введите данные по каждому животному');
for i:=1 to n do begin with anim[i] do
begin
write('Введите ФИО владельца животного: ');readln(FIO);
write('Введите кличку животного: ');readln(Name);
write('Введите породу: ');readln(Poroda);
write('Введите возраст: ');readln(age);
end;
write(fan,anim[i]);end;
close(fan);
reset(fan);
writeln;
writeln('Введите возраст животного ');readln(a);
for i:=1 to n do begin
with anim[i] do
if age=a then begin
writeln('Животные такого возраста:');
writeln('Фамилия владельца: ',Fio,';Кличка животного: ',Name,';порода: ',Poroda);
end;end;
writeln;
write('Введите кличку ');readln(b);
for i:=1 to n do begin
with anim[i] do
if Name=b then begin
writeln('Данные о животных с такой кличкой:');
writeln('ФИО владельца: ',Fio,';возраст животного: ',age,';порода: ',Poroda);
end;end;
writeln;

for i:=1 to n do {здесь надо зделать сортировку по породам животных}
begin
k:=compare(anim[i].poroda,anim[i+1].poroda);
if k=-1 then begin
writeln(fan,anim[i+1],anim[i]);end;

end;


Close(fan);
end.



--------------------
Shutka
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2





Группа: Пользователи
Сообщений: 6
Пол: Женский

Репутация: -  0  +


Все!!!Решила!!!Если кому надо будет, то вот!!!

program zadan2;
uses crt;
const n=3;adr:string='an.dat';
type Trecanim=record
Fio:string;
Name:string;
Poroda:string;
age:byte;
end;
Tanim=array[1..n]of Trecanim;
Tfan=file of Tanim;

var
i,a1,j:byte;b1:string;anim:Tanim;fan:Tfan;

procedure Sort(var b:Tanim); {сортировка записи}
var
temp : Trecanim;
flag : boolean;
begin
repeat
flag := true;
for i := 1 to n - 1 do
if not (b[i].poroda <= b[i+1].poroda) then begin
temp := b[i];
b[i] := b[i + 1];
b[i + 1] := temp;
flag := false;
end;
until flag;
end;
begin
Assign(fan,adr);
rewrite(fan);
writeln('Введите данные по каждому животному');
for i:=1 to n do begin with anim[i] do
begin
write('Введите ФИО владельца животного: ');readln(FIO);
write('Введите кличку: ');readln(Name);
write('Введите породу: ');readln(Poroda);
write('Введите возраст: ');readln(age);
end;
write(fan,anim);end;
close(fan);
reset(fan);
writeln;
writeln('Введите возраст животного ');readln(a1);
for i:=1 to n do begin
with anim[i] do
if age=a1 then begin
writeln('данные о животных такого возраста:');
writeln('ФИО владельца: ',Fio,';кличка животного: ',Name,';порода: ',Poroda);
end;end;
writeln;
write('Введите кличку животного ');readln(b1);
for i:=1 to n do begin
with anim[i] do
if Name=b1 then begin
writeln('данные о животных с такой кличкой:');
writeln('ФИО владельца: ',Fio,';возраст животного: ',age,';порода: ',Poroda);
end;end;
writeln;
for j:=1 to n do sort(anim);
for i:=1 to n do begin
with anim[i] do
writeln('ФИО владельца: ',Fio,';кличка животного: ',Name,';возраст животного: ',age,';порода: ',Poroda);
end;
Close(fan);

end.
smile.gif


--------------------
Shutka
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость








накониц-то НАШЕЛ эту хрень!!! Ты просто МегА-тЁлка! СпасибО!
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.10.2020 11:38
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name