101

Re: Таблиці - відфільтрувати записи з данними про холодильники (продовж.)

кидаю вам знову повністю код. знов виводить отсортовані зразу ж:

type
xolod = record
vr:string[50];
nv:string[45];
kr:integer;
rk:integer;
misc:string[45];
cn:real;
kst:real;
end;
 
var
i,j:integer;
f:text;
tabl:xolod;
    
virobn:array[1..4] of string[45];
nazva:array[1..4] of string[50];
kamera:array[1..4] of integer;
rik:array[1..4] of integer;
misce:array[1..4] of string[45];
cina:array[1..4] of real;
kilkist:array[1..4] of real;
 

Procedure vvid;
var 
   i:integer;
begin
Assign(f, 'zadolbalo.txt');
Rewrite(f);
Writeln('Vvedenna dannix');
For i:=1 to 4 do
with tabl do
begin
Write('virobn:');
readln(vr);
Write('nazvanie:');
readln(nv);
Write('kamera:');
readln(kr);
Write('rik:');
readln(rk);
Write('misce:');
readln(misc);
Write('cina:');
readln(cn);
Write('kilkist:');
readln(kst);
 
writeln(f,vr:10);
writeln(f,nv:15);
writeln(f,kr:16);
writeln(f,rk:4);
writeln(f,misc:9);
writeln(f,cn:9);
writeln(f,kst:9);
end;
Close(f);
End;
Procedure Zagol;
begin
writeln('-----------------------------------------------------------------------');
writeln('| Виробництво | Назва | Обэм Камери | Рік | Місце | Ціна | Кількість|');
writeln('-----------------------------------------------------------------------');
End;
 
Procedure Vuvid;
var
sss:string;
begin
assign(f, 'zadolbalo.txt');
Reset(f);
while not eof(f) do
begin
i:=i+1;
readln(f,virobn[i]);
readln(f,nazva[i]);
readln(f,kamera[i]);
readln(f,rik[i]);
readln(f,misce[i]);
readln(f,cina[i]);
readln(f,kilkist[i]);
end;
writeln(sss);
End;
 
Procedure obrobka;
var
sss:string;
i : integer;
begin
Zagol;
Assign(f, 'zadolbalo.txt');
Reset(f);
For i:=1 to 4 do
begin
readln(f, sss);
If (rik[i]= 1993) then
begin
write(' |', virobn[i]:10,'|');
write(nazva[i]:15,'|', kamera[i]:16,'|', rik[i]:4,'|', misce[i]:9,'|' , cina[i]:9,'|' , kilkist[i]:9,'|');
writeln(sss);
end;
end;
Close(f);
End;
 
BEGIN
vvid;
vuvid;
obrobka;
End.
Post's attachments

Безымянный.png 1.05 mb, 226 downloads since 2014-01-19 

102

Re: Таблиці - відфільтрувати записи з данними про холодильники (продовж.)

misha_beginner Розумієте, я вже 3 (мінімум) раза, переглядаючи цю тему, хотів написати за Вас ту програму, але то зірвало б весь навчальний процес, Torbins Вас навчити намагається, щоб Ви зрозуміли звідки ноги ростуть, і розібрались. По паскалю дуже багато літератури. Я свого часу по єдиній довідці по Дельфі навчався (але то було дуже давно). Так акуратно наводити на думки як koala з Torbins'ом я не вмію, тож тихесенько переглядаю і все

103 Востаннє редагувалося Chemist-i (19.01.2014 22:11:57)

Re: Таблиці - відфільтрувати записи з данними про холодильники (продовж.)

misha_beginner написав:

кидаю вам знову повністю код. знов виводить отсортовані зразу ж:

type
xolod = record
vr:string[50];
nv:string[45];
kr:integer;
rk:integer;
misc:string[45];
cn:real;
kst:real;
end;
 
var
i,j:integer;
f:text;
tabl:xolod;
    
virobn:array[1..4] of string[45];
nazva:array[1..4] of string[50];
kamera:array[1..4] of integer;
rik:array[1..4] of integer;
misce:array[1..4] of string[45];
cina:array[1..4] of real;
kilkist:array[1..4] of real;
 

