Дан город, даны маршруты , остановки , необходимо после ввода 2 остановок указать возможные маршруты передвижения между ними.
Я уже сделал проверку (наличие остановок в маршруте):
Код
procedure ch_way;
var x,y,d,i,kv,l,cnm:integer;
ot,nm:string;
m:array[1..10] of string;
mrez:array[1..5] of string;
begin
kv:=0;
L:=0;
nm:='';
for i:=1 to 10 do
begin
m[i]:='';
mrez[i]:='';
end;
while kv<>7 do begin
cnm:=0;
kv:=kv+1;
case kv of
1:begin
i:=1;
while w1[i]<>'' do begin
m[i]:=w1[i];
nm:='1';
i:=i+1;
end;
end;
2:begin
i:=1;
while w2[i]<>'' do begin
m[i]:=w2[i];
nm:='2';
i:=i+1;
end;
end;
3:begin
i:=1;
while w3[i]<>'' do begin
m[i]:=w3[i];
nm:='3';
i:=i+1;
end;
end;
4:begin
i:=1;
while w4[i]<>'' do begin
m[i]:=w4[i];
nm:='4';
i:=i+1;
end;
end;
5:begin
i:=1;
while w5[i]<>'' do begin
m[i]:=w5[i];
nm:='5';
i:=i+1;
end;
end;
end;
i:=1;
while m[i]<>'' do begin
if st=m[i] then cnm:=cnm+1;
if en=m[i] then cnm:=cnm+1;
i:=i+1;
end;
if cnm=2 then begin
l:=l+1;
mrez[l]:=nm;
end;
end;
x:=10;
y:=40;
settextjustify(lefttext,bottomtext);
outtextxy(10,20,'MapwpyTbl:');
ot:='';
d:=1;
while mrez[d]<>mrez[d-1] do begin
ot:=mrez[d];
x:=x+20;
white_text;
if mrez[d]<>mrez[d+1] then
outtextxy(x,y,''+ot+',');
if mrez[d]=mrez[d+1] then
outtextxy(x,y,''+ot+'.');
white_text;
delay(9000);
black_text;
d:=d+1;
end;
black_text;
readln;
end;
var x,y,d,i,kv,l,cnm:integer;
ot,nm:string;
m:array[1..10] of string;
mrez:array[1..5] of string;
begin
kv:=0;
L:=0;
nm:='';
for i:=1 to 10 do
begin
m[i]:='';
mrez[i]:='';
end;
while kv<>7 do begin
cnm:=0;
kv:=kv+1;
case kv of
1:begin
i:=1;
while w1[i]<>'' do begin
m[i]:=w1[i];
nm:='1';
i:=i+1;
end;
end;
2:begin
i:=1;
while w2[i]<>'' do begin
m[i]:=w2[i];
nm:='2';
i:=i+1;
end;
end;
3:begin
i:=1;
while w3[i]<>'' do begin
m[i]:=w3[i];
nm:='3';
i:=i+1;
end;
end;
4:begin
i:=1;
while w4[i]<>'' do begin
m[i]:=w4[i];
nm:='4';
i:=i+1;
end;
end;
5:begin
i:=1;
while w5[i]<>'' do begin
m[i]:=w5[i];
nm:='5';
i:=i+1;
end;
end;
end;
i:=1;
while m[i]<>'' do begin
if st=m[i] then cnm:=cnm+1;
if en=m[i] then cnm:=cnm+1;
i:=i+1;
end;
if cnm=2 then begin
l:=l+1;
mrez[l]:=nm;
end;
end;
x:=10;
y:=40;
settextjustify(lefttext,bottomtext);
outtextxy(10,20,'MapwpyTbl:');
ot:='';
d:=1;
while mrez[d]<>mrez[d-1] do begin
ot:=mrez[d];
x:=x+20;
white_text;
if mrez[d]<>mrez[d+1] then
outtextxy(x,y,''+ot+',');
if mrez[d]=mrez[d+1] then
outtextxy(x,y,''+ot+'.');
white_text;
delay(9000);
black_text;
d:=d+1;
end;
black_text;
readln;
end;
Но если между остановками нет действующего маршрута то нужно естественно делать пересадки что при моём способе проверки невозможно(точнее возможно , но если будет 100 или более маршрутов то придётся делать что-то вроде этого:
Код
case kv of
1:begin
kv1:=kv1+1;
case kv1 of
1:begin end;
…
100:begin end;
end;
…
100:begin end;
1:begin
kv1:=kv1+1;
case kv1 of
1:begin end;
…
100:begin end;
end;
…
100:begin end;
а это мягко говоря нерационально).
Я думал может сделать массив из массивов , но что-то у меня не получается(знаний не хватает).Объясните пожалуйста как оформлять такие массивы в const (массивы одномерные , тип - string).
Помогите и если возможно, подскажите более быстрый алгоритм!