Помощь - Поиск - Пользователи - Календарь
Полная версия: Массив записей
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Ученик
Условие
пусть даны 2 массива М1 и М2. М1 - инвентарный массив(сколько изделий, каких видов хранятся на складе). Вид продукции задаётся её порядковым номером. М2 - вспомогательный массив(на сколько уменьшилось или увеличилось количество изделий по некоторым видам продукции). Вспомогательный массив может содержать несколько сведений по продукции одного вида или не содержать такого сообщения. Обновить инвентарный массив на основе вспомогательного.
1. не пойму как это должно выглядеть
type vid=record
izdelie1:integer;
izdelie2:integer;
izdelie3:integer;
end;
var produkcia:array[1..10] of vid;

??? чото я не догоняю
2. "Вспомогательный массив может содержать несколько сведений по продукции одного вида"
как это сделать?
последняя лаба)
Archon
Было бы неплохо увидеть оригинальный текст задания, но я понял его так:
Первый массив хранит сколько товаров какого вида хранится на складе. Второй массив хранит сколько товара какого вида прибыло (убыло) на склад. Пояснительный код:
type
TItem = record
Article: Integer; { Тип изделия }
Count: Integer; { Колличество или изменение колличества }
end;

var
Depository: array[1..n] of TItem; { Склад }
Update: array[1..m] of TItem; { Изменения на складе }
Нужно основываясь на информации второго массива обновить первый.
Ученик
текст задания оригиналный - преподаватель дала списать из учебника.
за разъяснения спасибо.
Ученик
косолапо получилось
const
n=2;
m=3;
type
Item = record
tip:integer;
kolvo:integer;
end;
var
i,j:integer;
sklad:array[1..n] of item;
upd:array[1..m] of Item;
begin
writeln('sklad',' ',n,' tip - kolvo');
for i:=1 to n do readln(sklad[i].tip,sklad[i].kolvo);
for i:=1 to n do writeln('ITEM',sklad[i].tip,' - ',sklad[i].kolvo);
writeln('update',' ',m,' tip - kolvo');
for i:=1 to m do readln(upd[i].tip,upd[i].kolvo);
for i:=1 to m do writeln('ITEM',upd[i].tip,' - ',upd[i].kolvo);

for i:=1 to n do
for j:=1 to m do if upd[j].tip=sklad[i].tip then sklad[i].kolvo:=sklad[i].kolvo+upd[j].kolvo;

writeln('updated sklad');
for i:=1 to n do writeln('ITEM',sklad[i].tip,' - ',sklad[i].kolvo);
readln;
end.

подскажите как упростить/чо неправильно
Ученик

айа скажите чонить а то я спать не лягу
Archon
1. Расставить отступы. Программа сразу станет проще для восприятия.
2. Сделать диалог с пользователем чуть более осмысленным. Первая строчка, которую выводит программа это "sklad 2 tip - kolvo". Довольно сложно понять, что имеется ввиду.
3. "writeln('sklad',' ',n,' tip - kolvo');" - зачем пробел в отдельный параметр отделять?

PS Упрощать особо нечего
Ученик
ееее
мои благодарности
пойду спать
Lapp
Цитата(Ученик @ 13.01.2009 23:30) *
подскажите как упростить/чо неправильно

Есть одно замечание, но оно спорное..
Что, если в массиве Upd встретился новый товар, который еще не присутствует в массиве Sklad? По логике вещей, нужно добавить его в массив.
Если с этим согласиться, то массив Sklad не должен ьыть заполнен до отказа, а число n должно означать, сколько элементов в нем реально используется.

Еще, чисто для удобства отладки и использования, лучше считывать оба массива из файлов.

Добавлено через 4 мин.
Еще, будет удобно использвать оператор with:
for i:=1 to n do with Sklad[i] do
for j:=1 to m do if upd[j].tip=tip then kolvo:=kolvo+upd[j].kolvo;

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