Консультация № 168672
01.06.2009, 12:32
0.00 руб.
0 3 0
Сформировать файл f1, содержащий названия игрушек, цену, возраст детей, для которых они предназначены. Добавить из файла f2 аналогичные данные. Из общего списка выбрать наименование игрушек с ценой не выше 1000 рублей.

Помогите пожалуйста дорогие эксперты.. от этого зависит моя оценка по экзамену.. буду премного благодарен.. за ранее спасибо)

Обсуждение

Неизвестный
01.06.2009, 13:24
общий
не совсем понятно:
Var
toys : TToys; { список игрушек для обработки }
f1 : file of TToyFile; { первый файл для обработки }
f2 : file of TToyFile; { второй файл для обработки }
n : Word;

в месте f1 : file of TToyFile; выдает error 24 .. что делать?
Неизвестный
01.06.2009, 16:13
общий
Цитата: error 24
Компонентами файла не могут быть файлы.

Файловые переменные f1 и f2 определены как типизированные файлы. Тип компонент этих файлов - TToyFile. Этот тип уже описан как типизированный файл. То есть автор программы пытается создать файл файлов.
Попробуйте вместо кода
Код:
f1 : file of TToyFile; { первый файл для обработки }
f2 : file of TToyFile; { второй файл для обработки }

поставить
Код:
f1 : TToyFile; { первый файл для обработки }
f2: TToyFile; { второй файл для обработки }


Так же в программе есть другие ошибки. Исправленный код:
Код:
Program ToysProg;

Const
cMaxToy = 1000; { Максимальное число игрушек }
cMaxCost = 1000; { Максимальная цена }

Type
{ Информация об одной игрушке }
TToy = record
name : string;
cost : Word;
age : Byte;
end;
{Список игрушек}
TToys = array [1..cMaxToy] of TToy;
{ Файл с информацией по игрушкам}
TToyFile = file of TToy;

Var
toys : TToys; { список игрушек для обработки }
f1 : TToyFile; { первый файл для обработки }
f2 : TToyFile; { второй файл для обработки }
n, i : Word;

Procedure LoadToys (var f : TToyFile);
{ Процедура загрузки информации об игрушках из файла }
begin
while not eof (f) do
begin
n := n + 1;
read (f, toys [n]);
end;
end;

Begin
Assign (f1, ParamStr (1)); Reset (f1); { Открыть первый файл для считывания }
Assign (f2, ParamStr (2)); Reset (f2); { Открыть второй файл для считывания }
LoadToys (f1); { Загрузить список игрушек из первого файла }
LoadToys (f2); { Загрузить список игрушек из второго файла }
Close (f1);
Close (f2);

{ Отобразить список игрушек с ценой не более заданной }
for i := 1 to n do
if Toys[i].cost <= cMaxCost then writeln (Toys[i].name);

End.


Вот программа для создания файлов содержащих информацию об игрушках.
Код:
type
TToy = record
name : string;
cost : Word;
age : Byte;
end;

var
f: file of Ttoy;
i, n: integer;
filename: string;
toy: ttoy;

begin
Write('Имя файла: ');
ReadLn(filename);
Assign(f, filename);
Rewrite(f);
Write('n: ');
ReadLn(n);
for i := 1 to n do
begin
Write('name: ');
ReadLn(toy.name);
Write('cost: ');
ReadLn(toy.cost);
Write('age: ');
Readln(toy.age);
write(f, toy);
end;
Close(f);
end.


Первую программу надо запускать с параметрами. Первый параметр - имя первого файла с игрушками, второй - имя второго файла.
Удачи!!!
давно
Старший Модератор
31795
6196
01.06.2009, 21:41
общий
Иванов Виктор Олегович:
Какая у Вас среда разработки?
При том количестве ошибок, которое есть в ответе, до Вашей ещё пара штук должно появится.
Вносили ли Вы изменнения в ответ при компиляции.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа