PDA

نسخه کامل مشاهده نسخه کامل : کوتاه کردن خطوط برنامه



roya_borhany
01-04-2009, 13:51
سلام من این برنامه را با زبان پاسکال و برای درس ساختمان داده نوشتم. چون در روز تدریس این درس غیبت داشتم درست نمی دونم که درست نوشتم یا نه. البته برنامه جواب میده اما خطوط طولانی داره. می خواستم چک کنید ببینید که آیا راهی هست که خطوط را کمتر کرد یا نه؟
"این برنامه پارکینگی را با دو استک اصلی که هریک تا 5 ماشین ظرفیت دارند را تداعی می کند و یک استک کمکی برای خروج ماشین ها. یک صف هم از ماشین های دیگر. برنامه منویی با 4 گزینه دارد.1. اضافه کردن ماشین ابتدا به استک 1 و بعد 2 و سپس به صف. 2. نمایش استک ها و صف.3. حذف یک ماشین از استک از طریق دریافت نام از کاربر با حذف هر ماشین ماشینهای دیگر شیفت پیدا کرده و اولین ماشین موجود در صف وارد استک می شود و ماشین های صف هم به سمت جلو شیفت پیدا می کنند.4. خروج"
کد:

program cars;
uses
crt;
var
n,i: integer;
rear,front,top,que : integer;
q:array[1..20] of string[10];
stack1:array[1..10] of string[10];
stack2:array[1..10] of string[10];
stack3:array[1..10] of string[10];
procedure del;
var k: string[10];
i, j, c,e: integer;
bol : boolean;
begin
write('enter a car for del: ');
readln(k);
for i := 1 to top do
if k = stack1[i] then
begin
bol:= true;
e:=i;
for j := top downto i+1 do
begin
que:=que+1;
stack3[que]:= stack1[j];
end;
for c:= que downto 1 do
begin
stack1[e]:= stack3[c];
e:=e+1;
stack1[e]:=' ';
stack3[c]:=' ';
end;
stack1[top] := q[1];
q[1]:= ' ';
writeln(' delete is complete');
for i := 1 to rear do
if q[i] =' ' then
begin
q[i]:=q[i+1];
q[i+1]:=' ';
end;
end;
for i := 1 to front do
if k = stack2[i] then
begin
bol:= true;
e:=i;
for j := front downto i+1 do
begin
que:=que+1;
stack3[que]:= stack2[j];
end;
for c:= que downto 1 do
begin
stack2[e]:= stack3[c];
e:=e+1;
stack2[e]:=' ';
stack3[c]:=' ';
end;
stack2[front] := q[1];
q[1]:= ' ';
writeln(' delete is complete');
for i := 1 to rear-1 do
if q[i] =' ' then
begin
q[i]:=q[i+1];
q[i+1]:=' ';
end;
end;
if bol<> true then
writeln(' the car is not found')
else
begin
rear:=rear-1;
que:=0;
end;
end;
procedure show;
begin
writeln(' stack1 : ');
for i := 1 to top do
writeln(' ',stack1[i]) ;
writeln(' stack2 : ');
for i := 1 to front do
writeln(' ',stack2[i]);
writeln(' queue: ');
for i := 1 to rear do
writeln(' ',q[i]);
end;
procedure add;
var k: string[10];
begin
write('enter your name car:');
readln(k);
if top < 5 then
begin
top:= top+1;
stack1[top]:=k;
writeln(' ', k, ' saved in stack1');
end
else if front<5 then
begin
front:=front+1;
stack2[front]:=k;
writeln(' ',k,' save in stack 2');
end
else if rear<20 then
begin
rear:= rear+1;
q[rear]:= k;
writeln(' the stacks is full. ',k,' saved in queu');
end;
end;
begin
front:=0;
rear:=0;
top:=0;
que:=0;
clrscr;
writeln(' please select a number from under list:');
writeln(' 1-add a car to a parking');
writeln(' 2-show the input cars');
writeln(' 3-delete the input car');
write(' 4-Exit ');
readln(n);
while n<>4 do
begin
case n of
1: add;
2:show;
3:del;
end;
write('enter a number ');
readln(n);
end;
write(' tanck you for use this program');
readln;
end.