![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
-гость- |
![]()
Сообщение
#1
|
Гость ![]() |
Помогите доделать задачку!
Не могу обойтись без дополнительно массива, он в тексте программы красным! Надо сражу записывать в файл, обходя этот массив, кто сможет помогите с данной проблемкой! Задание: Подготовить список из N наименований товаров. Конкретное значение N указано в варианте. Информация о каждом товаре содержит: 1) Название товара. 2) Цену. 3) Год выпуска. 4) Количество. Список должен быть упорядочен по одному из параметров, указанных в конкретном варианте. Сведения по каждому товару необходимо представить в виде записи. Разработать программу, которая заносит во внешний файл записи упорядоченного списка, и программу, которая добавляет в сформированный внешний файл данные об М товарах, при этом, не нарушая упорядоченности исходного файла. Если среди добавляемых товаров встречается товар, сведения о котором в файле уже есть, то необходимо их обновить, т. е. старую запись исключить. Вариант №5. Товары упорядочены по невозрастанию года выпу¬ска, N=7, M=3 Текст программы: Код Uses Crt; Const n = 7; m = 3; Type t = record {tovar} name: String; {nazvanie} c, {cena} y, {god vipuska} k: Word {kol-vo} end; Var p: Array [1..n+m] of t; { <--- *** Здесь был красный цвет *** } e: t; i,j,k,w: Byte; f: File of t; Procedure Vvod(var m: t); begin with m do begin Write('Najvanie: '); ReadLn(name); Write('Cena: '); ReadLn©; Write('Gop vipuska: '); ReadLn(y); Write('Koli4estvo: '); ReadLn(k) end; WriteLn end;Procedure Vivod; begin WriteLn('Nazvanie:':15, 'Cena:':6, 'God:':6, 'Kol-vo:':8); for i:=1 to w do with p[i] do begin Write(name:15); Write(c:6); Write(y:6); WriteLn(k:8) end; end;Procedure Save; begin ReWrite(f); for i:=1 to n do Write(f,p[i]); Close(f) end;Begin w:=n; ClrScr; WriteLn('Vvod informacii o ', n, ' tovarah.'); WriteLn; for i:=1 to n do begin WriteLn('Vvod informacii o ', i, '-m tovare.'); Vvod(p[i]) end; WriteLn('Najmite ENTER, chtobi otsortirovat'' tovari po nevozrastaniyu ','goda vipuska i zanesti ih spisok v fail "fail.dat".'); ReadLn; for i:=n-1 downto 1 do for j:=1 to I do if p[j].y < p[j+1].y then begin e:=p[j]; p[j]:=p[j+1]; p[j+1]:=e end; Assign(f,'fail.dat'); Save; WriteLn('V fail byl zapisan sleduyuschiy spisok:'); Vivod; WriteLn; WriteLn('Nujno dobavit'' dannie po ', m, '-m tovaram. Najmite ENTER.'); ReadLn; for i:=1 to m do begin WriteLn('Vvod informacii o ', i, '-m tovare.'); Vvod(e); j:=1; while j <= w do begin if p[j].name = e.name then begin p[j]:=e; break end; Inc(j) end; if j = w+1 then begin j:=1; while (j <= w)and(p[j].y > e.y) do Inc(j); Inc(w); for k:=w downto j+1 do p[k]:=p[k-1]; p[j]:=e end end; Save; WriteLn('Dannie byli uspeshno zaneseny v spisok, ne narushaya uporyado', 'chennosti, i sohraneny v fail "fail.dat".'); WriteLn; Vivod; ReadLn End. Сообщение отредактировано: volvo - 15.09.2006 13:24 |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата Не могу обойтись без дополнительно массива, он в тексте программы красным! Надо сражу записывать в файл, обходя этот массив, кто сможет помогите с данной проблемкой! Обойтись-то, конечно, можно, только вот к чему это? Смысл в чем? Запутаться? Без проблем. Представь себе, что если сортировка массива выглядит так:for i:=n-1 downto 1 do, то сортировка напрямую в файле будет выглядеть вот так: for i:=n-1 downto 1 doРазницу чувствуешь? Это только начало. Когда придется вставлять записи в определенное место файла, будет еще веселее... Ты все еще хочешь изменить программу? ![]() |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 2:24 |