Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.09.2012, 02:26
Pavel_Aleksandrovich Pavel_Aleksandrovich вне форума
Прохожий
 
Регистрация: 02.09.2012
Сообщения: 31
Репутация: 9
По умолчанию Модуль для работы с массивами

есть 2 массива из них создается 3

если вы знаете проще описание данных инструкций, буду очень признателен
Код:
var
   tabl1:array[1..9,1..12]of variant;
   shapka:array[1..9]of string=('Номер строки','Номер схемы','A, см','P1, кН','P2, кН','P3, кН','l1, м','l2, м','l3, м');
   word:array[1..8]of string=('е','в','г','д','е','г','д','е');
   stolb1_2:array[1..10]of integer;
   stolbA:array[1..10]of integer;
   stolbP1:array[1..10]of integer=(300,270,290,280,260,250,240,230,220,210);
   stolbP2:array[1..10]of integer=(150,130,140,120,160,150,140,130,120,110);
   stolbP3:array[1..10]of integer=(70,80,90,60,75,50,80,75,70,100);
   stolbl1:array[1..10]of real=(0.60,0.50,1.00,0.90,0.80,0.70,1.00,1.10,1.15,1.20);
   stolbl2:array[1..10]of real=(0.40,0.50,0.60,0.70,0.80,0.90,1.00,0.80,0.40,1.20);
   stolbl3:array[1..10]of real=(0.50,0.40,1.00,0.80,0.60,0.70,1.00,0.80,0.90,1.20);

   tabl2:array[1..6,1..2]of variant;
   abvgdeword:array[1..6]of string;
   abvgde:array[1..6]of integer;

   tabl3:array[1..8,1..4]of variant;
   abvgdecifri:array[1..8]of integer;
   abvgdecifrizamena:array[1..8]of integer;
   dannie:array[1..9]of variant;

procedure TForm1.Button1Click(Sender: TObject);
var
   i,j:integer;
   a,b,v,g,d,e:integer;
begin
     for i:=1 to 9 do
        begin
             tabl1[i,1]:=shapka[i];
        end;

     for i:=1 to 8 do
        begin
             tabl1[i+1,2]:=word[i];
        end;

     for j:=1 to 10 do
        begin
             stolb1_2[j]:=j;
             stolbA[j]:=29+j;
        end;

     for j:=1 to 10 do
        begin
             tabl1[1,j+2]:=stolb1_2[j];
             tabl1[2,j+2]:=stolb1_2[j];
             tabl1[3,j+2]:=stolbA[j];
             tabl1[4,j+2]:=stolbP1[j];
             tabl1[5,j+2]:=stolbP2[j];
             tabl1[6,j+2]:=stolbP3[j];
             tabl1[7,j+2]:=stolbl1[j];
             tabl1[8,j+2]:=stolbl2[j];
             tabl1[9,j+2]:=stolbl3[j];
        end;

     for i:=1 to 9 do
        begin
             for j:=1 to 12 do
                begin
                     stringgrid1.Cells[i-1,j-1]:=tabl1[i,j];
                end;
        end;

     case length(edit1.Text) of
         1:
           begin
                a:=0;
                b:=strtoint(copy(edit1.Text,1,1));
                v:=a;
                g:=b;
                d:=a;
                e:=b;
           end;
         2:
           begin
                a:=strtoint(copy(edit1.Text,1,1));
                v:=a;
                d:=a;
                b:=strtoint(copy(edit1.Text,2,1));
                g:=b;
                e:=b;
           end;
         3:
           begin
                a:=strtoint(copy(edit1.Text,1,1));
                g:=a;
                b:=strtoint(copy(edit1.Text,2,1));
                d:=b;
                v:=strtoint(copy(edit1.Text,3,1));
                e:=v;
           end;
     end;

     abvgdeword[1]:='а';
     abvgdeword[2]:='б';
     abvgdeword[3]:='в';
     abvgdeword[4]:='г';
     abvgdeword[5]:='д';
     abvgdeword[6]:='е';

     abvgde[1]:=a;
     abvgde[2]:=b;
     abvgde[3]:=v;
     abvgde[4]:=g;
     abvgde[5]:=d;
     abvgde[6]:=e;

     for i:=1 to 6 do
        begin
             tabl2[i,1]:=abvgdeword[i];
             tabl2[i,2]:=abvgde[i];
        end;

     for i:=1 to 6 do
        begin
             for j:=1 to 2 do
                begin
                     stringgrid2.Cells[i-1,j-1]:=tabl2[i,j];
                end;
        end;

     for j:=1 to 8 do
        begin
             for i:=1 to 6 do
                begin
                     if (tabl2[i,1])=(tabl1[j+1,2])
                       then
                           begin
                                abvgdecifri[j]:=tabl2[i,2];
                           end
                       else continue;
                end;
        end;

     for i:=1 to 8 do
        begin
             abvgdecifrizamena[i]:=abvgdecifri[i];
             if abvgdecifrizamena[i]=0
               then abvgdecifrizamena[i]:=10
               else continue;
        end;

     for j:=1 to 10 do
        begin
             for i:=1 to 8 do
                begin
                     if abvgdecifrizamena[i]=tabl1[1,j+2]
                       then dannie[i]:=tabl1[i+1,j+2]
                       else continue;
                end;
        end;

     for i:=1 to 8 do
        begin
             tabl3[i,1]:=tabl1[i+1,1];
             tabl3[i,2]:=tabl1[i+1,2];
             tabl3[i,3]:=abvgdecifri[i];
             tabl3[i,4]:=dannie[i];
        end;

     for j:=1 to 4 do
        begin
             for i:=1 to 8 do
                begin
                     stringgrid3.Cells[i-1,j-1]:=tabl3[i,j];
                end;
        end;

