Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[11940] Re:파스칼 언어 때매 그래요 도와주세요
marinfo [] 1781 읽음    2008-04-12 11:09
파스칼 컴파일러를 어떤 걸 쓰시는지 잘 모르겠지만, 일단 파스칼 언어 부분만 살펴보면,

: 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

조금이라도 도움되었으면 합니다^^

+ -

관련 글 리스트
11938 파스칼 언어 때매 그래요 도와주세요 끄적꾸적 1511 2008/04/11
11940     Re:파스칼 언어 때매 그래요 도와주세요 marinfo 1781 2008/04/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.