Procedure vvid;
var 
   i:integer;
begin
Assign(f, 'zadolbalo.txt');
Rewrite(f);
Writeln('Vvedenna dannix');
For i:=1 to 4 do
with tabl do
begin
Write('virobn:');
readln(vr);
Write('nazvanie:');
readln(nv);
Write('kamera:');
readln(kr);
Write('rik:');
readln(rk);
Write('misce:');
readln(misc);
Write('cina:');
readln(cn);
Write('kilkist:');
readln(kst);
 
writeln(f,vr:10);
writeln(f,nv:15);
writeln(f,kr:16);
writeln(f,rk:4);
writeln(f,misc:9);
writeln(f,cn:9);
writeln(f,kst:9);
end;
Close(f);
End;
Procedure Zagol;
begin
writeln('-----------------------------------------------------------------------');
writeln('| Виробництво | Назва | Обэм Камери | Рік | Місце | Ціна | Кількість|');
writeln('-----------------------------------------------------------------------');
End;
 
Procedure Vuvid;
var
sss:string;
begin
assign(f, 'zadolbalo.txt');
Reset(f);
while not eof(f) do
begin
i:=i+1;
readln(f,virobn[i]);
readln(f,nazva[i]);
readln(f,kamera[i]);
readln(f,rik[i]);
readln(f,misce[i]);
readln(f,cina[i]);
readln(f,kilkist[i]);
end;
writeln(sss);
End;
 
Procedure obrobka;
var
sss:string;
i : integer;
begin
Zagol;
Assign(f, 'zadolbalo.txt');
Reset(f);
For i:=1 to 4 do
begin
readln(f, sss);
If (rik[i]= 1993) then
begin
write(' |', virobn[i]:10,'|');
write(nazva[i]:15,'|', kamera[i]:16,'|', rik[i]:4,'|', misce[i]:9,'|' , cina[i]:9,'|' , kilkist[i]:9,'|');
writeln(sss);
end;
end;
Close(f);
End;
 
BEGIN
vvid;
vuvid;
obrobka;
End.

Мені лінь шуткати, можна ще раз чьотко і ясно ціль данної програми? (Що вона має робити, і якомога докладніше)

104

Re: Таблиці - відфільтрувати записи з данними про холодильники (продовж.)

Мені лінь шуткати, можна ще раз чьотко і ясно ціль данної програми? (Що вона має робити, і якомога докладніше)

скласти програму створення текстового файлу з іменем Т, з інформацією про "холодильники"; вивести відповідну таблицю даних файла і ту її частину, яка містить відомості про холодильники на складі: місто виробництва, назва холодильника, обсяг холодильної камери, рік та місяць випуску, ціна, кількість. використовуючи сформований файл, вивести інформацію про холодильники 1993 року випуску. передбачити в програмі вилучення та добавлення даних.

хотів написати за Вас ту програму, але то зірвало б весь навчальний процес

тут я з вами згідний на 100% .
P.S. мені б ваш мозок. )

105

Re: Таблиці - відфільтрувати записи з данними про холодильники (продовж.)

Torbins що скажете нащот мого поста 101 ?

106

Re: Таблиці - відфільтрувати записи з данними про холодильники (продовж.)

misha_beginner
У вас у процедурі vvid немає виводу на екран, бо усі writeln починаються з файлового вказівника. Додайте після отих writeln такий write як у процедурі obrobka.

107

Re: Таблиці - відфільтрувати записи з данними про холодильники (продовж.)

Procedure vvid;
var 
   i:integer;
begin
Assign(f, 'zadolbalo.txt');
Rewrite(f);
Writeln('Vvedenna dannix');
For i:=1 to 4 do
with tabl do
begin
Write('virobn:');
readln(vr);
Write('nazvanie:');
readln(nv);
Write('kamera:');
readln(kr);
Write('rik:');
readln(rk);
Write('misce:');
readln(misc);
Write('cina:');
readln(cn);
Write('kilkist:');
readln(kst);
 
writeln(f,vr:10);
writeln(f,nv:15);
writeln(f,kr:16);
writeln(f,rk:4);
writeln(f,misc:9);
writeln(f,cn:9);
writeln(f,kst:9);

