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

Тема в разделе "Pascal and Delphi", создана пользователем Рая, 13 май 2015.

  1. Рая

    Рая New Member

    Регистрация:
    13 май 2015
    Сообщения:
    2
    Симпатии:
    0
    Дана задача.Написана программа.Правильно ли?(язык турбо паскаль)

    Для группы товаров на складе указаны: наименование, тип товара, срок реализации, цена и количество. Требуется составить отчет по форме: напечатать наименование товара, которого на складе меньше всего, напечатать наименование товаров с истекшим сроком годности, вывести на экран общую стоимость товаров на складе.
    Указание: чтобы определить товары с истекшим сроком годности, нужно в начале работы программы запросить текущую дату и номер месяца и, если номер месяца больше указанного в информации о сроке реализации товара или при совпадении номеров месяца текущая дата больше, чем указанная для товара, то товар считается негодным.
    Код (Delphi):
    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.
     
    #1 Рая, 13 май 2015
    Последнее редактирование модератором: 14 май 2015
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Что значит "правильно ли"? - вы написали программу, но не знаете как проверить?
     
  3. Рая

    Рая New Member

    Регистрация:
    13 май 2015
    Сообщения:
    2
    Симпатии:
    0
    Знаю.Она запускается, но все равно ведь могут быть косяки.
     
  4. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Ну например, если на складе нет товаров, то программа сломается при выводе минимального (nodes[lowest].name).
    По алгоритму тут больше смотреть не на что, можно посмотреть на защиту от дурака, например, что будет если юзер введт некорректную дату?
     
Загрузка...
Похожие Темы - Помогите пожалуйста
  1. limbra
    Ответов:
    3
    Просмотров:
    69
  2. uxbmw3w
    Ответов:
    0
    Просмотров:
    90
  3. GREED
    Ответов:
    1
    Просмотров:
    547
  4. sonia2000
    Ответов:
    0
    Просмотров:
    965
  5. victory
    Ответов:
    0
    Просмотров:
    966

Поделиться этой страницей