Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
МИНИСТЕРСТВО ТРАНСПОРТА РОССИЙСКОЙ ФЕДЕРАЦИИ (МИНТРАНС РОССИИ)
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ЖЕЛЕЗНОДОРОЖНОГО ТРАНСПОРТА (РОСЖЕЛДОР)
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ПУТЕЙ СООБЩЕНИЯ (СГУПС)
Кафедра “Информационные технологии транспорта”
ЛАБОРАТОРНАЯ РАБОТА №3_в
По дисциплине “Информатика и программирование”
Тема: «Забавный магазин» с использованием односвязных списков»
Выполнил |
Проверил |
|||
________________ подпись |
Студент гр. ПИ-111Денисова Е.И. |
________________ подпись |
Канд. техн. наук доцент Е.В. Редьков |
|
________________ дата |
________________ дата |
Новосибирск - 2008 г.
Разработать программу для имитации работы “забавного магазина”, обеспечив выполнение следующих операций:
1 Открытие магазина (очередь и стек - пусты)
2 Ввод имени покупателя с клавиатуры (имя добавляется в очередь)
3 Ввод названия товара с клавиатуры (товар добавляется в стек)
4 Продажа товара покупателю (товар извлекается из стека, а покупатель – из очереди), пара данных товар - покупатель выводятся на экран.
5 Закрытие на перерыв (данные стека и очереди сохраняются в файлах)
6 Открытие магазина после перерыва (стек и очередь восстановить из файлов)
6 Проверка наличия товара в стеке (поиск по названию)
7 Проверка наличия покупателя в очереди (поиск по имени)
8 Завершение работы программы.
Рекомендации:
Для хранения данных в стеке и очереди используйте односвязные списки.
Программа:
Program s1;
uses crt;
type
s3=string[7];
f=file of s3;
pz=^z;
z=record zs:s3;
next:pz;end;
var top_s:pz;top_o:pz;nm:integer;name:s3;tempf:pz;f_s,f_o:f;
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
{~~~~dobavit element v stek~~~~~}
Procedure adf_s1(var top:pz;name:s3);
var temp:pz;
begin temp:=top;
new(top);top^.next:=temp;top^.zs:=name
end;
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
{~~~~dobavit element v ochered~~~~~~~}
Procedure adl_s1(var top:pz;name:s3);
var temp:pz;
begin
if top=nil then
begin new(top);top^.next:=nil;top^.zs:=name
end
else begin temp:=top;while temp^.next<>nil do temp:=temp^.next;
new(temp^.next);
temp^.next^.zs:=name;temp^.next^.next:=nil;
end;
end;
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
{~~~~~~~~~~vivod na ikran~~~~~~~~~~}
Procedure s1_scr(top:pz);
var temp:pz;
begin write;
if top<>nil then
begin temp:=top;
while temp<>nil do
begin writeln(temp^.zs:4);temp:=temp^.next;
end;
end;
end;
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
{~~~~~~~~~ydalenie elementa iz steka~~~~~~~~~~~~}
Procedure del_first(var top:pz;var name:s3);
var temp:pz;
begin if top<>nil then
begin name:=top^.zs;write('tovar = ',name);readln;
temp:=top^.next;{sohranim adres 2-go elem}
dispose(top);{osvobodim pamit ot 1-go elem}
top:=temp;{2-i elem nazivaem pervim}
end;
end;
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
{~~~~~~~~~ydalenie elementa iz ocheredi~~~~~~~~~~}
Procedure del_last(var top:pz;var name:s3);
var temp:pz;temp1:pz;
begin if top<>nil then begin
temp:=top;temp1:=nil;
while temp^.next<>nil do begin
temp1:=temp;
temp:=temp^.next; end;
name:=temp^.zs;
write('name=',name);readln;
if temp1=nil then top:=nil
else temp1^.next:=nil;
dispose(temp);
end;
end;
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
{~~~~~~~~~~~~zapis v fail~~~~~~~~~~~}
Procedure s1_fil(name:string;top:pz;var f:f);
var temp:pz;
begin assign(F,name);rewrite(F);
if top<>nil then
begin temp:=top;
while temp<>nil do
begin write(F,temp^.zs);temp:=temp^.next;
end;
end;close(F);
end;
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
{~~~~~~~~prochitait iz faila~~~~~~~~}
Procedure fil_s1(name:string;var top:pz;var f:f);
var buf:s3;
begin assign(F,name);reset(F);
while not EOF(F) do
begin read(F,buf);adl_s1(top,buf);
end;close(F);
end;
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
{~~~~~~~~~~~~~~~poisk elementa~~~~~~~~~~~~~~~~~~}
Procedure find_s1(top:pz;var tempf:pz);
var namef:s3;w:byte;
begin write('Find name=');readln(namef);w:=1;
tempf:=top;
while(tempf<>nil{konec spiska}) and
(tempf^.zs<>namef{elem naiden}) do
begin
tempf:=tempf^.next; w:=w+1;{perexod k sled elem}end;
if tempf=nil{konec spiska} then writeln(namef+' not found')
else writeln(tempf^.zs+' is found','_elemen nomer-',w);
write('press any key');readln;
end;
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
{~~~~~~~~~~osnovnaya programa~~~~~~~~~~~~~~~~~~}
begin top_s:=nil;top_o:=nil;tempf:=nil;
repeat window(1,1,80,25);clrscr;
window(1,1,20,25);writeln;writeln ('=TOVAR= ');s1_scr(top_s);
window(61,1,80,25);writeln;writeln('=POKUPATEl=');s1_scr(top_o);
window(26,1,60,15);
writeln;
writeln('************CRAZY-SHOP************');
writeln('|1-dobavit tovar |');
writeln('|2-dobavit pokupatel |');
writeln('|3-sale |');
writeln('|4-poisk tovar |');
writeln('|5-poisk pokupatel |');
writeln('|6-save |');
writeln('|7-read |');
writeln('|8-exit |');
writeln('**********************************');
writeln;
writeln('vvedi 1-8');
readln(nm);
case nm of
1:begin write('tovar=');readln(name);adf_s1(top_s,name);end;
2:begin write('pokupatel=');readln(name);adl_s1(top_o,name);end;
3:begin del_first(top_s,name);del_last(top_o,name);end;
4:find_s1(top_s,tempf);
5:find_s1(top_o,tempf);
6:begin s1_fil('f:/tovar.txt',top_s,f_s);s1_fil('f:/pokup.txt',top_o,f_o);end;
7:begin fil_s1('f:/tovar.txt',top_s,f_s);fil_s1('f:/pokup.txt',top_o,f_o);end;
end;
until nm=8;
end.
Работа:
Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.