Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 05.06.2020, 13:31   #1
Екатерина_________
Новичок
Джуниор
 
Регистрация: 20.02.2020
Сообщений: 5
Восклицание Объясните программу. За что отвечает каждая команда?

Код:
Type
spis=^spis1;
spis1=record
number :integer ;//номер склада
cod: integer;//код товара
title: string[50];//наименование товара

shelflife:integer ;//срок хранения в днях

count: integer;// количество единиц товара
price: integer;//цена за единицу товара
adr: spis;
end;
Var
v,vvs:string; sp: spis; a, c, vibr, vvi:integer;
st4:spis1;
Const
st1:spis1=(number:1;cod:12;title:'кефир';shelflife:3;count:2;price:120;adr:nil);
st2:spis1=(number:2;cod:13;title:'молоко';shelflife:3;count:3;price:131;adr:nil);
st3:spis1=(number:3;cod:14;title:'творог';shelflife:10;count:4;price:206;adr:nil);

Procedure OUT(st: spis1);
Begin
  writeln(st.number:3,st.cod:7,st.title:9,st.shelflife:6,st.count:4,st.price:4);
end;

Procedure Poisk(s:spis;dfam:string);// должен быть поиск по названию
Var cursor:spis; i:integer;
Begin
  cursor:=S;
  For i:= 1 to 3 do
  begin
  if cursor^.title=dfam then
  out(cursor^);  
  cursor:=cursor^.adr;
  end;
end;

Procedure dop(Var S:spis;dat:spis1);
Var nw, cursor, pred: spis; key:integer;
Begin
  cursor:=S;
  pred:=nil;
  key:=dat.cod;
  New(nw);
  Nw^:=dat;
  while (cursor<>nil)and(cursor^.cod<key) do //пока очередь не пуста-мы движемся вдоль очереди и cursor^.code<key
  begin
    pred:=cursor;
    cursor:=cursor^.adr
  end;
  Nw^.adr:=cursor;
  if pred=nil then s:=nw
  else pred^.adr:=nw
end;

Procedure UD(var S: spis; dnz: integer);{Удаление из списка записи с заданным значением ключа}
var cursor, pred:spis;
Begin
  cursor:=S; pred:= nil;
  while (cursor<>nil)and(cursor^.cod<>dnz) do
  begin
    pred:=cursor;
    cursor:=cursor^.adr
  end;
  if cursor=nil then
  begin
    exit
  end;
  if pred= nil then
  begin
    S:=cursor^.adr
  end
  else
  begin
    pred^.adr:=cursor^.adr
  end;
  Dispose(cursor);
end;

Procedure DEL(Var S:spis); 
Var cursor, pred: spis;
Begin
  cursor:=S; pred:=nil;
  while cursor<>nil do 
  begin
    pred:= cursor; 
    cursor:=cursor^.adr;
    dispose(pred)
  end;
  S:=nil
end;

Procedure OUT1(s:spis);
Var cursor:spis;
Begin
  cursor:=s;
  while cursor<>nil do begin 
    out(cursor^);
    cursor:=cursor^.adr
  end;
end;

Begin
  writeln('Список:');
  dop(sp,st1);
  dop(sp,st2);
  dop(sp,st3);
  OUT1(sp);
  writeln('Введите название товара');
  readln(v);
  poisk(sp,v);
  writeln('Какое действие необходимо выполнить?');
  writeln('1.Удалить элемент из списка');
  writeln('2.Добавить элемент в список');
  writeln('3.Очистить список');
  readln(vibr);
  case vibr of 
  1: begin
      writeln('Введите код удаляемого товара');
      readln(c);
      ud(sp,c);
      OUT1(sp);
  end;
  2: begin
    writeln('Введите номер склада');
    readln(vvi);
    st4.number:=vvi;
    writeln('Введите код товара');
    readln(vvs);
    st4.cod:=vvi;
    writeln('Введите наименование товара');
    readln(vvs);
    st4.title:=vvs;
    writeln('Введите срок хранения в днях');
    readln(vvs);
    st4.shelflife:=vvi;
    writeln('Введите количество единиц товара');
    readln(vvi);
    st4.count:=vvi;
    writeln('цена за единицу товара');
    readln(vvi);
    st4.price:=vvi;
    
    dop(sp,st4);
    OUT1(sp);
  end;
  3: begin  del(sp);
  if sp=nil then writeln('Список пуст') else writeln ('Список не пуст');
  end;
  end;
end.
Екатерина_________ вне форума Ответить с цитированием
Старый 05.06.2020, 14:36   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 14,916
По умолчанию

Цитата:
Сообщение от Екатерина_________ Посмотреть сообщение
За что отвечает каждая команда?
А ничего, что у вас в коде будет пару сотен строк? И сразу кинулись объяснять, что каждая строка делает. Не понимаю таких авторов, вы с головой дружите, когда подобные темы создаете? Хотите получить подробный ответ - во Фриланс.
Arigato вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объясните программу. За что отвечает каждая команда? Екатерина_________ Паскаль, Turbo Pascal, PascalABC.NET 3 21.02.2020 14:31
Демонстрация фрактальной графики. Поле из одуванчиков. Напишите пожалуйста что выполняет каждая строчка и за что отвечает Viksa123 Паскаль, Turbo Pascal, PascalABC.NET 5 08.03.2015 10:47
Команда System: запуск программы в свёрнутом режиме, Не работает команда /min Me777 Общие вопросы C/C++ 0 12.07.2011 10:49
Объясните, что значит каждая строка в программе *natali* Помощь студентам 5 07.11.2009 15:17
Напишите пожалуйста за что отвечает каждая строчка Saaashka Помощь студентам 1 02.07.2008 07:34


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840