多次元配列の受け渡し
明解C言語 入門編 > 6. 関数 >
多次元配列の受け渡し
C
#include <stdio.h>void mat_add(const int ma[][3], const int mb[][3], int mc[][3])
{
int i, j;
for (i = 0; i < 2; i++)
for (j = 0; j < 3; j++)
mc[i][j] = ma[i][j] + mb[i][j];
}int main(int argc, char* argv[])
{
int ma[2][3] = {{1, 2, 3}, {4, 5, 6}};
int mb[2][3] = {{6, 3, 4}, {5, 1, 2}};
int mc[2][3] = {0};mat_add(ma, mb, mc);
int i, j;
for (i = 0; i < 2; i++)
{
for (j = 0; j < 3; j++)
printf("%3d", mc[i][j]);
putchar('\n');
}return 0;
}
実行結果
R:\>lesson051\project1.exe
7 5 7
9 6 8
Delphi
program Project1;{$APPTYPE CONSOLE}
uses
SysUtils;type
TMyArray = array[1..2, 1..3] of Integer;procedure mat_add(const ma:TMyArray; const mb:TMyArray; var mc:TMyArray);
var
i, j: Integer;
begin
for i := 1 to 2 do
for j := 1 to 3 do
mc[i, j] := ma[i, j] + mb[i, j];
end;var
ma: TMyArray = ((1, 2, 3), (4, 5, 6));
mb: TMyArray = ((6, 3, 4), (5, 1, 2));
mc: TMyArray;
i, j: Integer;
begin
mat_add(ma, mb, mc);for i := 1 to 2 do
begin
for j := 1 to 3 do
write(format('%3d', [mc[i, j]]));
writeln('');
end;
end.
実行結果
S:\>lesson051\project1.exe
7 5 7
9 6 8
Perl
sub mat_add { ($ma, $mb, $mc) = @_; foreach $i(0..1) { foreach $j(0..2) { $$mc[$i][$j] = $ma[$i][$j] + $mb[$i][$j]; } } } @ma = ([1, 2, 3], [4, 5, 6]); @mb = ([6, 3, 4], [5, 1, 2]); @mc = ([], []); &mat_add(\@ma, \@mb, \@mc); foreach $i(0..1) { foreach $j(0..2) { printf("%3d", $mc[$i][$j]); } print "\n"; }
実行結果
L:\>perl lesson_06_051.pl
7 5 7
9 6 8