write(' |', virobn[i]:10,'|');
write(nazva[i]:15,'|', kamera[i]:16,'|', rik[i]:4,'|', misce[i]:9,'|' , cina[i]:9,'|' , kilkist[i]:9,'|');
end;
Close(f);
End;

ой що це таке

Post's attachments

Безымянный.png 1.08 mb, 215 downloads since 2014-01-19 

108

Re: Таблиці - відфільтрувати записи з данними про холодильники (продовж.)

Придивіться, що ви виводите на екран. У всіх отих writeln ви працюєте з полями запису tabl, а у write-ах - з масивами.

109

Re: Таблиці - відфільтрувати записи з данними про холодильники (продовж.)

тепер отак

Write('virobn:');
readln(vr);
Write('nazvanie:');
readln(nv);
Write('kamera:');
readln(kr);
Write('rik:');
readln(rk);
Write('misce:');
readln(misc);
Write('cina:');
readln(cn);
Write('kilkist:');
readln(kst);
 
writeln(f,vr:10);
writeln(f,nv:15);
writeln(f,kr:16);
writeln(f,rk:4);
writeln(f,misc:9);
writeln(f,cn:9);
writeln(f,kst:9);

write(' |', vr[i]:10,'|');
write(nv:15,'|', kr:16,'|', rk:4,'|', misc:9,'|' , cn:9,'|' , kst:9,'|')

;

Post's attachments

Безымянный.png 1.1 mb, 218 downloads since 2014-01-19 

110

Re: Таблиці - відфільтрувати записи з данними про холодильники (продовж.)

А як має бути? Якщо потрібно спочатку ввести інформацію про усі холодильники, а потім вивести табличку, то треба:
- зчитувати не у поля запису tabl, а навпаки у масиви;
- зробити у цій процедурі два цикли. У першому зчитати інформацію у масиви та записати у файл. А коли у масивах буде інформація про усі чотири холодильники - другим циклом вивести її на екран.

111 Востаннє редагувалося misha_beginner (20.01.2014 00:05:48)

Re: Таблиці - відфільтрувати записи з данними про холодильники (продовж.)

Torbins написав:

А як має бути? Якщо потрібно спочатку ввести інформацію про усі холодильники, а потім вивести табличку, то треба:
- зчитувати не у поля запису tabl, а навпаки у масиви;
- зробити у цій процедурі два цикли. У першому зчитати інформацію у масиви та записати у файл. А коли у масивах буде інформація про усі чотири холодильники - другим циклом вивести її на екран.

напишыть цей невекликий кусочок коду будь ласка, бо не все зрозумів. прошу вас

112

Re: Таблиці - відфільтрувати записи з данними про холодильники (продовж.)

ну от ще раз повністю перероблене:

type
xolod = record
virobn:string[50];
nazvanie:string[45];
kamera:real;
rik:integer;
misce:string[45];
cina:real;
kilkist:real;
end;
 
var
i,j:integer;
f:text;
tabl:xolod;
    
 
 
Procedure stvor;
var 
   i:integer;
begin
Assign(f, 'zadolbalo111.txt');
Rewrite(f);
Writeln('Vvedenna dannix');
For i:=1 to 4 do
with tabl do
begin
Write('virobn:');
readln(tabl.virobn);
Write('nazvanie:'); 
readln(tabl.nazvanie);
Write('kamera:');
readln(tabl.kamera);
Write('rik:'); 
readln(tabl.rik);
Write('misce:'); 
readln(tabl.misce);
Write('cina:'); 
readln(tabl.cina);
Write('kilkist:'); 
readln(tabl.kilkist);

writeln(f,tabl.virobn);
writeln(f,tabl.nazvanie);
writeln(f,tabl.kamera);
writeln(f,tabl.rik);
writeln(f, tabl.misce);
writeln(f, tabl.cina);
writeln(f, tabl.kilkist);
 

end;
Close(f);
End;