end;

что хочу сделать:
1) пар массивов очень много, около 40, описывать инструкции по созданию 3 массива для каждой пары очень долго, хотелось бы создать модуль который все это бы умел
2) 2 массив не меняется, меняются только 1 и 3
3)в массивах будут меняться только число столбцов, число строк останется неизменным, меняются значения элементов массивов
Ответить с цитированием
  #2  
Старый 08.09.2012, 03:18
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,032
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

мне почему-то кажется, что вы неправильно понимаете задачу (т.е. алгоритм решения). Выкладывайте текст задания - посмотрим.
Ответить с цитированием
  #3  
Старый 08.09.2012, 11:29
Pavel_Aleksandrovich Pavel_Aleksandrovich вне форума
Прохожий
 
Регистрация: 02.09.2012
Сообщения: 31
Репутация: 9
По умолчанию

какое задание?
алгоритм я сделал такой как мне надо

ну я объясню какую я преследую цель

1 массив
Код HTML:
№строки №схемы A, см2 P1, кН P2, кН P3, кН l1, м l2, м l3, м е в г д е г д е 1 1 30 300 150 70 0,6 0,4 0,5 2 2 31 270 130 80 0,5 0,5 0,4 3 3 32 290 140 90 1 0,6 1 4 4 33 280 120 60 0,9 0,7 0,8 5 5 34 260 160 75 0,8 0,8 0,6 6 6 35 250 150 50 0,7 0,9 0,7 7 7 36 240 140 80 1 1 1 8 8 37 230 130 75 1,1 0,8 0,8 9 9 38 220 120 70 1,15 0,4 0,9 10 10 39 210 110 100 1,2 1,2 1,2

2 массив (2 строка массива формируется из цифр ввденных в поле edit)
Код HTML:
а б в г д е 1 2 3 1 2 3

3 массив (как он формируется: берем буквы 2 массива и ищем совпадения с буквами 1 массива, при совпадении берем цифру напротив букв 2 массива и потом сравниваем с цифрами 1 столбца 1 массивами при овпадении выбираем в массиве 1 данные [совпадение букв 2 массив 1, совпадение цифр 2 массива с 1]
Код HTML:
№схемы A, см2 P1, кН P2, кН P3, кН l1, м l2, м l3, м е в г д е г д е 3 3 1 2 3 1 2 3 3 32 300 130 90 0,6 0,5 1

массивов №1 около 40 и все они разных размеров и содержания хочу написать модуль который бы умел делать алгоритм описанный в предыдущем посте

Последний раз редактировалось Pavel_Aleksandrovich, 08.09.2012 в 11:53.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:54.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter