替换表中的字符-ADA

替换表中的字符-ADA,ada,tabular,Ada,Tabular,我创建了一个表(62 x 35),表中有字符。我试图用其他字符替换10 x 10表格中间的字符 例如,如果我有一张这样的表:(62 x 35) 我希望能够加载包含(10x10)的文件: 因此,此文件中的字符将替换先前创建的表中的字符 i、 有一张看起来像的桌子 ############################################################## ########################################################

我创建了一个表(62 x 35),表中有字符。我试图用其他字符替换10 x 10表格中间的字符

例如,如果我有一张这样的表:(62 x 35)

我希望能够加载包含(10x10)的文件:

因此,此文件中的字符将替换先前创建的表中的字符

i、 有一张看起来像的桌子

##############################################################
##############################################################
##############################################################
##############################################################
##############################################################
##############################################################
##########################//////////##########################
##########################//////////##########################
##########################//////////##########################
##########################//////////##########################
##########################//////////##########################
##########################//////////##########################
##########################//////////##########################
##########################//////////##########################
##########################//////////##########################
##########################//////////##########################
##############################################################
##############################################################
##############################################################
##############################################################
##############################################################
我不认为我想做的是非常清楚的,所以如果你想要更多的细节,请询问

procedure Grid_Pilliers(A: out Grid) is  -- creates grid with pilliers --
begin
   for I in 0..31 loop
      for J in 0..75 loop
         if (I mod 4 = 1 or I mod 4 = 0) and (J mod 4 = 1 or J mod 4 = 0) then
            A(I,J) := true ;
         else
            A(I,J) := false ;
         end if ;
      end loop ;
   end loop ;
end Grid_Pilliers ;


procedure New_Grid_Random_Fill(A : in out New_Grid) is

   type Numero is range 0 .. 1;
   package Grid_Random is new Ada.Numerics.Discrete_Random (Numero);
   use Grid_Random;
   Random_Number : Numero;
   G : Generator;

begin
   Reset (G);
   for I in A'Range(1) loop
      for J in A'Range(2) loop
         Random_Number := Random (G);
         A(I,J) := (Random_Number = 1);
      end loop;
   end loop;
end New_Grid_Random_Fill;

您可能应该使用切片。。。但是对于这个例子,我将使用一对for循环。 假设您将表类型(
Grid
)定义为字符的
数组(正范围,正范围)

procedure copy_into( Working : in out Grid; subimage : in Grid;
                     Offset_X, Offset_Y : Natural ) is
begin
 -- insert checks for subimage lengths [plus offsets]
 -- to be less than Working's lengths.

 for index_x in subimage'Range(1) loop
   for index_y in subimage'Range(2) loop
     Working(index_x+offset_x, index_y+offset_y):= subimage(index_x, index_y);
   end loop;
 end loop;
end copy_into;
获取偏移非常简单:

偏移量x=大网格宽度+小网格宽度/2


offset_y=上面的值,但使用高度。

您可能应该使用切片。。。但是对于这个例子,我将使用一对for循环。 假设您将表类型(
Grid
)定义为字符的
数组(正范围,正范围)

procedure copy_into( Working : in out Grid; subimage : in Grid;
                     Offset_X, Offset_Y : Natural ) is
begin
 -- insert checks for subimage lengths [plus offsets]
 -- to be less than Working's lengths.

 for index_x in subimage'Range(1) loop
   for index_y in subimage'Range(2) loop
     Working(index_x+offset_x, index_y+offset_y):= subimage(index_x, index_y);
   end loop;
 end loop;
end copy_into;
获取偏移非常简单:

偏移量x=大网格宽度+小网格宽度/2


offset_y=上面的值,但使用高度。

我看这里没有Ada问题。我也一样。你的问题到底是什么?你写算法有困难吗?您是否收到不清楚的编译器错误消息?我认为如果你能把你的问题描述变成一个真实的问题,会更容易得到帮助。请编辑你的问题,包括一个显示你当前方法的问题。另请参见。我创建了两个表,我想将其中一个放在大表的中间,一个放在小表的中间,我不知道如何用Ada编写。您的表的代码是什么样子的?我看这里没有Ada问题。我也一样。你的问题到底是什么?你写算法有困难吗?您是否收到不清楚的编译器错误消息?我认为如果你能把你的问题描述变成一个真实的问题,会更容易得到帮助。请编辑你的问题,包括一个显示你当前方法的问题。另请参见。我创建了两个表,我想将其中一个放在大表的中间,一个放在小表的中间,我不知道如何在Ada中编写。表的代码是什么样子的?我不同意使用切片。我认为使用二维数组和(因此)嵌套循环可能更好。但我认为这是一个很好的答案,就海报的意图而言。在ADA2012中,检查可以表示为先决条件。我不同意使用切片。我认为使用二维数组和(因此)嵌套循环可能更好。但我认为这是一个很好的答案,就海报的意图而言。在Ada 2012中,检查可以表示为先决条件。
procedure copy_into( Working : in out Grid; subimage : in Grid;
                     Offset_X, Offset_Y : Natural ) is
begin
 -- insert checks for subimage lengths [plus offsets]
 -- to be less than Working's lengths.

 for index_x in subimage'Range(1) loop
   for index_y in subimage'Range(2) loop
     Working(index_x+offset_x, index_y+offset_y):= subimage(index_x, index_y);
   end loop;
 end loop;
end copy_into;