Procedure Insert;
begin
append(f);
Write('virobn:');
readln(tabl.virobn);
Write('nazvanie:'); 
readln(tabl.nazvanie);
Write('kamera:');
readln(tabl.kamera);
Write('rik:'); 
readln(tabl.rik);
Write('misce:'); 
readln(tabl.misce);
Write('cina:'); 
readln(tabl.cina);
Write('kilkist:');
readln(tabl.kilkist);

writeln(f,tabl.virobn);
writeln(f,tabl.nazvanie);
writeln(f,tabl.kamera);
writeln(f,tabl.rik);
writeln(f, tabl.misce);
writeln(f, tabl.cina);
writeln(f, tabl.kilkist);
end;

Procedure Vuvid;
var
sss:string;
begin
reset(F);
writeln('------------------------------------------------------------------------------------');
writeln('|','Vurobnuk|':11,'Nazva|':10,'Kamera|':8,'Rik|':5,'Misce|':10,'Cina|':6,'Kilkist|':8);
while not eof (F) do begin
readln(f,tabl.virobn);
readln(f,tabl.nazvanie);
readln(f,tabl.kamera);
readln(f,tabl.rik);
readln(f, tabl.misce);
readln(f, tabl.cina);
readln(f, tabl.kilkist);

If (tabl.rik=1993) then
begin
writeln('------------------------------------------------------------');
writeln('|',tabl.virobn:10,'|',tabl.nazvanie:9,'|',tabl.kamera:7:0,'|',
tabl.rik:4,'|',tabl.misce:9,'|',tabl.cina:5:0,'|',tabl.kilkist:7:0,'|');
end;
end;
    End;
Procedure Zagol;
begin
writeln('-----------------------------------------------------------------------');
writeln('| Виробництво | Назва | Обэм Камери | Рік | Місце | Ціна | Кількість|');
writeln('-----------------------------------------------------------------------');
End;
 

BEGIN
stvor;
insert;
vuvid;
Close(f);
End.

але знову таки виводить зразу відсортовану таблицю ))

113

Re: Таблиці - відфільтрувати записи з данними про холодильники (продовж.)

Якщо вам без масивів простіше, то зробіть дві версії процедури Vuvid: одну з if, а другу без. І в кінці кожної не забудьте close(f).

114

Re: Таблиці - відфільтрувати записи з данними про холодильники (продовж.)

ну от зробив отак:

uses
   crt;
const 
      n=4;
 type
    xolod = record
      virobn:string[50];
      nazvanie:string[45];
      kamera:real;
      rik:integer;
      misce:string[45];
      cina:real;
      kilkist:real;
    end;
   var
   f:text;
   i:integer;
  procedure stvor;
  var
     i:integer;
     tabl:xolod;
     begin
           Assign(f,'d:\xolod.txt');
           rewrite(F);
           close(F);
           Assign(f,'d:\xolod.txt');
           append(F);
           for i:=1 to n do
           begin
            Write('virobn:');
            readln(tabl.nazvanie);
            Write('nazvanie:'); 
            readln(tabl.nazvanie);
            Write('kamera:');  
            readln(tabl.kamera);
             Write('rik:'); 
             readln(tabl.rik);
     Write('misce:'); 
     readln(tabl.misce);
     Write('cina:'); 
     readln(tabl.cina);
     Write('kilkist:'); 
     readln(tabl.kilkist);
     
      writeln(f,tabl.virobn:10,'|' ,tabl.nazvanie:15,'|',tabl.kamera:16,'|', tabl.rik:4,'|', tabl.misce:9,'|' , tabl.cina:9,'|' , tabl.kilkist:9,'|');
      end;
      close(F);
      End;
      
      Procedure Vuvid;
      var
         x:integer;
         sss:string;
         begin
         assign(f, 'd:\xolod.txt');
         reset(F);
         while not  eof (F) do begin
         read(f,sss);
         x:=pos('1993', sss);
         If  (x<>0) then
          begin
        
         writeln(sss);
         end;
         end;
         Close(F);
         
      End;
      
      begin
      
      stvor;
      vuvid;
      end.

може я зря переживаю, бо в файл пишеться введені дані, а в программі виводиться відсортовані.

115

Re: Таблиці - відфільтрувати записи з данними про холодильники (продовж.)

Вам видніше, як воно має працювати.