Помощь - Поиск - Пользователи - Календарь
Полная версия: задача с текстовым файлом *
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Димас
вот ещё одну задачу никак осилить не могу wacko.gif

Дано файл Assort , содержащий свединья об игрушках: указывается название игрушки, ее стоимость в рублях и возрастные границы(например, игрушка может предназаначатся для детей от двух до пяти лет)
Определить:
б.) Стоимость самого дорогого конструктора


тут вообще то удобней бы было использовать БД а не файл, хотя мы этого ещё не учили.
&
предположения такие(мысли в слух):

так я вижу структуру:

*************************************** ***********
* ID * Название игрушки * Цена р * Возраст. категория *
*************************************** ***********
* 1 * Конструктор Lego * 100 * 2-5 *
......................................................................................... и т.д

предпологаю сделать так (если так возможно):

загнать всё это в двухмерный массив(или в одномерный но с record'дами) и как то записать в файл... потом считывать с файла и в цыкле по "Цене"
вывести на Дисплей самый догогой продукт!

по дргуму пока ни вижу(глаза закрыты ещё) blink.gif

----
обясните как это сделать или как по другому поступить ? smile.gif
volvo
Цитата
обясните как это сделать
Поиск - выдает вот эту тему: Расчётная работа. Помогите

Посмотри, как сделано там...
Димас
лады сейчас попытаюсь написать smile.gif
Димас
ну хоть убей не могу разобратся в чужом коде по ссылке volvo wacko.gif


непойму как происходит процедура считывания с файла...
а что бы понять как оно считывается надо знать как оно туда записывается..

общем так написал эту задачу для начала без файла:

Program z1280b;

uses crt;

const n = 2; {количесво}

{-----------Запись------------}
type
Assort = record
title: string[20];{название}
price: integer;{Цена}
age1,age2: integer;{Возраст}
end;
{-----------end----------------}

var
info: array[1 .. n] of Assort;
f:text;
i,price,max:integer;
Begin
ClrScr;


{Вместо этого занесения в масив, мне надо что бы оно считывало с файла и присвоивало, НО КАК ??? }
info[1].title:='traktor';
info[1].price:=50;
info[1].age1:=7;
info[1].age2:=12;
info[2].title:='Lego';
info[2].price:=77;
info[1].age1:=4;
info[1].age2:=7;



{-------------from file----------------}
{ assign(f,'data.txt'); {file}
reset(f); }
{----------------end-------------------}
{0}
price:=0;
max:=0;

{------------цыкл для того что бы узнать наибольшую цену------------------}
for i:=1 to n do
Begin
if (price < info[i].price)
then
Begin
price:=info[i].price;
max:=i;
end;
end;

{----------------end--------------}

writeln(info[max].title,' ',info[max].price);
readkey;
end.


Эх blink.gif
volvo
А ты до конца ту тему дочитал? Там же в последнем посте что написано?
Цитата
Как и обещал теперь прога читает файл с данными
Димас
Цитата(volvo)
А ты до конца ту тему дочитал? Там же в последнем посте что написано?


разумеется брал азимут на пост в той теме: Jahnerus 18.11.2004 17:15 Сообщение #7

но не разобрался:(
Алена
Тогда, если ты хочешь делать примерно такой файл, как описал в первом посте - то тебе пригодится вот эта тема: Заполнение полей записи из файла

Использовать то, что там написано - так: читаешь строку из файла, разбиваешь на составляющие (строки/числа), и заносишь данные в СВОЮ структуру... Для твоего случая это может выглядеть примерно так:

i := 1;
while not eof(f) do begin
readln(f, s);
with info[i] do begin
title := get_str(s, 1); { название }
price := StrInt(get_str(s, 2)); { цена }
age1 := StrInt(get_str(s, 3));
age2 := StrInt(get_str(s, 4)); { возраст }
end;
inc(i);
end;


при структуре файла:
  1:Конструктор Lego    :100:  2:  5
2:Другой конструктор :150: 4: 7
и т.д.
Димас
Посидел я пасатрел и понял что для меня это будет сложно...

решил написать по своему....

Итак написал две проги. Первая - записывает в типизированый файл данные, вторая считывает эти данные
и считает наибольшую цену...


вот исходник первой проги:

 
Program Z1280b;

uses crt;

const n = 5;

type
Assort = record
title : string; {Hазвание}
price : integer; {Цена}
age1,age2 : integer; {Возрастные границы}
end;

var
f: file of Assort;

mass:array[1..n] of Assort;

i:integer;

{---------------main program----------------}
Begin
Clrscr;
textcolor(4);
writeln(' ____________________________________________________________');
textcolor(7);
writeln('Програма для ввода данных в массив и запись в файл data.txt ');
textcolor(4);
writeln(' ____________________________________________________________');

textcolor(7);
{---Ввод данных в массив---}
for i:=1 to n do
begin
writeln('Введите название игрушки, для id=',i);
readln(mass[i].title);

writeln('Введите цену игрушки, для id=',i);
readln(mass[i].price);

writeln('Введите первую возрастную границу игрушки, для id=',i);
readln(mass[i].age1);

writeln('Введите вторую возрастную границу игрушки, для id=',i);
readln(mass[i].age2);
textcolor(4);
writeln(' ____________________________________________________________');
textcolor(7);
end;
{------------------------}

{________________Действия с файлом____________________}
assign(f,'data.txt');

rewrite(f);

{Цыкл записи с массива в типизированый файл}
for i:=1 to n do
begin
write(f,mass[i]);
end;

close(f);
{______________________________________________________}

{-----------Цыкл для вывода с массива уже введенных данных-----------------}
for i:=1 to n do
begin
writeln(mass[i].title,' ',mass[i].price,' ',mass[i].age1,'-',mass[i].age2);
textcolor(2);
writeln(' ____________________________________________________________');
textcolor(7);
end;
{------------------------}

writeln('press key');
readkey;
end.



а это вторая:
 
Program Z1280b;

uses crt;

const n = 5;

type
Assort = record
title : string; {Hазвание}
price : integer; {Цена}
age1,age2 : integer; {Возрастные границы}
end;

var
f: file of Assort;

mass:array[1..n] of Assort;

i,max,price:integer;

{---------------main program----------------}
Begin
Clrscr;
textcolor(4);
writeln(' ____________________________________________________________');
textcolor(7);
writeln('Програма для чтения данных из файла data.txt и вывод на дисплей:');
writeln('Название,цену,возрастные границы - Самой дорогой игрушки!');
textcolor(4);
writeln(' ____________________________________________________________');

textcolor(7);

{________________Действия с файлом____________________}
assign(f,'data.txt');

reset(f);

{Цыкл чтения из типизированого файла и занесения данных в массив}
for i:=1 to n do
begin
read(f,mass[i]);
end;

close(f);
{______________________________________________________}

{-----------Цыкл для вывода с массива данных которые были прочитаны из файла-----------------}
textcolor(2);
writeln('Ниже таблица отображения всех данных с файла:');
Writeln('*************************************************************************');
textcolor(7);
textcolor(4); writeln('id | Название | цена | Возрастыне границы |');
textcolor(2);
Writeln('*************************************************************************');
textcolor(7);
{------------------------цыкл для вывода на дисплей всех данных-----------------------------}
for i:=1 to n do
begin
writeln(' ',i,' | ',mass[i].title,' | ',mass[i].price,' | ',mass[i].age1,' - ',mass[i].age2,' |');
textcolor(2);
writeln('____________________________________________________________');
textcolor(7);
end;
{------------------------------------------------------------------------------}

{Цыкл для вичисления самой дорогой игрушки}
for i:=1 to n do
Begin
if (price < mass[i].price) then
Begin
price:=mass[i].price;
max:=i;
end;

end;
{-----------------------------------------}
textcolor(2);
writeln('Из них самый дорогой конструктор:');
textcolor(4);
writeln('-------------------------------------------------------------------------');
textcolor(7);

writeln(' ',max,' | ',mass[max].title,' | ',mass[max].price,' | ',mass[max].age1,' - ',mass[max].age2,' |');

textcolor(4);
writeln('-------------------------------------------------------------------------');

writeln('press key');
readkey;
end.



вот м всёsmile.gif

--------------------------------------------------------------------------------------------------------------------------------------
Но меня интересует такой вопрос blink.gif :

Почему структура файла такова????(как на скриншоте который я выложил ниже)
Изображение

Что это за система...м? mega_chok.gif
Артемий
Прости, но скриншот не работает..

Добавлено через 5 мин.
Но я примерно догадался.. smile.gif При записи record в текст. файл так будет всегда..Это тебе не text! smile.gif и при считывании record будет все это хватать! Надеюсь понятно? smile.gif blum.gif
Димас
Ссылку на скриншот поправил:)

Не ну я походу дела заметил что оно его как то не так сохранило в файл...

прото так для себя хотел узнать, как оно его в файл криптует?


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