Дано файл Assort , содержащий свединья об игрушках: указывается название игрушки, ее стоимость в рублях и возрастные границы(например, игрушка может предназаначатся для детей от двух до пяти лет) Определить: б.) Стоимость самого дорогого конструктора
тут вообще то удобней бы было использовать БД а не файл, хотя мы этого ещё не учили. & предположения такие(мысли в слух):
так я вижу структуру:
*************************************** *********** * ID * Название игрушки * Цена р * Возраст. категория * *************************************** *********** * 1 * Конструктор Lego * 100 * 2-5 * ......................................................................................... и т.д
предпологаю сделать так (если так возможно):
загнать всё это в двухмерный массив(или в одномерный но с record'дами) и как то записать в файл... потом считывать с файла и в цыкле по "Цене" вывести на Дисплей самый догогой продукт!
по дргуму пока ни вижу(глаза закрыты ещё)
---- обясните как это сделать или как по другому поступить ?
ну хоть убей не могу разобратся в чужом коде по ссылке volvo
непойму как происходит процедура считывания с файла... а что бы понять как оно считывается надо знать как оно туда записывается..
общем так написал эту задачу для начала без файла:
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:=1to n doBeginif (price < info[i].price)
thenBegin
price:=info[i].price;
max:=i;
end;
end;
{----------------end--------------}
writeln(info[max].title,' ',info[max].price);
readkey;
end.
Эх
volvo
13.03.2007 1:40
А ты до конца ту тему дочитал? Там же в последнем посте что написано?
Цитата
Как и обещал теперь прога читает файл с данными
Димас
13.03.2007 1:54
Цитата(volvo)
А ты до конца ту тему дочитал? Там же в последнем посте что написано?
разумеется брал азимут на пост в той теме: Jahnerus 18.11.2004 17:15 Сообщение #7
но не разобрался:(
Алена
13.03.2007 2:15
Тогда, если ты хочешь делать примерно такой файл, как описал в первом посте - то тебе пригодится вот эта тема: Заполнение полей записи из файла
Использовать то, что там написано - так: читаешь строку из файла, разбиваешь на составляющие (строки/числа), и заносишь данные в СВОЮ структуру... Для твоего случая это может выглядеть примерно так:
i := 1;
whilenot eof(f) dobegin
readln(f, s);
with info[i] dobegin
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;
Посидел я пасатрел и понял что для меня это будет сложно...
решил написать по своему....
Итак написал две проги. Первая - записывает в типизированый файл данные, вторая считывает эти данные и считает наибольшую цену...
вот исходник первой проги:
Program Z1280b;
uses crt;
const n = 5;
type
Assort = record
title : string; {Hазвание}
price : integer; {Цена}
age1,age2 : integer; {Возрастные границы}end;
var
f: fileof 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:=1to n dobegin
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:=1to n dobegin
write(f,mass[i]);
end;
close(f);
{______________________________________________________}{-----------Цыкл для вывода с массива уже введенных данных-----------------}for i:=1to n dobegin
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: fileof 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:=1to n dobegin
read(f,mass[i]);
end;
close(f);
{______________________________________________________}{-----------Цыкл для вывода с массива данных которые были прочитаны из файла-----------------}
textcolor(2);
writeln('Ниже таблица отображения всех данных с файла:');
Writeln('*************************************************************************');
textcolor(7);
textcolor(4); writeln('id | Название | цена | Возрастыне границы |');
textcolor(2);
Writeln('*************************************************************************');
textcolor(7);
{------------------------цыкл для вывода на дисплей всех данных-----------------------------}for i:=1to n dobegin
writeln(' ',i,' | ',mass[i].title,' | ',mass[i].price,' | ',mass[i].age1,' - ',mass[i].age2,' |');
textcolor(2);
writeln('____________________________________________________________');
textcolor(7);
end;
{------------------------------------------------------------------------------}{Цыкл для вичисления самой дорогой игрушки}for i:=1to n doBeginif (price < mass[i].price) thenBegin
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.
вот м всё
-------------------------------------------------------------------------------------------------------------------------------------- Но меня интересует такой вопрос :
Почему структура файла такова????(как на скриншоте который я выложил ниже)
Что это за система...м?
Артемий
15.03.2007 1:26
Прости, но скриншот не работает..
Добавлено через 5 мин. Но я примерно догадался.. При записи record в текст. файл так будет всегда..Это тебе не text! и при считывании record будет все это хватать! Надеюсь понятно?
Димас
15.03.2007 1:44
Ссылку на скриншот поправил:)
Не ну я походу дела заметил что оно его как то не так сохранило в файл...
прото так для себя хотел узнать, как оно его в файл криптует?
ладно спасибо!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.