配列の受け渡し
明解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