Ребята!!!Помогите пожалуйста!!!Мне необходимо отсортировать записи в типизированном файле по полю строкового типа.Вот листинг всей программы!Я не знаю,как вывести результаты на экран..Подскажите?!
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
15.05.2007 15:05
Все!!!Решила!!!Если кому надо будет, то вот!!!
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.
Гость
12.12.2007 16:24
накониц-то НАШЕЛ эту хрень!!! Ты просто МегА-тЁлка! СпасибО!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.