Дано файл 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;
{------------цыкл для того что бы узнать наибольшую цену------------------} for i:=1 to n do Begin if (price < info[i].price) then Begin price:=info[i].price; max:=i; end; end;
А ты до конца ту тему дочитал? Там же в последнем посте что написано?
Цитата
Как и обещал теперь прога читает файл с данными
Димас
13.03.2007 1:54
Цитата(volvo)
А ты до конца ту тему дочитал? Там же в последнем посте что написано?
разумеется брал азимут на пост в той теме: Jahnerus 18.11.2004 17:15 Сообщение #7
но не разобрался:(
Алена
13.03.2007 2:15
Тогда, если ты хочешь делать примерно такой файл, как описал в первом посте - то тебе пригодится вот эта тема: Заполнение полей записи из файла
Использовать то, что там написано - так: читаешь строку из файла, разбиваешь на составляющие (строки/числа), и заносишь данные в СВОЮ структуру... Для твоего случая это может выглядеть примерно так:
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;
Посидел я пасатрел и понял что для меня это будет сложно...
решил написать по своему....
Итак написал две проги. Первая - записывает в типизированый файл данные, вторая считывает эти данные и считает наибольшую цену...
вот исходник первой проги:
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;
{-----------Цыкл для вывода с массива уже введенных данных-----------------} 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;
{-----------Цыкл для вывода с массива данных которые были прочитаны из файла-----------------} 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);
-------------------------------------------------------------------------------------------------------------------------------------- Но меня интересует такой вопрос :
Почему структура файла такова????(как на скриншоте который я выложил ниже)
Что это за система...м?
Артемий
15.03.2007 1:26
Прости, но скриншот не работает..
Добавлено через 5 мин. Но я примерно догадался.. При записи record в текст. файл так будет всегда..Это тебе не text! и при считывании record будет все это хватать! Надеюсь понятно?
Димас
15.03.2007 1:44
Ссылку на скриншот поправил:)
Не ну я походу дела заметил что оно его как то не так сохранило в файл...
прото так для себя хотел узнать, как оно его в файл криптует?
ладно спасибо!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.