Консультация № 178029
25.04.2010, 08:31
0.00 руб.
0 7 2
Уважаеиые эксперты,помогите решить задачу по записям.
1.Из ассортиментов конфет, выпускаемой фабрикой. Выбрать те изделия,которые стоят от 100 до 200 рублей за килограм. Указать срок их годности и номера магазинов в которых они имется в продажи.
2.Распечатать список учеников музыкальной школы которые учатся играть на скрипке. Указать сколько лет они занимаются музыкой и принимали ли участия в конкурсах.

Обсуждение

Неизвестный
25.04.2010, 20:34
общий
Какие дополнительные требования? Как вводить? С клавиатуры или из файла?
В какой среде программирования писать?
Неизвестный
26.04.2010, 16:29
общий
Должно быть меню,забыл.
Вводить с клавиатуры,результат записать файл
Неизвестный
26.04.2010, 21:57
общий
А меню-то какое? Каждая программа решает свою небольшую задачу.
Напишите, какое меню
НО, ЕЩЕ БОЛЬШЕ ЗАБЫЛ: какой Паскаль?
Неизвестный
27.04.2010, 07:34
общий
Меню
1.создание
2.просмотр созданного файла.(вывести виде массива)
3. Обработка
4 вывести результат.тоже вывести так же


Паскаль ТР7
давно
Академик
320937
2216
29.04.2010, 21:07
общий
Дмитрий Мороз:
Добрый вечер! Посмотрите, пожалуйста, "конфетную" программу. Turbo Pascal7. Печать на данный момент идет из файла.
(* Перевод в массив дорабатываю *)
Код:
program Main;

uses
crt;

const
TotalSweets = 200; { максимально используемое количество записей в массиве конфет }
TotalShops = 5; { максимально возможное количество магазинов }

type
TName = string[10];
TShops = array[1..TotalShops] of 0..1;

TSweet = record
name: TName;
price: integer;
time: integer;
sh: TShops;
end;

TTrade = array[1..TotalSweets] of TSweet;
TSweetFile = file of TSweet;

var
iChoice : integer;
fH: TSweetFile;
IsOpen: boolean;

procedure Create( var fH: TSweetFile );
var
fName: string; { имя файла }
begin
{ если открыт, закроем }
if IsOpen then begin
Close( fH );
IsOpen := false;
end;

write('Имя файла:');
readln(fName);

{$I-}
Assign(fH, fName);
Rewrite(fH);
{$I+}
if (IOResult <> 0) then
Writeln('File uge sushestvuet')
else
begin
IsOpen := true;
Writeln('Файл успешно создан');
end;
readln;
end; { Create }

procedure InsertOrUpdate( var fH: TSweetFile );
var
sw: TSweet;
count: integer;
i: integer;
j: integer;
recno: integer;
name: TName;
price: integer;
shop: integer;
time: integer;
found: boolean;

begin
GotoXY(1,8);
write( 'Число поставок' );
GotoXY(20,8);
readln( count );

for i:= 1 to count do
begin
GotoXY(1,10);
write('Название конфет:');

GotoXY(1,11);
write('Цена:');
GotoXY(1,12);
write('Срок:');
GotoXY(1,13);
write('Магазин:');

GotoXY( 20, 10);
readln( name );
GotoXY( 20, 11);
readln( price );
GotoXY( 20, 12);
readln( time );
GotoXY( 20, 13);
readln( shop );

RecNo := 0;
seek(fH, 0);
found := false;
while not( eof( fH ) ) and not(found) do
begin
read( fH, sw );
if (sw.name = name) then
found := true;
end;

sw.sh[shop] := 1;
if found then
begin
sw.sh[shop] := 1;
seek( fH, filepos( fH )-1); { skip-1}
write( fH, sw );
end
else
begin
for j:= 1 to TotalShops do
sw.sh[j] := 0;
sw.sh[shop] := 1;
sw.name := name;
sw.price := price;
sw.time := time;
seek( fH, FileSize( fH ) );
write( fH, sw );
end;
end;
readln;
end; { Input }


procedure Menu;
begin
clrscr;
Writeln( ' 0. Выход' );
Writeln( ' 1. Создание файла' );
Writeln( ' 2. Открытие файла' );
Writeln( ' 3. Ввод/корректировка' );
Writeln( ' 4. Печать' );
Writeln( ' 5. Конфеты от 100 до 300 рублей' );
Write( ' Выбран пункт:');
end; { Menu }

