대충이라도 해석좀 해주세요 ~
lass Data{
String member[][] = {{"200505184", "조규범"},{"200505184", "조원재"},{"200505184","이준영"},{"200505184","강전희"},{"200505184","최찬영"}};
int score[][] = {{60,60,60,0,0,1},{20,70,30,0,0,1},{30,80,40,0,0,1},{10,60,20,0,0,1},{50,10,60,0,0,1}};
int i,j,k;
static int avr=0,sum=0,tavr=0;
static int top=0,bottom=0;
public void sumdata(){
for(i=0;i<5;i++){
for(j=0;j<3;j++){
score[i][3]+=score[i][j];
}
score[i][4]=score[i][3]/3;
sum+=score[i][3];
avr+=score[i][4];
}
}
public void sortdata(){
for(i=0;i<5;i++){
for(j=0;j<5;j++){
if(score[i][4]>score[j][4])
score[j][5]++;
}
}
}
public void printdata(){
for(i=0;i<5;i++){
if(score[i][5]==1)
top=i;
if(score[i][5]==5)
bottom=i;
}
tavr=avr/5;
System.out.println(" 학번 \t이 름\tJAVA\tC++\tAPI\t총점\t평균\t석차");
System.out.println("=========================================================================");
for(i=0;i<5;i++){
System.out.print(member[i][0]+"\t"+member[i][1]);
for(j=0;j<6;j++)
System.out.print("\t"+score[i][j]);
System.out.println();
}
System.out.println("=========================================================================");
System.out.println("반총점 : "+sum+"점\t\t반평균 : "+tavr+"점");
System.out.println("1등 : "+member[top][1]+"\t\t5등 : "+member[bottom][1]);
}
}
class ScoreList{
public static void main(String arg[]){
Data dt = new Data();
dt.sumdata();
dt.sortdata();
dt.printdata();
}
}
해석좀부탁드려요~
답변자님,
정보를 공유해 주세요.
이거 실행은 해보셨나요?
member변수에 학번과 이름을 넣어주었고요 score변수에는 JAVA, C++, API 세과목 점수를 입력하였고
총점 평균 석차는 0, 0, 1 이렇게 기본값으로 넣어줘서 JAVA, C++, API 세과목 점수로 계산을 하는 프로그램입니다.
class Data{
String member[][] = {{"200505184", "조규범"},{"200505184", "조원재"},{"200505184","이준영"},{"200505184","강전희"},{"200505184","최찬영"}};
// member에 배열로 value값 지정
// ex)member[0][0]="200505184", member[0][1]="조규범", member[1][0]="200505184",
// member[1][1]="조원재" 이런식으로 member[4][1]까지 value값 지정
int score[][] = {{60,60,60,0,0,1},{20,70,30,0,0,1},{30,80,40,0,0,1},{10,60,20,0,0,1},{50,10,60,0,0,1}};
// 마찬가지로 score에 배열로 value값 지정 score[0][0]=60,score[0][1]=60,score[0][2]=60,
// score[0][3]=0,score[0][4]=0,score[0][5]=1
int i,j,k; // int형 i,j,k 선언
static int avr=0,sum=0,tavr=0;
static int top=0,bottom=0;
// static으로 int형 선언 static을 사용하는 이유(지금 소스에선 꼭 static 필요없음)
public void sumdata(){ //총점을 계산하기 위해서 만든 메소드
for(i=0;i<5;i++){ //배열의 총 갯수가 5개이므로 FOR문을 5번 돌려주기위해 만듬
for(j=0;j<3;j++){ //JAVA, C++, API 세과목만 더해주면 되기때문에 FOR문을 3번만 돌림
score[i][3]+=score[i][j];
/*처음 i와 j가 0부터 for문이 돌아가기 때문에
i가 0일때 score[0]이 j가 0일때 score[0][0] 이렇게 사용이 됩니다. i값은 0일때 j는 2까지 사용하고
i값이 1이 됐을때는 j는 다시 0부터 시작해서 2까지 사용합니다. 밑에 예를 들면
score[i][3]+=score[i][j]; 이걸 풀어 쓰면
score[0][3]=score[0][0]+score[0][1]+score[0][2]
score[1][3]=score[1][0]+score[1][1]+score[1][2]
score[4][3]=score[4][0]+score[4][1]+score[4][2]
까지 실행되서 총점을 점수 score배열에 넣어주게 됩니다
*/
}
score[i][4]=score[i][3]/3;
//위에 총점을 구한 값으로 평균값을 score[][4]번에 평균값을 넣어줍니다
sum+=score[i][3];
//5명의 총점을 더해서 반총점값을 계산하는 작업
avr+=score[i][4];
//5명의 평균을 더해줌
} //j의 for문 끝
} //i의 for문 끝
public void sortdata(){
for(i=0;i<5;i++){
for(j=0;j<5;j++){
if(score[i][4]>score[j][4])
score[j][5]++;
}
}
}
/* 석차를 구하기 위해 사용하는 메소드
score배열 중 마지막인 score[][5]이 석차에 사용됩니다. 기본값으로 1을 다 넣어줬기 때문에
차례대로 0부터 4번까지 비교해서 큰값은 score[][5]를 그대로 나두고 작은값은 score[][5]를
1더해줍니다 0부터 4까지 비교를 했다면 score[0][5]가 자기보다 큰값이 없다면 1 그대로 일테고
큰값이 2개가 더 있었다면 2번 더해져서 3이 되었을껍니다. 5명중에 자신보다 큰값이 2라면 3등일테죠
이런식으로 계산이 되는겁니다. 0부터 4를 비교했다면 다음에 1부터 4를, 그 다음에 2부터 4, 마지막으로
3부터 4를 비교해서 석차가 나오게 됩니다
*/
public void printdata(){
for(i=0;i<5;i++){
if(score[i][5]==1)
top=i;
if(score[i][5]==5)
bottom=i;
}
tavr=avr/5;
System.out.println(" 학번 \t이 름\tJAVA\tC++\tAPI\t총점\t평균\t석차");
System.out.println("=========================================================================");
for(i=0;i<5;i++){
System.out.print(member[i][0]+"\t"+member[i][1]);
for(j=0;j<6;j++)
System.out.print("\t"+score[i][j]);
System.out.println();
}
System.out.println("=========================================================================");
System.out.println("반총점 : "+sum+"점\t\t반평균 : "+tavr+"점");
System.out.println("1등 : "+member[top][1]+"\t\t5등 : "+member[bottom][1]);
}
/*
printdata()메소드는 말그대로 출력하는 메소드입니다.
score[ ][5]를 사용해서 1과5를 찾는 for문이 있는데 그 이유는 1등과 5등을 찾기 위해서입니다.
1등과 5등을 찾아서 top과 bottom 변수에 같은 값을 넣어주고 sumdata()에 사용한 avr변수를 5로 나누어
반 평균값을 구합니다. 그 다음은 순서대로 출력만 하는 소스입니다 member먼저 출력하고 score 순서대로
출력하고 줄바꿈하고 그 다음사람 출력하고....
member[top][1]이 1등 출력되고 member[bottom][1]이 5등 출력됩니다
끝~~
*/
}
class ScoreList{
public static void main(String arg[]){
Data dt = new Data(); //Data 객체 생성(Data클래스를 사용할수 있게된다)
dt.sumdata(); //Data클래스에 있는 sumdata()를 실행
dt.sortdata(); //Data클래스에 있는 sortdata()를 실행
dt.printdata(); ////Data클래스에 있는 printdata()를 실행
}
}
2010.11.30.
-
채택
질문자가 채택한 답변입니다.
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.