program lab9; uses crt; type Link = ^List; List = record next: Link; data: string; NumRand: integer; end; var i:integer; TopElement: Link; tocase:byte; doexit:boolean;
function DataAsk : string; begin Write('Vedit dani:'); Readln(DataAsk); end;
procedure DataDel; var temp: Link; begin temp := TopElement; if temp^.next=nil then begin writeln('Stek pustij.'); TopElement := nil end else begin temp := temp^.next; TopElement := temp; end; end;
procedure Show; var temp : Link; begin temp := TopElement; while temp <> nil do begin writeln('Dani: ', temp^.data, ' - ', temp^.NumRand); temp:=temp^.next; end; end;
procedure ShowNData; var temp : Link; n : word; begin write('Veditj №: '); readln(n); temp := TopElement; for i:=1 to n do begin if i=n then writeln('Dani: ', temp^.data, ' - ', temp^.NumRand); if temp=nil then begin writeln('Ne znajdeno poziciji №: ', n); break; end; temp:=temp^.next; end; end;
procedure Search; var temp : Link; stext: string; isfind : boolean; begin write('Veditj wukanij tekst: '); readln(stext); temp := TopElement; while temp <> nil do begin if temp^.data=stext then begin writeln('Znajdeno: ', temp^.data, ' - ', temp^.NumRand); isfind := true; end; temp:=temp^.next; end; if isfind <> true then writeln('Zapys (', stext ,') ne znajdeno.'); end;
begin repeat clrscr; writeln('Oberitj diu'); writeln; writeln('1.Novij zapys.'); writeln('2.Dodaty zapys.'); writeln('3.Vydalyty.'); writeln('4.Vyvesty zapys novyj.'); writeln('5.Vyvesty vsi dani.'); writeln('6.Powuk.'); writeln; writeln('0.Vyjty.'); writeln; write('Vykonaty diu nomer: '); readln(tocase); case tocase of 1:DataCreate(DataAsk); 2:DataAdd(DataAsk); 3:DataDel; 4:ShowNData; 5:Show; 6:Search; 0:doexit:=true else writeln('Pomylka!') end; writeln('Diu ', tocase,' vykonano. Enter - prodov*yty'); readln; until doexit;
end.
volvo
12.05.2010 22:54
У стека нет того функционала, который есть у списка, и который подразумевается в твоей программе. Стек умеет только запихивать в себя одно значение (Push), выталкивать последнее записанное значение (Pop), и, иногда, просматривать значение, занесенное в стек последним (функция Top). Никакого поиска, никакого удаления элемента из середины стека...
Кстати, это только я не вижу задания, или его здесь действительно нет?
CormiX
12.05.2010 23:07
Ну то что стек "Посл. вошел - первый вышел, это я понимаю". Нет задания простите. Мне просто нужно переделать програмку в стек. Только я не понимаю как, и очень хотел бы чтоб мне с этим помогли.
volvo
13.05.2010 0:08
Что значит
Цитата
просто нужно переделать програмку в стек.
? Что программка делать должна? То же самое, что и сейчас - это невозможно со стеком. Дальше что?
CormiX
13.05.2010 16:19
Ну нужно чтоб программа создавала стек, считывала с него вершину, можно было добавить елемент в стек и показать все его елементы. Немного есть:
program STACK_Pr; Uses Crt; type PStack = ^TStack; TStack = record chislo: integer; next : PStack; end; var x, Stack : PStack; i : integer; Procedure INPUT_STACK; begin ClrScr; Stack := nil; for i := 1 to 10 do begin New(x); write ('Veditj ', i, ' 4islo '); readln(x^.chislo); x^.next := Stack; Stack:=x; end; end; Procedure OUTPUT_STACK; begin if Stack = nil then writeln('Pustij stek!') else begin x := Stack; while x<> nil do begin Write(x^.chislo,' '); x := x^.next; end; end; end; begin INPUT_STACK; OUTPUT_STACK; Repeat Until keypressed; end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.