※ 학생성적처리 프로그램 (이름, 국어, 영어, 수학, 총점, 평균)
#include <iostream>
using namespace std; // 정의 가시화
// 함수 선언
void inputInfo(char(*name)[10], int(*score)[4], float *avg, int num);
void operater(int(*score)[4], float *avg, int num);
void outputInfo(char(*name)[10], int(*score)[4], float *avg, int num);
int main()
{
int num;
cout << "input Number : ";
cin >> num;
//메모리 할당 및 초기화
// name은 정체는 포인터인데....
// 한행당 10개짜리 char형 배열을 가지고 있다.
char (*name)[10]= new char[num][10];
int (*score)[4] = new int [num][4];
float *avg = new float[num];
// 학생 정보 입력함수
inputInfo(name, score, avg, num);
// 학점 (총점, 평균)함수
operater(score, avg, num);
// 학생 정보 출력함수
outputInfo(name, score, avg, num);
// 메모리 단행삭제
// delete name; ==> 대신에 루프문을 통해서 돌면서 전체 할당부분을 다 지워야된다.
// 지우지않으면 할당 부분이 남아있다.
// 메모리 전체 삭제
// delete []name;
delete[]name;
delete[]score;
delete[]avg;
}
void inputInfo(char(*name)[10], int(*score)[4], float *avg, int num)
{
int i, j;
for (i = 0; i < num; i++)
{
cout << "input name : ";
cin >> *(name + i);
for (j = 0; j < 3; j++)
{
cout << "input score : ";
cin >> *(*(score + i) + j);
}
}
}
void operater(int(*score)[4], float *avg, int num)
{
int i, j;
for (i = 0; i < num; i++)
{
*(*(score + i) + 3) = 0;
for (j = 0; j < 3; j++)
{
*(*(score + i) + 3) += *(*(score + i) + j);
}
*(avg + i) = *(*(score + i) + 3) / 3.f;
}
}
void outputInfo(char(*name)[10], int(*score)[4], float *avg, int num)
{
cout << "Name\tKor\tEng\tMath\tTotal\tAvg" << endl;
int i, j;
for (i = 0; i < num; i++)
{
cout << *(name + i) << "\t";
for (j = 0; j < 4; j++)
{
cout << *(*(score + i) + j) << "\t";
}
cout << *(avg + i) << endl;
}
}
동적 바인딩(DynamicBinding) (0) | 2018.03.13 |
---|---|
다중 상속 시 모호성발생의 해결 방법(가상상속 처리) (0) | 2018.03.13 |
Has~a관계 이용한 데이터 관리클래스 (학생성적 C++) (0) | 2018.03.08 |
Class 관계 - Has ~ a 관계(C++) (0) | 2018.03.08 |
오버로딩(Overloading) (0) | 2018.03.06 |
댓글 영역