81 Востаннє редагувалося misha_beginner (19.01.2014 02:05:34)

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

ось так хробив за вашими рекомендацыями:

type
xolod = record
vr:string[50];
nv:string[45];
kr:real;
rk:integer;
misc:string[45];
cn:real;
kst:real;
end;

var
i:integer;
f:text;
tabl:xolod;
    
type
xolod = record
vr:string[50];
nv:string[45];
kr:real;
rk:integer;
misc:string[45];
cn:real;
kst:real;
end;

var
i:integer;
f:text;
tabl:xolod;

virobn:array[1..4] of string[45];
nazva:array[1..4] of string[50];
kamera:array[1..4] of real;
rik:array[1..4] of integer;
misce:array[1..4] of string[45];
cina:array[1..4] of integer;
kilkist:array[1..4] of real;
Procedure stvor;
var
j:integer;
begin
Assign(f,'zadolbalo.txt');
Rewrite(f);
for j:=1 to 4 do
writeln(f, virobn[j]:10,'|',
nazva[j]:15,'|',
kamera[j]:16,'|',
rik[j]:4,'|',
misce[j]:9,'|',
cina[j]:9,'|',
kilkist[j]:9,'|'
);

Close(f);
End;

Procedure vvid;
begin
Assign(f, 'zadolbalo.txt');
Append(f);
Writeln('Vvedenna dannix');
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);
readln(f,rik[i]);
readln(f,misce[i]);
readln(f,cina[i]);
readln(f,tabl.kilkist[i]);
end;
writeln(sss);
End;

Procedure obrobka;
var
sss:string;
i : integer;
begin
Zagol;
Assign(f, 'zadolbalo.txt');
Reset(f);
while not eof(f) do
begin
i:=i+1;
readln(f, sss);
For i:=1 to 4 do
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
stvor;
vvid;
vuvid;
obrobka;
End.

а воно зараза : Program1.pas(93) : Ошибка времени выполнения: Входная строка имела неверный формат. на строцы

readln(f,kamera[i]);

поможіть пліз

82

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

Спробуйте прибрати процедуру stvor. Вона записує у zadolbalo.txt невідомо що. Якщо ви відкриєте цей файл блокнотом, то самі побачите.

83

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

нычого не робить вообще:

type
xolod = record
vr:string[50];
nv:string[45];
kr:real;
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 integer;
kilkist:array[1..4] of real;

begin

Assign(f,'zadolbalo.txt');
Rewrite(f);
for j:=1 to 4 do
writeln(f, virobn[j]:10,'|',
nazva[j]:15,'|',
kamera[j]:16,'|',
rik[j]:4,'|',
misce[j]:9,'|',
cina[j]:9,'|',
kilkist[j]:9,'|'
);

Close(f);


Procedure vvid;
begin
Assign(f, 'zadolbalo.txt');
Append(f);
Writeln('Vvedenna dannix');
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);
while not eof(f) do
begin
i:=i+1;
readln(f, sss);
For i:=1 to 4 do
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.26 mb, 248 downloads since 2014-01-19 

84

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

та сама помилка  laba12.pas(78) : Ошибка времени выполнения: Входная строка имела неверный формат. будь ласка в мене вже нерви не витримують, допоможіть пліз

85

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

Процедуру треба було прибирати або повністю, з усім вмістом, або тільки між "BEGIN" та "End."

86

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

type
xolod = record
vr:string[50];
nv:string[45];
kr:real;
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 integer;
kilkist:array[1..4] of real;
 

Procedure vvid;
begin
Assign(f, 'zadolbalo.txt');
Append(f);
Writeln('Vvedenna dannix');
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);
while not eof(f) do
begin
i:=i+1;
readln(f, sss);
For i:=1 to 4 do
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.09 mb, 238 downloads since 2014-01-19 

87

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

та сама помилка на рядку

readln(f,kamera[i])

88

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

У процедурі vvid замініть Append на Rewrite, щоб у файлі не залишалося старої інформації.
Але найголовніше порівняйте типи даних у записі xolod та у масивах virobn, nazva... У деяких місцях у вас там є неспівпадіння.

89 Востаннє редагувалося misha_beginner (19.01.2014 15:57:32)

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

ну так дійсно типи не співпаадали тепео отака лабуда тільки введеш шось 1 таке от вибває

Post's attachments

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

90

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

У процедурі obrobka цикл while лишній, та й узагалі уся робота з файлом там непотрібна. А от цикл For та наступних 6 строк варто лишити.

91

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

якось так?

procedure obrobka;
var
sss:string;
i : integer;
begin
Zagol;
For i:=1 to 4 do
begin
i:=i+1;

For i:=1 to 4 do
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,'|');
end;
end;
Close(f);
End;

тоді воно напише  Program1.pas(95) : Нельзя изменять значение переменной цикла внутри этого цикла
на i:=i+1

92

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

Там достатньо одного циклу For, другий там нідочого. Крім того цикл For сам збільшує свій лічильник, тому "i:=i+1;" йому не потрібне.

93 Востаннє редагувалося misha_beginner (19.01.2014 18:42:42)

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

Torbins написав:

Там достатньо одного циклу For, другий там нідочого. Крім того цикл For сам збільшує свій лічильник, тому "i:=i+1;" йому не потрібне.

такс прога вроді як робить але воно сразу мені виводить таблицю умови. тільки ввів  дані про 1 холодильник сразу вискочило. а треба шоб була і така таблиця і відфільтрована + в файл записує ту саму лабуду

Post's attachments

Безымянный.png 305.39 kb, 282 downloads since 2014-01-19 

94

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

короче те що я писав це все напевно неправильно

95 Востаннє редагувалося misha_beginner (19.01.2014 21:16:06)

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

пане Torbins ви ще тут?? скажіть я вже нічого не зроблю??

96

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

misha_beginner

Прихований текст

95 постів, а задача (на 30 хвилин) досі не вирішена, пан Torbins, мабуть, пішов напитись з горя. Без образ

97

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

З мобільного дивитися незручно, але здається у вас бракувало циклу у процедурі vvid. Через це зчитування відбувалося лише для першого холодильника.

98

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

Chemist-i
:) Не усі мають технічне мислення, як у більшості тутешніх завсідників.

99 Востаннє редагувалося misha_beginner (19.01.2014 21:54:33)

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

Chemist-i написав:

misha_beginner

Прихований текст

95 постів, а задача (на 30 хвилин) досі не вирішена, пан Torbins, мабуть, пішов напитись з горя. Без образ

ну так тикінть носом у останній код, єдининий Torbins  вказує мены помилки. эдине за що вам дякую так за те що відформатували код, koala сюди я бачу іноді заходить ( хоча він плюнув на цю тему), бо я його задовбав напевно, в мене не розвинуто таке мислення як у вас. розумієте??? що я зроблю як паскаль не йде мені, я розумію ви стали професіоналом, хороші програми пишете, але  ж є до яких туго доходить... зрозумійте будь ласка це. так 95 постів, багато переглядів, ну а що я можу зробити, літератури так не особо багато, препод вообще не пояснює, а бажання вчитися є

100

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

Torbins написав:

З мобільного дивитися незручно, але здається у вас бракувало циклу у процедурі vvid. Через це зчитування відбувалося лише для першого холодильника.

де саме не бачу, перед write ('virobn') ??