상세 컨텐츠

본문 제목

간단한 학생 성적 프로그램 ver1(동적할당)

C++ 언어

by ChrisMare 2018. 3. 6. 14:44

본문

※ 학생성적처리 프로그램 (이름, 국어, 영어, 수학, 총점, 평균)


#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;

}

}


관련글 더보기

댓글 영역