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

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

Форум «Всё о Паскале» _ Задачи _ Записи!

Автор: programerNOX 28.11.2003 1:18

Задание:
Составить програму упорядоченея списка бригады в порядке убывания производительности(ведомость сделать в файле);
То что я зделал:

Program Pr1;
uses crt;
const
n=3;
kolchasov=8;
type
y=record
nn:integer;
fio:string[15];
kol:real;
vp:array[1..8] of real;
vrem:real;
proiz:real;
end;
r=array[1..n] of y;
var
x:r;
i,j:integer;
s:y;
fl:boolean;
Procedure vvod;
var
i:integer;
f:text;
begin
clrscr;
writeln('Создание файла');
readkey;
assign(f,'c:vedomost.txt');
rewrite(f);
writeln('Файл создан­');
readkey;
for i:=1 to n do
begin
x[i].nn:=1;
textcolor(3);
writeln('Заполнение ведомости');
write('ФИО : ');
readln(x[i].fio);
writeln(f,'ФИО : ', x[i].fio);
write('Количество часов за смену : ');
readln(x[i].kol);
writeln(f,''Количество часов за смену :',x[i].kol:4 :2);
write('Выпускаемая продукцыя : ');
for j:=1 to kolchasov do
begin
writeln('за ', j ,' час ');
readln(x[i].vp[j]);
writeln(f,'за ',j,'час',x[i].vp[j]:4 :2);
end;
write('Время простоя : ');
readln(x[i].vrem);
writeln(f,'Время простоя : ', x[i].vrem);
write('Произ. деталей в еденицу времени :');
x[i].proiz:=x[i].vp[kolchasov]/(x[i].kol-x[i].vrem);
writeln(x[i].proiz:4 :1);
writeln(f,'Произ. деталей в еденицу времени :',x[i].proiz);
end;
close(f);
end;
begin

vvod;
end.

Как мне упорядочить список и как вывести содержымое списка(что находится в файле) на екран???
Пожалусто помогите к завтрешнему дню!

Автор: GLuk 28.11.2003 15:24

Если ишшо не поздно:


Program WorkSort;
Uses
Crt;
Const
N = 3;
HourCnt = 8;
WaitKey = True;
FileName = 'blank.bin';
Type
Blank = record
NN:Integer;
{??? What's that?????????!!!!!!!! Что это за ХЕРНЯ?! %)}

FIO:string[15]; {”?Ћ}
HCnt:Real; {Љ®«ЁзҐбвў® з б®ў ў ᬥ­г}
VP:array[1..8] of Real; {Љ®«-ў® Їа®¤гЄжЁЁ § !Є ¦¤л©! з б ўаҐ¬Ґ­Ё??}
DownTime:Real; {‚аҐ¬п Їа®бв®п}
Production:real; {Џа®Ё§ў®¤ЁвҐ«м­®бвм ¤Ґв «Ґ© ў з б}
end;

Var
X:array[1..N] of Blank;
i,j:integer;
F:File of Blank;

Procedure InitData;
var
S:String;
begin
S:='?ў ­®ў X.X.';
For i:=1 to n do
begin
X[i].NN:=1;
S[8]:=Chr(Random(27)+128);
S[10]:=Chr(Random(27)+128);
X[i].FIO:=S;
X[i].HCnt:=Random(18)+6;
for j:=1 to HourCnt do X[i].VP[j]:=j+3;
X[i].DownTime:=Random(2)+Random;
x[i].Production:=x[i].vp[HourCnt]/(x[i].HCnt-x[i].DownTime);
end;
end;

Procedure ShowData;
begin
ClrScr;
For i:=1 to n do
begin
TextColor(3);
WriteLn('======================================================');
writeln('”?Ћ : ', x[i].fio);
Writeln('Љ®«ЁзҐбвў® з б®ў § ᬥ­г : ',x[i].HCnt:4 :2);
WriteLn('------------------------------------------------------');
for j:=1 to HourCnt do Writeln('‡ ',j,' з б : ',x[i].vp[j]:4 :2);
writeln('‚аҐ¬п Їа®бв®п : ', x[i].DownTime:4 :2);
write('Џа®Ё§ў®¤ЁвҐ«м­®бвм ¤Ґв «Ґ© § Ґ¤Ё­Ёж㠢६Ґ­Ё :');
WriteLn(x[i].Production:4 :2);
If WaitKey then
begin
WriteLn('Ќ ¦¬ЁвҐ Є« ўЁиг...');
ReadKey;
ClrScr;
end;
end;
end;

Procedure GetData;
begin
ClrScr;
Write('—Ёв Ґ¬ ¤ ­­лҐ.');
Assign(F,FileName);
Reset(F);
For i:=1 to N do
begin
Read(F,X[i]);
Write('.');
end;
Close(F);
end;

Procedure SortData;
var
b,t,j:Integer;
Temp:Blank;
begin
b:=N;
While b<>0 do
begin
t:=0;
For j:=1 to b-1 do
If X[j].Production<X[j+1].Production then
begin
Temp:=X[j];
X[j]:=X[j+1];
X[j+1]:=Temp;
t:=j;
end;
b:=t;
end;
end;

Procedure SaveData;
begin
ClrScr;
Assign(F,FileName);
ReWrite(F);
For i:=1 to N do
begin
Write(F,X[i]);
Write('.');
end;
Close(F);
end;

Procedure ShowProduction;
begin
WriteLn('Љ®нддЁжЁҐ­вл Їа®Ё§ў®¤ЁвҐ«м­®бвЁ : ');
For i:=1 to N do WriteLn(X[i].Production:4 :2);
ReadKey;
end;

Begin
Randomize;
ClrScr;
InitData;
ShowProduction;
SaveData;
GetData;
SortData;
SaveData;
ShowData;
ClrScr;
ShowProduction;
End.


P.S. Генерация данных стоит на автомате, надеюсь ввод данных запары для тебя не составит...

Автор: programerNOX 29.11.2003 0:39

GLuk спасибо тете за помошь! ;)

Автор: programerNOX 4.12.2003 15:05

Как выдать упорядоченый список и какие в етой програме ошыбки?
Переделаная програма:

Program  Zapis;
Uses
Crt;
Const
N = 3;
HourCnt = 8;
WaitKey = True;
FileName = 'blank.bin';
Type
Blank = record
NN:Integer; {Ќ®¬Ґа}
FIO:string[15]; {”?Ћ}
HCnt:Real; {Љ®«ЁзҐбвў® з б®ў ў ᬥ­г}
VP:array[1..8] of Real; {Љ®«-ў® Їа®¤гЄжЁЁ § !Є ¦¤л©! з б ўаҐ¬Ґ­Ё??}
DownTime:Real; {‚аҐ¬п Їа®бв®п}
Production:real; {Џа®Ё§ў®¤ЁвҐ«м­®бвм ¤Ґв «Ґ© ў з б}
end;

Var
x:array[1..N] of Blank;
i,j:integer;
F:text;

Procedure InitData;
begin
assign(f,'c:test.txt');
rewrite(f);
writeln('‘®§¤ Ґ¬ ‚Ґ¤®¬®бвм');
For i:=1 to n do
begin
x[i].nn:=1;
textcolor(3);
write('” ¬Ё«Ёп ?¬п ЋвзҐбвў® : ');
readln(x[i].fio);
writeln(f,x[i].fio);
writeln('Љ®«ЁзҐбвў® з б®ў § ᬥ­г : ');
readln(x[i].hcnt);
writeln(f,x[i].hcnt:4 :2);
writeln('‚ЁЇгбЄ Ґ¬ п Їа®¤гЄжлп : ');
for j:=1 to HourCnt do
begin
writeln('§ ',j,' з б :');
readln(x[i].vp[j]);
writeln(f,x[i].vp[j]:4 :2);
end;
writeln('‚аҐ¬п Їа®бв®п :');
readln(x[i].downtime);
writeln(f,x[i].downtime:4 :2);
x[i].Production:=x[i].vp[HourCnt]/(x[i].HCnt-x[i].DownTime);
writeln('Џа®¤гЄжлп :',x[i].production:4 :2);
writeln(f,x[i].production:4 :22)
end;
close(f);
end;

Procedure ShowData;
begin
ClrScr;
assign(f,'c:test.txt');
reset(f);
For i:=1 to n do
begin
TextColor(3);
WriteLn('======================================================');
readln(f,x[i].fio);
writeln('”?Ћ : ', x[i].fio);
readln(f,x[i].HCnt);
Writeln('Љ®«ЁзҐбвў® з б®ў § ᬥ­г : ',x[i].HCnt:4 :2);
WriteLn('------------------------------------------------------');
for j:=1 to HourCnt do
begin
readln(f,x[i].vp[j]);
Writeln('‡ ',j,' з б®ў : ',x[i].vp[j]:4 :2);
end;
readln(f,x[i].DownTime);
writeln('‚аҐ¬п Їа®бв®п : ', x[i].DownTime:4 :2);
write('Џа®Ё§ў®¤ЁвҐ«м­®бвм ¤Ґв «Ґ© § Ґ¤Ё­Ёж㠢६Ґ­Ё :');
readln(f,x[i].production);
WriteLn(x[i].Production:4 :2);
If WaitKey then
begin
WriteLn('Ќ ¦¬ЁвҐ ­ «оЎго Є« ўЁиг...');
ReadKey;
ClrScr;
end;
end;
end;

Procedure GetData;
begin
ClrScr;
Write('—Ёв Ґ¬ ¤ ­­лҐ.');
Assign(F,'c:test.txt');
Reset(F);
For i:=1 to N do
begin

Write('.');
end;
Close(F);
end;

Procedure SortData;
var
b,t,j:Integer;
Temp:Blank;
begin
b:=N;
While b<>0 do
begin
t:=0;
For j:=1 to b-1 do
If X[j].Production<X[j+1].Production then
begin
Temp:=X[j];
X[j]:=X[j+1];
X[j+1]:=Temp;
t:=j;
end;
b:=t;
end;
end;

procedure SaveData;
begin
ClrScr;
Assign(F,FileName);
ReWrite(F);
For i:=1 to N do
begin
Write(F,X[i]);
Write('.');
end;
Close(F);
end;
Procedure ShowProduction;
begin
WriteLn('Љ®нддЁжЁҐ­вл Їа®Ё§ў®¤ЁвҐ«м­®бвЁ : ');
For i:=1 to N do WriteLn(X[i].Production:4 :2);
ReadKey;
end;

Begin
ClrScr;
InitData;
ShowProduction;
SaveData;
GetData;
SortData;
SaveData;
ShowData;
ClrScr;
ShowProduction;
End.

Автор: programerNOX 5.12.2003 0:06

Помогите хто нибуть пожалуста на завтра срочно надо в универ. :'(

Автор: programerNOX 7.12.2003 14:23

Помогите!