파스칼 컴파일러를 어떤 걸 쓰시는지 잘 모르겠지만, 일단 파스칼 언어 부분만 살펴보면,
: program main(input,output);
: uses crt;
: const array_size = 40;
:
: var stu_data:array[1..70,1..70]of record
: name : string[60];
: k,e,m,s,temp : integer;
: avr : real;
: end;
===> 이 부분은:
type // 먼저 type 을 선언하신 후
Tstu_data = record
name: string [60];
k, e, m, s, temp : integer;
avr : real;
end;
var // 변수는 별도로 정의합니다.
stu_data : array [1..70, 1..70] of TStu_data;
// sorting 을 위해 array 를 2차원으로 잡으신 것 같은데 그럴 필요가 없습니다.
처럼 쓰셔야 합니다.
Console 입출력을 어떻게 처리하는지 몰라서 (^^;;;;;)
텍스트 파일 입출력으로 바꾸어서 다음과 같이 처리하였습니다.
program Project2;
type
TStu_data=record
name : string [10];
k, e, m : integer;
avg : real;
end;
var
stu_data : array [1..70] of TStu_data;
temp_data : TStu_data;
i, j, n : integer;
inf, outf : Textfile;
begin
// 데이터 입력 부분
AssignFile (inf, 'd:\software development\test\data.txt');
reset (inf);
n := 0;
while not eof(inf) do begin
inc (n);
readln (inf, stu_data[n].k, stu_data[n].e, stu_data[n].m, stu_data[n].name);
stu_data[n].avg := (stu_data[n].k+stu_data[n].e+stu_data[n].m) / 3;
end;
CloseFile (inf);
// 데이터 정렬 부분
for i := 1 to n-1 do
for j := i+1 to n do
if stu_data[i].avg < stu_data[j].avg then begin
temp_data := stu_data[i];
stu_data[i] := stu_data[j];
stu_data[j] := temp_data;
end;
// 출력 부분
AssignFile (outf, 'd:\software development\test\sorted.txt');
rewrite (outf);
writeln (outf, ' Name Korean English Math Total Avg.');
writeln (outf, '---------- ------- ------- ------- ------- -------');
for i := 1 to n do begin
writeln (outf, stu_data[i].name:10, stu_data[i].k:8, stu_data[i].e:8, stu_data[i].m:8,
stu_data[i].k+stu_data[i].e+stu_data[i].m:8, stu_data[i].avg:8:1);
end;
CloseFile (outf);
end.
"data.txt" 파일은 다음과 같습니다. 메모장 등으로 편집하시면 됩니다.
10 20 30 A
22 23 21 B
56 43 45 C
87 98 73 D
65 56 76 E
조금이라도 도움되었으면 합니다^^
|