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

C++빌더 Q&A
C++Builder Programming Q&A
[55507] Re:씨언어 잘하시는분 좀 가르쳐주세요~
hoho [] 967 읽음    2008-12-22 03:18
아래 소스가 위에서 말하는 요구사항을 모두 충족시키는 소스는 아니네요.

정렬하는 부분이 빠졌구요. 단순히 파일을 읽어서 가중치(?)를 넣고

다시 파일에 저장하는 정도네요.


원래 과제라면 도움을 안드리는게 맞지만은... 과제를 해달라는게 아니라 공부를

도와 달라시는것 같아 약간 도와드립니다. 그리고 이 과제가 높은 비중을 차지한다면

이 소스를 사용하지 않는 편이 좋겠네요. 나름 '정렬'이라는 부분이 중요할것 같으니까요.



fscanf 부분은 파일에서 내용을 읽어 오는 부분

fprintf는 파일에 내용을 쓰는거예요. 'f'가 file를 뜻하는거져..

while문을 돌면서 입력데이타가 있는 파일의 끝을 만날때까지

내용을 읽어서 그 내용을 바로 계산(가중치)해서 출력파일에 쓰는 형식이예요.

그리고 질문자 님이 문제를 모두 올리시지 않으신듯.. 문제에는 만점 점수하구..

가중치가 적혀있을꺼예요.

가중치를 적용하는건 만점이 100이라구 했을때 성적에 30%들어간다.. 이러면

((100점 만점에 획득점수) * (30.0/100)) 라는 공식을 쓰면돼요.. 초등학교때 배우는 수준의

산수;;;

이 정도면 대충 다 이해되실듯..


그리구 정렬에 대해 조언을 드리자면.. 정렬하려면

일단 데이타를 다 읽어 온상태여야하구요. 분할정렬이 있지만;; 이런건;;;

데이타를 모두 올리는건 가장 간단한방법으로 배열... 이건 좀 높은 점수를 받기에

그렇지만.. 구조체의 배열로 하시며 되구요. 나머지는 c++ stl을 쓰는건데.. 이건 뭐

제가 알기로.. 이건 C만 쓰라구 했져? 세번째방법이 나름 좋은.. 링크드리스트만들어서

하면 좋아요.


제가 후배한테 준 소스는 링크드리스트를 적용했네요.. 이거 만나서 반가워요.ㅎㅎ;;

아마도 같은 쪽일것 같은데... 얼마전에 제 후배도 이걸 부탁하더라구요.


또 한가지 조언.... 이런 커뮤니티에는 이런..... 글을 올리는게 아니예요..

더군다나 여긴 c++ builer포럼이라는... 나름 devpia보다도.. 더 이런 질문이

맞지 않는 곳이예요.. 앞으로 naver의 지식인 쪽을 이용하신다면... 더 좋겠네요..

그리고... 학교 선배나...... 친구에게 직접 물어보는것도.. 나름 큰 도움이 될것같네요.

츠바사 님이 쓰신 글 :
: 1. 파일로 작성된 성적자료를 구조체 변수로 입력하고, 가중치를 적용한 총점을 구하여 등급을 부여한다.
: 95이상 : A+
: 90이상 : A0
: 85이상 : B+
: 80이상 : B0
: 75이상 : C+
: 70이상 : C0
: 65이상 : D+
: 60이상 : D0
: 60미만 : F
:
: 2. 총점의 내림차순으로 입력된 성적자료와 총점 및 등급을 정렬하여 파일로 출력한다.
:
: 친구껄 보고 공부를 하고 있는데 잘 이해가 안되네요 ㅠ
: 어느부분은 가중치를 준부분이다 어떤부분은 텍스트파일을 읽어온 부분이다
: 이런거좀 알려주실수 있는분 계신가요 ㅠ
:
:
: 그리고 2번에 총점을 내림차순으로 정렬해서 파일로 출력하는건 어떻게하나요?ㅠ
: 가르쳐주세요~
: 부탁드립니다 ㅠ
:
:
: #include <stdlib.h>
: struct pscr{
:  int num;
:  char snm[10];
:  char nme[10];
:  int mid;
:  int fin;
:  int hw1;
:  int hw2;
:  int atd;
: };
: typedef struct pscr pscr;
: int grd(int);
: char *gd[]={'A+','Ao','B+','Bo','C+','Co','D+','Do','F'};
: double ttp( pscr *);
: pscr psc;
: int main(){
:  FILE *fp, *fp2;
:  char fn[] = 'strscr.txt', fn2[] = 'nlst.txt';
:  pscr *pps = &psc;
:  if ((fp = fopen(fn,'r')) == NULL) {
:   printf('can't open the file\n');
:   exit(1);
:  }
:  if ((fp2 = fopen(fn2,'w')) == NULL) {
:   printf('can't open the file\n');
:   exit(1);
:  }
:  while (!feof(fp)) {
:   fscanf(fp,'%d%s%s%d%d%d%d%d',&psc.num ,psc.snm ,
:    psc.nme ,&psc.mid ,&psc.fin ,&psc.hw1 ,&psc.hw2 ,&psc.atd );
:   printf('%3d%10s%10s%5d%5d%5d%5d%5d\n',pps->num ,
:    pps->snm ,pps->nme ,pps->mid ,pps->fin ,pps->hw1 ,pps->hw2 ,pps->atd );
:   fprintf(fp2,'%3d%10s%10s%5d%5d%5d%5d%5d\n',pps->num ,
:    pps->snm ,pps->nme ,pps->mid ,pps->fin ,pps->hw1 ,pps->hw2 ,pps->atd );
:   printf('%28.1f %4.1f %4.1f %4.1f %4d %8.1f',pps->mid *0.3,pps->fin *0.4,
:    pps->hw1 *0.3,pps->hw2 *0.3,pps->atd,ttp(pps));
:   fprintf(fp2,'%28.1f %4.1f %4.1f %4.1f %4d %8.1f',pps->mid *0.3,pps->fin *0.4,
:    pps->hw1 *0.3,pps->hw2 *0.3,pps->atd,ttp(pps));
:   printf('%8s',gd[grd((int)ttp(pps))]);
:   fprintf(fp2,'%8s',gd[grd((int)ttp(pps))]);
:   printf('\n\n');fprintf(fp2,'\n\n');
:  }
:  fclose(fp);
:  fclose(fp2);
:  return 0;
: }
: double ttp(pscr *x)
: {
:  double y = (double)x->mid * 0.3 + x->fin * 0.4 + x->hw1 * 0.3 + x->hw2 * 0.3 + x->atd;
:  return y;
: }
: int grd(int x)
: {
:  int y;
:  if( x >= 95 )
:   y=0;
:  else if(x >= 90)
:   y=1;
:  else if(x >= 85)
:   y=2;
:  else if(x >= 80)
:   y=3;
:  else if(x >= 75)
:   y=4;
:  else if(x >= 70)
:   y=5;
:  else if(x >= 65)
:   y=6;
:  else if(x >= 60)
:   y=7;
:  else if(x >= 0)
:   y=8;
:  return y;
: }

+ -

관련 글 리스트
55502 씨언어 잘하시는분 좀 가르쳐주세요~ 츠바사 1113 2008/12/20
55509     Re:씨언어 잘하시는분 좀 가르쳐주세요~ 라스코니 1050 2008/12/22
55507     Re:씨언어 잘하시는분 좀 가르쳐주세요~ hoho 967 2008/12/22
55504     Re:씨언어 잘하시는분 좀 가르쳐주세요~ 시녕tm 886 2008/12/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.