/*10성적표구조체배열(사용자함수).c
기본data를 할당하고 총점,평균,평가는 사용자함수(Calc),
등수는 사용자함수(Rank), 에서 구하고 출력은 사용자함수(Show)에서 함!
연산운선순위 : () > . > *
(*(q+i)).kor (O)
*(q+i).kor (X)
*/
#include<stdio.h>
#include"Sungjuk.h"
typedef struct Sungjuk score;//구조체 이름 변경(꼭할필요는 없으나 작업이 편리해짐)
void Calc(score*q,int n)
{
int i;
for(i=0;i<n;i++)
{
(*(q+i)).tot=(*(q+i)).kor+(*(q+i)).eng;
(*(q+i)).ave=(*(q+i)).tot/2.0;
switch((int)(*(q+i)).ave/10)
{
case 10:
case 9:(*(q+i)).grade='A';break;
case 8:(*(q+i)).grade='B';break;
case 7:(*(q+i)).grade='C';break;
case 6:(*(q+i)).grade='D';break;
default:(*(q+i)).grade='F';
}
(*(q+i)).tot=(*(q+i)).kor+(*(q+i)).eng;
}
}
void Rank(score *q,int n)
{
int i,j;
for(i=0;i<5;i++)
{
(*(q+i)).rank=1;
for(j=0;j<5;j++)
{
if((*(q+i)).tot < (*(q+j)).tot) (*(q+i)).rank++;
}
}
}
void Show(score *q,int n)
{
int i;
printf("번호\t이름\t국어\t영어\t총점\t평균\t평가\t등수\n");
for(i=0;i<5;i++)
{
printf("%d\t%s\t%3d\t%3d\t%4d\t%5.1f\t%3c\t%2d\n",(*(q+i)).no,(*(q+i)).name,(*(q+i)).kor,(*(q+i)).eng,(*(q+i)).tot,(*(q+i)).ave,(*(q+i)).grade,(*(q+i)).rank);//구조체변수.멤버변수
}
}
int main()
{
int i,j;
score p[5]=
{
{110833,"홍길동",87,88},
{110837,"강길동",90,88},
{110855,"주길동",67,88},
{110824,"살 동",87,100},
{110814,"박길동",100,100}
};//구조체변수 p선언(멤버변수의 순서대로)
//printf("p의 byte수 : %d\n",sizeof(p));
/*for(i=0;i<5;i++)
{
p[i].tot=p[i].kor+p[i].eng;
p[i].ave=p[i].tot/2.0;
switch((int)p[i].ave/10)
{
case 10:
case 9:p[i].grade='A';break;
case 8:p[i].grade='B';break;
case 7:p[i].grade='C';break;
case 6:p[i].grade='D';break;
default:p[i].grade='F';
}
}*/
//등수구하기
Calc(p,5);//Calc(&p[o],5);
Rank(p,5);
Show(p,5);
/*
for(i=0;i<5;i++)
{
p[i].rank=1;
for(j=0;j<5;j++)
{
if(p[i].tot < p[j].tot) p[i].rank++;
}
}
*/
/*
printf("번호\t이름\t국어\t영어\t총점\t평균\t평가\t등수\n");
for(i=0;i<5;i++)
{
printf("%d\t%s\t%3d\t%3d\t%4d\t%5.1f\t%3c\t%2d\n",p[i].no,p[i].name,p[i].kor,p[i].eng,p[i].tot,p[i].ave,p[i].grade,p[i].rank);//구조체변수.멤버변수
}
*/
return 0;
}
/*10성적표구조체배열(사용자함수).c
기본data를 할당하고 총점,평균,평가는 사용자함수(Calc),
등수는 사용자함수(Rank), 에서 구하고 출력은 사용자함수(Show)에서 함!
연산운선순위 : () > . > *
(*(q+i)).kor (O) == (q+i)->kor
*(q+i).kor (X)구조체포인터연산자(->) : 화살연산자==arrow
*/
#include<stdio.h>
#include"Sungjuk.h"
typedef struct Sungjuk score;//구조체 이름 변경(꼭할필요는 없으나 작업이 편리해짐)
void Calc(score*q,int n)
{
int i;
for(i=0;i<n;i++)
{
//(*(q+i)).tot=(*(q+i)).kor+(*(q+i)).eng;
(q+i)->tot=(q+i)->kor+(q+i)->eng;
(q+i)->ave=(q+i)->tot/2.0;
switch((int)(q+i)->ave/10)
{
case 10:
case 9:(q+i)->grade='A';break;
case 8:(q+i)->grade='B';break;
case 7:(q+i)->grade='C';break;
case 6:(q+i)->grade='D';break;
default:(q+i)->grade='F';
}
(q+i)->tot=(q+i)->kor+(q+i)->eng; //->로 바꿔도 같은 결과!
}
}
void Rank(score *q,int n)
{
int i,j;
for(i=0;i<5;i++)
{
(*(q+i)).rank=1;
for(j=0;j<5;j++)
{
if((*(q+i)).tot < (*(q+j)).tot) (*(q+i)).rank++;
}
}
}
void Show(score *q,int n)
{
int i;
printf("번호\t이름\t국어\t영어\t총점\t평균\t평가\t등수\n");
for(i=0;i<5;i++)
{
printf("%d\t%s\t%3d\t%3d\t%4d\t%5.1f\t%3c\t%2d\n",(*(q+i)).no,(*(q+i)).name,(*(q+i)).kor,(*(q+i)).eng,(*(q+i)).tot,(*(q+i)).ave,(*(q+i)).grade,(*(q+i)).rank);//구조체변수.멤버변수
}
}
int main()
{
int i,j;
score p[5]=
{
{110833,"홍길동",87,88},
{110837,"강길동",90,88},
{110855,"주길동",67,88},
{110824,"살 동",87,100},
{110814,"박길동",100,100}
};//구조체변수 p선언(멤버변수의 순서대로)
//printf("p의 byte수 : %d\n",sizeof(p));
/*for(i=0;i<5;i++)
{
p[i].tot=p[i].kor+p[i].eng;
p[i].ave=p[i].tot/2.0;
switch((int)p[i].ave/10)
{
case 10:
case 9:p[i].grade='A';break;
case 8:p[i].grade='B';break;
case 7:p[i].grade='C';break;
case 6:p[i].grade='D';break;
default:p[i].grade='F';
}
}*/
//등수구하기
Calc(p,5);//Calc(&p[o],5);
Rank(p,5);
Show(p,5);
/*
for(i=0;i<5;i++)
{
p[i].rank=1;
for(j=0;j<5;j++)
{
if(p[i].tot < p[j].tot) p[i].rank++;
}
}
*/
/*
printf("번호\t이름\t국어\t영어\t총점\t평균\t평가\t등수\n");
for(i=0;i<5;i++)
{
printf("%d\t%s\t%3d\t%3d\t%4d\t%5.1f\t%3c\t%2d\n",p[i].no,p[i].name,p[i].kor,p[i].eng,p[i].tot,p[i].ave,p[i].grade,p[i].rank);//구조체변수.멤버변수
}
*/
return 0;
}