Помогите пожалуйста

Рая

New member
13.05.2015
2
0
#1
Дана задача.Написана программа.Правильно ли?(язык турбо паскаль)

Для группы товаров на складе указаны: наименование, тип товара, срок реализации, цена и количество. Требуется составить отчет по форме: напечатать наименование товара, которого на складе меньше всего, напечатать наименование товаров с истекшим сроком годности, вывести на экран общую стоимость товаров на складе.
Указание: чтобы определить товары с истекшим сроком годности, нужно в начале работы программы запросить текущую дату и номер месяца и, если номер месяца больше указанного в информации о сроке реализации товара или при совпадении номеров месяца текущая дата больше, чем указанная для товара, то товар считается негодным.
Код:
program;
 
const M=7;
 
type
 
Node=record
 
name, tipe: String;
 
month, date, value, amount : Integer;
 
end;
 
var month, date, i, summ, lowest : Integer;
 
nodes : array[1..M] of Node;
 
procedure setnode(id, mo, da, va, am:Integer; na, ty:String);
 
begin
 
nodes[id].name := na;
 
nodes[id].tipe := ty;
 
nodes[id].month := mo;
 
nodes[id].date := da;
 
nodes[id].value := va;
 
nodes[id].amount := am;
 
end;
 
procedure fillnodes;
 
begin
 
setnode(1,12,10,100,90,'9bloko','frykt');
 
setnode(2,11,11,30,15,'grycha','frykt');
 
setnode(3,10,12,50,5,'velosiped','sport inventar');
 
setnode(4,9,13,2,8,'polirol','rashodnik');
 
setnode(5,8,14,80,3,'kot','domachnee jivotnoe');
 
setnode(6,7,15,5,222,'porox','rashodnik');
 
setnode(7,6,16,16,25,'chtepsel','kover');
 
end;
 
begin
 
writeln('Vvedite tekychyu daty i vrem9:');
 
read(date);
 
readln(month);
 
fillnodes();
 
summ := 0;
 
lowest := 1;
 
for i:=1 to M do
 
begin
 
summ := summ + nodes.value*nodes.amount;
 
if (nodes.month < month) or ((nodes.month=month) and (nodes.date<date)) then
 
writeln('tovar obvetchal i ne mojet byt prodan: ', nodes.name);
 
if nodes.amount<nodes[lowest].amount then
 
lowest := i;
 
end;
 
writeln('summa stoimosti tovarov: ', summ);
 
writeln('ostalos minimalnoe kolichestvo: ', nodes[lowest].name);
 
readln;
 
end.
 
Последнее редактирование модератором:
R

rrrFer

#2
Что значит "правильно ли"? - вы написали программу, но не знаете как проверить?
 
R

rrrFer

#4
Ну например, если на складе нет товаров, то программа сломается при выводе минимального (nodes[lowest].name).
По алгоритму тут больше смотреть не на что, можно посмотреть на защиту от дурака, например, что будет если юзер введт некорректную дату?