procedure Open( var fH: TSweetFile );
var
fName: string; { имя файла }
begin
{ если открыт, закроем }
if IsOpen then begin
Close( fH );
IsOpen := false;
end;

write('Имя файла:');
readln(fName);

{$I-}
Assign(fH, fName);
Reset(fH);
{$I+}
if ((IOResult <> 0) or (fName = '')) then
Writeln('Файл не существует')
else
begin
IsOpen := true;
Writeln('Файл успешно открыт');
end;
readln;
end; { Open }

procedure Print( var fH: TSweetFile; cond: integer );
var
sw: TSweet;
i: integer;
j: integer;
PrintedShop: boolean; { для печати }
begin
writeln( '-------------------------------------------------------' );
writeln( 'Номер Название Цена Срок Магазины' );
writeln( '-------------------------------------------------------' );

i := 0;
seek(fH, 0);
while not( eof( fH ) ) do
begin
read( fH, sw );
if (cond=0) or (cond>0) and (sw.price>=100) and (sw.price<=300) then begin
inc( i );
PrintedShop := false;
write( i:3, ' ', sw.name, ' ':20-length(sw.name), sw.price:3, ' ', sw.time:3 );

for j:= 1 to TotalShops do
if (sw.sh[j]=1) then begin
if PrintedShop then
write(',')
else
write(' ');
PrintedShop := true;
write(j);
end;
writeln;

if i mod 10 = 0 then readln; { выдача порциями по 10 }
end; { if cond }
end; { while not eof() }
readln;
end; { Print }

procedure SayGoodBye;
begin
writeln( 'Удачи!' );
readln;
end; { SayGoodBye }

begin { Main }
iChoice := 0;
IsOpen := false;
while true do begin
Menu;
Readln( iChoice );

case iChoice of
0: begin
if IsOpen then
Close( fH );
SayGoodBye;
exit
end;
1: Create( fH ); { Создание файла }
2: Open( fH ); { Открытие файла }
3: InsertOrUpdate( fH ); { Ввод данных }
4: Print( fH, 0 ); { Вывод данных }
5: Print( fH, 1 ); { Вывод данных по условию}

end; { case }
end; { while }
end.

Неизвестный
29.04.2010, 22:02
общий
это ответ
Здравствуйте, Дмитрий Мороз.

В приложении приведена программа для первой задачи. Программа позволяет читать данные из файла (поля разделяются точной с запятой), добавлять новые записи, сохранять данные в тот же или другой файл, выводить список на экран, обрабатывать данные в соответствии с условием задачи. Внутри программы данные хранятся в односвязном списке.

Программа отлажена в Borland Pascal 7.0. Запускал из-под DOSBOX, поскольку иначе выдает ошибку 200 (из-за слишком быстрого процессора).
При наличии вопросов обращайтесь в мини-форум.

Вторая задача принципиально не отличается от первой, только структура (record) для хранения данных будет другой.

Успехов!

Приложение:
{
Из ассортимента конфет, выпускаемой фабрикой, выбрать те
изделия, которые стоят от 100 до 200 рублей за килограмм. Указать
срок их годности и номера магазинов, в которых они имеются в продаже.
}
program q178029a;
uses crt;

const MAX_SHOP = 2;

type
TDate = record
year : word;
month: byte;
day : byte;
end;

PTCandy = ^TCandy;
TCandy = record
next : PTCandy;
name : string; { название }
price: real; { цена }
date : TDate; { срок годности }
shops : array [0..MAX_SHOP] of word; { номера магазинов }
end;

var
nTotal : integer; { общее кол-во корректных записей в файле }

