Помощь - Поиск - Пользователи - Календарь
Полная версия: С текстового в типизированный
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Feiqin
Вот у меня есть задача сделанная через текстовый файл, но мне ёё надо сделать для работы с типизированным файлом, и переделать у меня не получается если не трудно накидайте хотябы сам код считывания с типизированного файла. Вот сама задача: Дан файл Assort, содержащий сведения об игрушках: указывается название игрушки, её стоимость в рублях и возрастные границы (например игрушка может предназначаться для детей от 2 до 5 лет)
а)Получить название игрушек, цена которых не превышает 140 руб и которые подходят детям 5 лет б)определить стоимость свмого дорогого конструктора в)напечатать название наиболее дорогих игрушек (цена которых отличается от цены самой дорогой игрушки не более чем на 50 рублей) г)получить названия игрушек, которые подходят детям как четырех так и десяти лет.

type
aaa = record
naz: string[30];
cena: real;
age_1,age_2: byte;
end;
var
maxp,max,max2:real;
v:byte;
i,n:byte;
mas: array[1 .. 255] of aaa;
s:string;
f:text;
z:integer;
begin
assign(f,'c:\data.txt');
reset(f);
maxp:=0; max:=0;
repeat
n:=n+1;
i:=i+1;
readln(f,mas[i].naz);
readln(f,s);
val(s,mas[i].cena,z);
if mas[i].cena>maxp then maxp:=mas[i].cena; //samaya dorogaya igrushka
readln(f,s);
val(s,mas[i].age_1,z);
readln(f,s);
val(s,mas[i].age_2,z);
until eof(f);
close(f);
writeln('-----------------------------------');
writeln('cena<140 i po vozrastu=5');
writeln('NaZvaNiE : ');
for i:=1 to n do begin
if (mas[i].cena<140)and(mas[i].age_1>5) then begin
writeln(mas[i].naz);
end;
end;
writeln('-----------------------------------');
for i:=1 to n do
begin
if (mas[i].naz='constructor') then
if mas[i].cena>max then max:=mas[i].cena;
end;

writeln('Samii dorogoy constructor: ',max:5:1);
writeln('-----------------------------------');
max2:=maxp-50;
writeln('Samie dorogie igrushki: ');
for i:=1 to n do
begin
if mas[i].cena>max2 then writeln(mas[i].naz);
end;
writeln('-----------------------------------');
writeln('Podhodyat detyam 4 i 10-ti let :');
for i:=1 to n do
begin
if (mas[i].age_1>=4)and(mas[i].age_2<=10) then writeln(mas[i].naz);
end;
writeln('-----------------------------------');
readln;
end.


Вид файла Assort:
constructor
91
4
10
parovoz
30
6
20
velosiped
110
10
99
constructor
95
9
20
kubik
10
1
10
myach
70
6
90
volvo
Вот решение очень похожей на твою задачи с типизированным файлом:
Расчётная работа. Помогите
vadim(b)
нет, нет. Я под типизированным файлом подразумевал файлы оприделенного типа file of byte, file of char и т.д. Но моя программа сделанна через обычный текстовый файл f:text; соответсвенно эту программу надо переделать так чтобы в место типа text был тип file of (тип). Извиняюсь за тупость :)
Алена
То есть, по ссылке, я так понимаю, ты не ходил... Ну, как знаешь... Надо тебе в первую очередь...

(ПЕРЕделывать на порядок сложнее, чем ДЕЛАТЬ...)
vadim(b)
вот тот отрывок программы по ССЫЛКЕ

var
i,n:byte;
maxp:real;
info: array[1 .. 255] of item;
s:string;

f:text; // МНЕ НАДО чтобы место этой строчки была f:file; !!!!

er:integer;

моя программа и так сделана на подобие этой.

 ! 
Во первый пользуйся тегами, во вторых мы за тебя очень рады, но к чему это сообщение ? Флуд в этом разделе карается очень строго.

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.