Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Помогите с сортировкой

Автор: tory 30.01.2007 15:08

М
Читай правила!
В следующий раз, пост без тегов - удалю!


Список устройств нужно отсортировать по убыванию их стоимости.
Вот что получилось, но не работает... Не могу скомпилировать.
Помогите довести до ума.

Program Lab;
uses crt;
const
n = 5;

type
TRec = record
end;
Var
TBase: array [1..n] of TRec;
Name : string;
Ves : real;
Vus : real;
Dli : real;
Shi : real;
Stoim : real;
procedure Input (var b : TBase); {ўў®¤ ¤ ­­ле}
var
i : byte;
begin
for i := 1 to n do begin
writeln('‡ ЇЁбм N ',i);
write('Naimenovanie ustroistva : '); readln(b[i].name);
write('Ves : '); readln(b[i].Ves);
write('Vusota : '); readln(b[i].Vus);
write('Dlina : '); readln(b[i].Dli);
write('Shirina : '); readln(b[i].Shi);
write('Stoimost : '); readln(b[i].Stoim);
writeln;
end;
end;

procedure Print(b : TBase); // ўлў®¤ ¤ ­­ле
var
i : byte;
begin
for i := 1 to n do begin
writeln('‡ ЇЁбм N ',i);
write('Naimenovanie ustroistva : '); readln(b[i].name);
write('Ves : '); readln(b[i].Ves);
write('Vusota : '); readln(b[i].Vus);
write('Dlina : '); readln(b[i].Dli);
write('Shirina : '); readln(b[i].Shi);
write('Stoimost : '); readln(b[i].Stoim);
writeln;
end;
end;
procedure Sort(var b : TBase); {б®авЁа®ўЄ § ЇЁбЁ Ї® Ї®«о Age}
var
i : byte;
temp : TRec;
flag : boolean;
begin
repeat
flag := true;
for i := 1 to n - 1 do
if not (b[i].Stoim >= b[i+1].Stoim) then begin
temp := b[i];
b[i] := b[i + 1];
b[i + 1] := temp;
flag := false;
end;
until flag;
end;

var
base : TBase;
Begin
clrscr;
Writeln(' ':25,'Vedomost P-21');
writeln(' ':5,'|---|--------------|-----|--------------------------|-------|');
writeln(' ':5,'| |Naimenovanie |Ves | Gabaritu, cm | Stoim |');
writeln(' ':5,' | ustroistva | kG | Vusota | Dlina |Shirina | grn |');
writeln(' ':5,'|---|--------------|-----|--------------------------|-------|');
var
base : TBase;
begin
writeln('‚ў®¤ ¤ ­­ле : ');
Input(base);
writeln('‚лў®¤ ¤® б®авЁа®ўЄЁ : ');
Print(base);
Sort(base);
writeln;
writeln('‚лў®¤ Ї®б«Ґ б®авЁа®ўЄЁ : ');
Print(base);
readln;
end.

Автор: volvo 30.01.2007 15:45

type
TRec = record
end;
Var
TBase: array [1..n] of TRec;
Name : string;
Ves : real;
Vus : real;
Dli : real;
Shi : real;
Stoim : real;
заменить на
type
TRec = record
Name : string;
Ves : real;
Vus : real;
Dli : real;
Shi : real;
Stoim : real;
end;
TBase = array [1..n] of TRec;

Основная программа должна выглядеть так:
Begin
clrscr;
Writeln(' ':25,'Vedomost P-21');
writeln(' ':5,'|---|--------------|-----|--------------------------|-------|');
writeln(' ':5,'| |Naimenovanie |Ves | Gabaritu, cm | Stoim |');
writeln(' ':5,' | ustroistva | kG | Vusota | Dlina |Shirina | grn |');
writeln(' ':5,'|---|--------------|-----|--------------------------|-------|');
{
Этот фрагмент - лишний, убираем...
var
base : TBase;
begin
}
writeln('‚ў®¤ ¤ ­­ле : ');
Input(base);
writeln('‚лў®¤ ¤® б®авЁа®ўЄЁ : ');
Print(base);
Sort(base);
writeln;
writeln('‚лў®¤ Ї®б«Ґ б®авЁа®ўЄЁ : ');
Print(base);
readln;
end.

Теперь программа компилируется... Отлаживай... smile.gif

Автор: tory 30.01.2007 19:42

Вольво лучший. Спасибо!