Помощь - Поиск - Пользователи - Календарь
Полная версия: Поиск и сравнение в String массивах.array Of Array
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Sir
Короче смысл такой:
Дан город, даны маршруты , остановки , необходимо после ввода 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;

Но если между остановками нет действующего маршрута то нужно естественно делать пересадки что при моём способе проверки невозможно(точнее возможно , но если будет 100 или более маршрутов то придётся делать что-то вроде этого:
Код
case kv of
1:begin
kv1:=kv1+1;
    case kv1 of
       1:begin   end;
        …
       100:begin   end;
           end;      

100:begin     end;

а это мягко говоря нерационально).
Я думал может сделать массив из массивов , но что-то у меня не получается(знаний не хватает).Объясните пожалуйста как оформлять такие массивы в const (массивы одномерные , тип - string).
Помогите и если возможно, подскажите более быстрый алгоритм!
Slam
Лучше переделай тему ;)(см. "правила новичкам..."), а то "злые" ;D модеры закроют(или "злой" ;D AlaRic") или удалят твою тему...
AlaRic
Злых модеров не бывает!
Пример:
const mas:array[1..3] of string=
(
('a1'),('a2'),('a3')
);
GLuk
Как то я тоже хотел сделать такую фишку, но с просчетом пешедрала. И вот, что могу сказать на это в плане разработки оптимального алгоритма:
Это большая ЖОПА

В итоге я кинул эту идею.
Самое г-о забить данные о самом городе  :-X
Sir
2AlaRic:Я имел в виду описание в const массива типа array [1..n] of array [1..a]!
Geo
Цитата
описание в const массива типа array [1..n] of array [1..a]


если под n и a подразумеваются константы, то вот так

const
mas: array[1..2,1..3] of string = (('11', '12', '13')
                                                     ('21', '22', '23'));

может быть, каждый элемент тоже в скобки взять нужно
а если n a - не константы, тогда ничего не получится
Sir
2All:Да я типа спрашиваю , МОЖЕТ ПОДСКАЖЕТЕ АЛГОРИТМ , а вы мне всё пишите фигню!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.