프로그래밍

 3198, 1/160 회원가입  로그인  
   minyang
   C++ 문제풀다가 모르겠어서 질문드려요~ㅠㅠ

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3170 [복사]


화면에서 10명의 학생의 이름, 국어, 영어, 수학, 과학 점수를 입력받아 배열에 저장한 후 입력값과 각 학생의 성적평균, 과목별 평균, 전체 평균을 계산해 출력하는 문제입니다.

단 평균점수는 소수 둘째자리까지이고, 결과출력은 다음과 같이 해야합니다.

이름    국어    영어    수학    과학    평균

000     95         56       78       84      81.45

XXX     90        85      95        94     90.06

~~~~~~~~~~~~~~~~~~

평균   83.25     78.46    67.34    76.86    85.35

여기서 제가 평균을 과목당 평균과 전체 평균을 생각지 않고 코드를 짜다가 문제를 보고 헷갈려졌습니다..;;
어떻게 짜야할지 감이 잘 안와서 질문드립니다..ㅠㅠ

p.s.
현재 제가 짠 소스코드는 이렇습니다.
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
        int i, j, total=0;
        int sum1=0, sum2=0, sum3=0, sum4=0, sum5=0;
        float ave1, ave2, ave3, ave4, ave5, ave6;
        char x[60][10];
        int a[10][4];
        for(i=0; i<10; i++)
        {
                cin>>x[60][i];
                for(j=0; j<4; j++)
                {
                        cin>>a[i][j];
                }
                sum1=a[i][0]+a[i][1]+a[i][2]+a[i][3];
                sum2+=a[i][0];
                sum3+=a[i][1];
                sum4+=a[i][2];
                sum5+=a[i][3];
                total+=a[i][j];
                ave1=(float)sum1/4;
                ave2=(float)sum2/10;
                ave3=(float)sum3/10;
                ave4=(float)sum4/10;
                ave5=(float)sum5/10;
                ave6=(float)total/40;
        }
        cout<<"이름   국어   영어   수학   과학   평균"<<endl;
        for(i=0; i<10; i++)
        {
                cout<<x[60][i]<<"   "<<a[i][0]<<"   "<<a[i][1]<<"   "<<a[i][2]<<"   "<<a[i][3]<<ave1<<endl;
        }
        cout<<"평균"<<"   "<<ave2<<"   "<<ave3<<"   "<<ave4<<"   "<<ave5<<"   "<<ave6<<endl;
        cout<< setiosflags(ios_base:: fixed) << setprecision(2);


        return 0;
}

배열을 이용해서 합과 평균 계산하는게 헷갈려서 아무렇게나 짰더니 결과가 똥망이네요.;;
조언 좀 부탁드립니다.

  Hit : 4643     Date : 2011/09/29 08:56



    
windowhan 평균 점수를 소수 둘째자리까지 출력을 하려고하니까 결과가 똥망이라는말씀이신가요? 2011/09/29  
woqja125 ave2=(float)sum2/10;
ave3=(float)sum3/10;
ave4=(float)sum4/10;
ave5=(float)sum5/10;
ave6=(float)total/40;
이 평균을 구하는 부분은 for문 밖으로 빼야합니다. for문 안에 넣어놓으면 for문이 실행될때마다 나눠지기때문에 평균이 제대로 구해지지않죠.
그리고 cout<<x[60][i]<<" "<<a[i][0]<<" "<<a[i][1]<<" "<<a[i][2]<<" "<<a[i][3]<<ave1<<endl; 이부분의 위쪽 for문 안으로 들어가야하고,
cout<<"이름 국어 영어 수학 과학 평균"<<endl; 이 부분은 위쪽 for문 위로 들어가는것이 맞습니다.
2011/10/01  
hex0er 그리고 .. x[60][10] 보단 x[10][6] 이 낫지않으시련지 .. 2011/10/01