{ удаление из строки начальных и конечных пробелов }
function trim( s: string ): string;
var i,j : integer;
begin
i := length( s );
while i > 0 do begin { пропускаем конечные пробелы }
if (s[i] <> ' ') and (s[i] <> #9) then break;
dec( i );
end;
j := 1;
while j <= i do begin { пропускаем начальные пробелы }
if (s[j] <> ' ') and (s[j] <> #9) then break;
inc( j );
end;
trim := copy( s, j, i-j+1 );
end;

const
daysInMonth: array [1..12] of byte =
( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );

{ преобразование строки вида yyyy.mm.dd в дату }
function str2date( s: string; var d: TDate ): boolean;
var
v, i1, i2, code : integer;
begin
str2date := false;
{ год }
i1 := pos( '.', s );
if i1 = 0 then exit;

val( trim(copy( s, 1, i1-1 )), v, code );
if (v < 2000) or (v > 2020) then exit;
with d do begin
year := v;

{ месяц }
s[i1] := ' ';
i2 := pos( '.', s );
if i2 = 0 then exit;
inc( i1 );
val( trim(copy( s, i1, i2-i1 )), v, code );
if (v < 1) or (v > 12) then exit;
month := v;

{ день }
val( trim(copy( s, i2+1, 100 )), v, code );
if v < 1 then exit;
if v > daysInMonth[month] then begin
if month <> 2 then exit;
{ в данном диапазоне лет (2000-2020) достаточно такой простой
проверки на високосный год }
if (v > 29) or ((year mod 4) <> 0) then exit;
end;
day := v;
end; { with }
str2date := true;
end;

{ разбор одной строки и добавление в конец списка }
function parseLine( s: string; var pList, pListEnd: PTCandy ): boolean;
var
i, i1, i2, code : integer;
sdate: string;
m : word;
r : TCandy;
pR: PTCandy;
begin
parseLine := false; { при любой ошибке выходим и возвращаем false }

{ название; цена; срок годности; магазин1[; магазин2[; магазин3]] }
{ срок годности (дата) в формате yyyy.mm.dd }
{ 1. название }
i1 := pos( ';', s );
if i1 = 0 then exit;
r.name := trim(copy( s, 1, i1-1 ));

{ 2. цена }
s[i1] := ' ';
i2 := pos( ';', s );
if i2 = 0 then exit;
inc( i1 );
val( trim(copy( s, i1, i2-i1 )), r.price, code );
if (code <> 0) or (r.price < 1) then exit;

{ 3. срок годности }
s[i2] := ' ';
i1 := pos( ';', s );
if i1 = 0 then exit;
inc( i2 );
sdate := trim(copy( s, i2, i1-i2 ));
if not str2date( sdate, r.date ) then exit;

{ 4. читаем номера магазинов (от одного до трех) }
for i := 0 to MAX_SHOP do
r.shops[i] := 0;

for i := 0 to MAX_SHOP do begin
s[i1] := ' ';
i2 := pos( ';', s );
if i2 = 0 then
i2 := length( s ) + 1;
inc( i1 );
val( trim(copy( s, i1, i2-i1 )), m, code );
if code <> 0 then exit;
r.shops[i] := m;
if i2 > length( s ) then break;
i1 := i2;
end;
{ должен быть задан хотя бы один магазин }
if r.shops[0] = 0 then exit;

{ добавляем новую запись в конец списка, так что при просмотре
списка записи идут в том же порядке, что и в файле }
new( pR );
r.next := nil;
pR^ := r;
if pListEnd <> nil then
pListEnd^.next := pR
else
pList := pR;
pListEnd := pR;

parseLine := true;
end;

{ чтение файла с заданным именем и формирование списка }
procedure readFile( fname: string; var pList, pListEnd: PTCandy );
var
f: text;
s: string;
begin
assign( f, fname );
reset( f );
write( 'Загрузка данных...' );
while not eof(f) do begin { читаем по одной строке до конца файла }
readln( f, s );
if parseLine( s, pList, pListEnd ) then
inc( nTotal ); { подсчитываем число записей }
end;
close( f );
writeln( 'OK' );
end;

{ дополнение строки пробелами (для форматированного вывода) }
function pad_with_spaces( s: string; len: integer ): string;
var n: integer;
begin
n := length( s );
while n < len do begin
inc(n);
s[n] := ' ';
end;
s[0] := chr( n );
pad_with_spaces := s;
end;

{ вывод списка на экран }
procedure print_list( pList: PTCandy );
var i: word;
begin
writeln( 'Название Цена Срок годности Магазины' );
writeln( '-----------------------------------------------------' );
while pList <> nil do begin
with pList^ do begin
write( pad_with_spaces( name, 20 ), price:7:2,
date.year:6, '.', date.month:2, '.', date.day:2, ' ' );
for i := 0 to MAX_SHOP do begin
if shops[i] = 0 then break;
if i <> 0 then write(',');
write( shops[i]:4 );
end;
writeln;
end;
pList := pList^.next;
end;
writeln( '-----------------------------------------------------' );
end;

{ Выбрать те изделия,которые стоят от 100 до 200 рублей за килограмм.
Указать срок их годности и номера магазинов, в которых они имеются
в продаже.
}
procedure process( pList: PTCandy );
var i: word;
begin
writeln( 'Конфеты стоимостью от 100 до 200 рублей за килограмм:' );
writeln( '-----------------------------------------------------' );
writeln( 'Название Цена Срок годности Магазины' );
writeln( '-----------------------------------------------------' );
while pList <> nil do begin
with pList^ do
if (price >= 100.0) and (price <= 200.0) then begin
write( pad_with_spaces( name, 20 ), price:7:2,
date.year:6, '.', date.month:2, '.', date.day:2, ' ' );
for i := 0 to MAX_SHOP do begin
if shops[i] = 0 then break;
if i <> 0 then write(',');
write( shops[i]:4 );
end;
writeln;
end;
pList := pList^.next;
end;
writeln( '-----------------------------------------------------' );
end;

{ добавление новой записи }
procedure add_rec( var pList, pListEnd : PTCandy );
var
i, code : integer;
s : string;
r : TCandy;
pR: PTCandy;
begin
write( 'Название: ' ); readln( s );
r.name := trim( s );
write( 'Цена: ' ); readln( r.price );
write( 'Срок годности (гггг.мм.дд): ' ); readln( s );
if not str2date( s, r.date ) then exit;

for i := 0 to MAX_SHOP do
r.shops[i] := 0;

for i := 0 to MAX_SHOP do begin
write( 'Номер магазина ', i+1, ' или [Enter] для окончания: ');
readln( s );
s := trim(s);
if length(s) = 0 then break;
val( s, r.shops[i], code );
if code <> 0 then exit;
end;
{ должен быть задан хотя бы один магазин }
if r.shops[0] = 0 then exit;

{ добавляем новую запись в конец списка, так что при просмотре
списка записи идут в том же порядке, что и в файле }
new( pR );
r.next := nil;
pR^ := r;
if pListEnd <> nil then
pListEnd^.next := pR
else
pList := pR;
pListEnd := pR;
end;

{ удаление всего списка }
procedure clear_data( pList: PTCandy );
var p: PTCandy;
begin
while pList <> nil do begin
p := pList^.next;
dispose( pList );
pList := p;
end;
end;

{ сохранение списка в файл }
procedure save_data( fname: string; pList: PTCandy );
var i: word;
f: text;
begin
assign( f, fname );
rewrite( f );
write( 'Сохранение данных в файл "', fname, '" ...' );
while pList <> nil do begin
with pList^ do begin
write( f, name, ';', price:7:2, ';',
date.year, '.', date.month, '.', date.day, ';' );
for i := 0 to MAX_SHOP do begin
if shops[i] = 0 then break;
if i <> 0 then write( f, ';' );
write( f, shops[i] );
end;
writeln( f );
end;
pList := pList^.next;
end;
close( f );
writeln( 'OK' );
end;

{ --------------------------------------------------------- }
{ функции-обертки, использующие глобальные переменные }

var
pList, pListEnd : PTCandy;
fname : string;

procedure load_data;
begin
write( 'Введите имя файла с данными: ' ); readln( fname );
readFile( fname, pList, pListEnd );
end;

{ сохранение данных в файл под другим именем }
procedure save_as( pList: PTCandy );
begin
write( 'Введите имя файла: ' ); readln( fname );
save_data( fname, pList );
end;
{ --------------------------------------------------------- }

var ch: char;

begin
pList := nil;
pListEnd := nil;
nTotal:= 0;
fname := '';

repeat
writeln( '-------------------------' );
writeln( '1. Загрузить из файла'#13#10'2. Новая запись'#13#10'3. Сохранить'#13#10'4. Сохранить как...' );
writeln( '5. Вывести на экран'#13#10'6. Обработать'#13#10'7. Очистить данные'#13#10'0. Выход' );
writeln( '-------------------------' );
ch := readkey;
case ch of
'1': load_data;
'2': add_rec( pList, pListEnd );
'3': if fname = '' then save_as( pList) else save_data( fname, pList );
'4': save_as( pList );
'5': print_list( pList );
'6': process( pList );
'7': begin clear_data( pList ); pList := nil; pListEnd := nil; end;
end;
until ch = '0';
clear_data( pList );
end.
давно
Академик
320937
2216
30.04.2010, 11:42
общий
это ответ
Здравствуйте, Дмитрий Мороз. В Приложении ответ на 1й вопрос. Turbo Pascal 7.

I. Допущения при постановке задачи.
1. Срок годности - это период, по истечении которого товар (работа) считается непригодным для использования по назначению (п.4 ст.5 Закона РФ "О защите прав потребителей"). www.urprofy.ru/urslovar.php. Таким образом, для каждого вида товара срок годности есть величина относительно постоянная, то есть не зависящая от конкретной поставки, в отличие от даты реализации, которая определяется датой выпуска и сроком годности.
2. Считаем (для простоты), что один и тот же сорт конфет реализован магазинам по одной и той же цене.
3. Считаем количество магазинов фиксированным.
В условиях этих допущений на каждый сорт конфет отводится одна строка в файле или массиве.
4. Из методических соображений используем статические массивы }

II. Сценарий работы.
1. При первом запуске программы необходимо создать файл (п.1). Эту операцию можно выполнять неоднократно, если нужно создать любое количество файлов.
2. Перед выполнением любых других действий с файлом он должен быть открыт (п.2)
3. Для ввода одной или нескольких записей используем п.3, сначала вводится количество записей, затем вводится описание каждой поставки. Данные о цене и сроке годности вносятся в файл при первой записи и не корректируются.
В записи о поставке предусмотрен массив магазинов, элемент с номером магазина, в котором данный сорт конфет есть, содержит единицу. Остальные элементы содержат нули. Магазины из списка не удаляются.
4. Для распечатки файла выбираем п.4. Сначала файл загружается в массив, затем массив распечатывается. Если файл не загружается целиком, выдается сообщени.
5. Для распечатки выбранных позиций используем п.5. Аналогично п.4

Если что-то требует уточнения - задавайте вопросы.

Приложение:
program p178029;
{ Из ассортимента конфет, выпускаемых фабрикой, выбрать изделия стоимостью
от 100 до 200 рублей за килограмм.
Указать срок их годности и номера магазинов, в которых они имеются в продаже.
}

uses
crt;

const
TotalSweets = 10; { максимально используемое количество записей в массиве конфет }
TotalShops = 5; { максимально возможное количество магазинов }

type
TName = string[10];
TShops = array[1..TotalShops] of 0..1; { массив магазинов }

TSweet = record { запись о сорте конфет и магазинах }
name: TName; { сорт }
price: integer; { цена }
time: integer; { срок годности }
sh: TShops; { массив магазинов }
end;

TTrade = record
shops: array[1..TotalSweets] of TSweet;
{ массив записей о конфетах, каждая содержит, в том числе, массив магазинов }
lines: integer; { использовано строк в массиве конфет, для печати }
end;

TSweetFile = file of TSweet; { файл записей о конфетах }

var
iChoice : integer; { выбранный пункт меню }
fH: TSweetFile; { обрабатываемый файл }
IsOpen: boolean; { признак: файл открыт?}
trade: TTrade; { массив конфет }

procedure Create( var fH: TSweetFile );
var
fName: string; { имя файла }
begin
{ если открыт, закроем }
if IsOpen then begin
Close( fH );
IsOpen := false;
end;

write('Имя файла:');
readln(fName);

{$I-}
Assign(fH, fName);
Rewrite(fH);
{$I+}
if (IOResult <> 0) then
Writeln('Файл уже существует')
else
begin
IsOpen := true;
Writeln('Файл успешно создан');
end;
readln;
end; { Create }

procedure InsertOrUpdate( var fH: TSweetFile );
var
sw: TSweet; { запись о конфете для считывания из файла и сохранения в файл }
count: integer; { число вводимых записей }
i: integer; { номер вводмой записи }
j: integer; { счетчик числа магазинов }

{ временные переменные для считывания с клавиатуры сведений о поставке }
name: TName; {}
price: integer; {}
shop: integer; {}
time: integer; { срок годности}

found: boolean; { обнаружена запись о сорте? }

begin
if not (IsOpen) then
begin
writeln('Файл не открыт');
readln;
exit;
end;

{ Диалоговый ввод данных }
GotoXY(1,8);
write( 'Число поставок' );
GotoXY(20,8);
readln( count );

for i:= 1 to count do
begin
GotoXY(1,10);
write('Название конфет:');

GotoXY(1,11);
write('Цена:');
GotoXY(1,12);
write('Срок:');
GotoXY(1,13);
write('Магазин:');

GotoXY( 20, 10);
readln( name );
GotoXY( 20, 11);
readln( price );
GotoXY( 20, 12);
readln( time );
GotoXY( 20, 13);
readln( shop );

seek(fH, 0); { Есть ли уже такие конфеты ? }
found := false;
while not( eof( fH ) ) and not(found) do
begin
read( fH, sw );
if (sw.name = name) then
found := true; { Конфеты в файле найдены }
end;

sw.sh[shop] := 1;
if found then { редактируем запись о конфетах }
begin
sw.sh[shop] := 1;
seek( fH, filepos( fH )-1);
write( fH, sw );
end
else
begin { добавляем запись о конфетах }
for j:= 1 to TotalShops do
sw.sh[j] := 0;
sw.sh[shop] := 1;
sw.name := name;
sw.price := price;
sw.time := time;
seek( fH, FileSize( fH ) );
write( fH, sw );
end;
end;
readln;
end; { Input }


procedure Menu;
begin
clrscr;
Writeln( ' 0. Выход' );
Writeln( ' 1. Создание файла' );
Writeln( ' 2. Открытие файла' );
Writeln( ' 3. Ввод/корректировка' );
Writeln( ' 4. Печать' );
Writeln( ' 5. Конфеты от 100 до 200 рублей' );
Write( ' Выбран пункт:');
end; { Menu }

procedure Open( var fH: TSweetFile );
{ Открываем файл }
var
fName: string; { имя файла }
begin
{ если открыт, закроем }
if IsOpen then begin
Close( fH );
IsOpen := false;
end;

write('Имя файла:');
readln(fName);

{$I-}
Assign(fH, fName);
Reset(fH);
{$I+}
if ((IOResult <> 0) or (fName = '')) then
Writeln('Файл не существует')
else
begin
IsOpen := true;
Writeln('Файл успешно открыт');
end;
readln;
end; { Open }


procedure FileToArray(var fH: TSweetFile; var trade: TTrade; cond: integer);
{ загрузка из файла в массив }
var
sw: TSweet;
begin
if not (IsOpen) then
begin
writeln('Файл не открыт');
exit;
end;

trade.lines := 0;
seek(fH, 0);
while not( eof( fH ) ) and (trade.lines<TotalSweets) do begin
read( fH, sw );
if (cond=0) or (cond>0) and (sw.price>=100) and (sw.price<=200) then
begin
trade.lines:= trade.lines+1;
trade.shops[trade.lines] := sw;
end; { if }
end; { while not eof() }
if not( eof( fH ) ) then
writeln('Файл слишком велик, печатаем первые ',TotalSweets, ' записей');
end; { FileToArray }


procedure Print( trade: TTrade );
var
sw: TSweet;
i: integer;
j: integer;
PrintedShop: boolean; { для печати }
begin
writeln( '-------------------------------------------------------' );
writeln( 'Номер Название Цена Срок Магазины' );
writeln( '-------------------------------------------------------' );

with trade do begin
for i:= 1 to lines do begin
PrintedShop := false; { ни один магазин не отпечатан }
write( i:3, ' ', shops[i].name, ' ':20-length(shops[i].name),
shops[i].price:3, ' ', shops[i].time:3 );

for j:= 1 to TotalShops do
if (shops[i].sh[j]=1) then begin
if PrintedShop then
write(',')
else
write(' ');
PrintedShop := true;
write(j);
end;
writeln;

if i mod 10 = 0 then readln; { выдача порциями по 10 }
end; { for i }
end; { with }
readln;
end; { Print }

procedure SayGoodBye;
begin
writeln( 'Удачи!' );
readln;
end; { SayGoodBye }

begin { Main }
iChoice := 0;
IsOpen := false;
while true do begin
Menu;
Readln( iChoice );

case iChoice of
0: begin
if IsOpen then
Close( fH );
SayGoodBye;
exit
end;
1: Create( fH ); { Создание файла }
2: Open( fH ); { Открытие файла }
3: InsertOrUpdate( fH ); { Ввод данных }
4: begin
FileToArray( fH, trade, 0 );
Print( trade ); { Вывод данных }
end;
5: begin
FileToArray( fH, trade, 1 );
Print( trade); { Вывод данных по условию}
end;
end; { case }
end; { while }
end.
Форма ответа