配列の受け渡し

明解C言語 入門編 > 6. 関数 >

配列の受け渡し

C


#include <stdio.h>

#define NINSU 5

int max_of(int vc[], int no)
{
int i;
int max = vc[0];
for (i = 1; i < no; i++)
if (vc[i] > max) max = vc[i];

return max;
}

int main(int argc, char* argv[])
{
int i;
int eng[NINSU];
int mat[NINSU];
int max_e, max_m;

printf("%d人の点数を入力してください。\n", NINSU);

for (i = 0; i < NINSU; i++)
{
printf("[%d] 英語:", i + 1);
scanf("%d", &eng[i]);

printf(" 数学:");
scanf("%d", &mat[i]);
}

max_e = max_of(eng, NINSU);
max_m = max_of(mat, NINSU);

printf("英語の最高点%d\n", max_e);
printf("数学の最高点%d\n", max_m);

return 0;
}

実行結果


R:\>lesson047\project1.exe
5人の点数を入力してください。
[1] 英語:53
数学:82
[2] 英語:49
数学:35
[3] 英語:21
数学:72
[4] 英語:91
数学:35
[5] 英語:77
数学:12
英語の最高点91
数学の最高点82

Delphi


program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

function max_of(vc:array of Integer): Integer;
var
i: Integer;
begin
result := vc[0];

for i := Low(vc) to High(vc) do
if vc[i] > result then result := vc[i];
end;

const
NINSU = 5;
var
i: Integer;
eng: array[1..NINSU] of Integer;
mat: array[1..NINSU] of Integer;
max_e, max_m: Integer;
begin
writeln(format('%d人の点数を入力してください。', [NINSU]));

for i := 1 to NINSU do
begin
write(format('[%d] 英語:', [i]));
read(eng[i]);

write(' 数学:');
read(mat[i]);
end;

max_e := max_of(eng);
max_m := max_of(mat);

writeln(format('英語の最高点%d', [max_e]));
writeln(format('数学の最高点%d', [max_m]));
end.

実行結果


S:\>lesson047\project1.exe
5人の点数を入力してください。
[1] 英語:53
数学:82
[2] 英語:49
数学:35
[3] 英語:21
数学:72
[4] 英語:91
数学:35
[5] 英語:77
数学:12
英語の最高点91
数学の最高点82

Perl
$NINSU = 5;

sub max_of
{
    (@vc) = @_;

    $no  = $vc[0];
    $max = $vc[1];

    for (2..$no + 1)
    {
        $max = $vc[$_] if ($vc[$_] > $max);
    }

    return $max;
}

print "$NINSU人の点数を入力してください。\n";

for (0..$NINSU - 1)
{
    printf("[%d] 英語:", $_ + 1);
    chomp($eng[$_] = <>);

    printf("    数学:");
    chomp($mat[$_] = <>);
}

$max_e = &max_of($NINSU, @eng);
$max_m = &max_of($NINSU, @mat);

printf("英語の最高点%d\n", $max_e);
printf("数学の最高点%d\n", $max_m);

実行結果

L:\>perl lesson_06_047.pl
5人の点数を入力してください。
[1] 英語:53
数学:82
[2] 英語:49
数学:35
[3] 英語:21
数学:72
[4] 英語:91
数学:35
[5] 英語:77
数学:12
英語の最高点91
数学の最高点82

Ruby
NINSU = 5

def max_of(no, vc)
    max = vc[0]

    for i in 1..(no - 1)
        max = vc[i] if (vc[i] > max)
    end

    return max
end

print "#{NINSU}人の点数を入力してください。\n"

eng = []
mat = []

for i in 0..(NINSU - 1)
    printf("[%d] 英語:", i + 1)
    eng[i] = STDIN.gets.chomp.to_i

    printf("    数学:")
    mat[i] = STDIN.gets.chomp.to_i
end

max_e = max_of(NINSU, eng)
max_m = max_of(NINSU, mat)

printf("英語の最高点%d\n", max_e)
printf("数学の最高点%d\n", max_m)

実行結果

L:\>ruby l:\lesson_06_047.rb
5人の点数を入力してください。
[1] 英語:53
数学:82
[2] 英語:49
数学:35
[3] 英語:21
数学:72
[4] 英語:91
数学:35
[5] 英語:77
数学:12
英語の最高点91
数学の最高点82