티스토리 뷰

반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <iostream>
#include <iomanip>
using namespace std;
void input(int num, char *name, int *sco);
void ex(int num, int *sco, float *avg);
void output(int num, char *name, int *sco, float *avg);
 
//사람수 제한 없는 성적프로그램 짜기
 
void main(int) {
 
    int num;
    char *name;
    int *sco;//국어,영어,수학,합계
    float *avg;
 
    cout << "몇명 입력할거야?" << endl;
    cin >> num;
 
    name = new char[num * 10];//한사람당 10글자
    sco = new int[num * 4];//한사람당 국어,영어,수학,합계
    avg = new float[num];//한사람당 평균
 
    input(num, name, sco);//주소 보내기
    ex(num, sco, avg);
    output(num, name, sco, avg);
 
 
    delete[]name;
    delete[]sco;
    delete[]avg;
}
 
void input(int num, char *name, int *sco) {
 
 
 
    for (int i = 0; i < num; i++)
    {
        cout << "이름 입력:" << endl;
        cin >> name;
        cout << "성적 입력:" << endl;
        for (int j = 0; j < 3; j++)
        {
            cin >> sco[j];
        }
        //배열의 일괄처리
        name += 10;
        //name=name+10;
        //한바퀴 돌면 name의 10칸 움직인 다음 다시 for로 돌아감
        sco += 4;
        //sco=sco+4;
        //한바퀴 돌면 sco의 4칸 움직인 다음 다시 for로 돌아감
 
    }
 
 
}
void ex(int num, int *sco, float *avg) {
    for (int i = 0; i < num; i++)
    {
        *(sco +(i*4)+ 3= 0;
        //쓰레기값 처리. 한칸을 무조건 비워두면 안됨
        for (int j = 0; j < 3; j++)
        {
            *(sco +(i*4)+ 3+= *(sco+(i*4+ j);
        }
        *(avg+i) = *(sco+(i*4+ 3/ 3.f;
    }
}
void output(int num, char *name, int *sco, float *avg) {
 
    for (int i = 0; i < num; i++)
    {
        cout << "----------------------" << endl;
        cout << name + (i * 10<< endl;
        //배열 전체를 출력해야하기 때문에 name의 주소값을 적음
        for (int j = 0; j < 4; j++)
        {
            cout << *(sco +(i*4)+ j) << endl;
            //배열의 한 요소씩 출력해야하기 때문에 *을 붙임
        }
        cout << *(avg+i) << endl;
        //배열의 한 요소를 출력해야하기 때문에 *을 붙임
    }
}
 
 
 
 
 
cs
반응형

'Programming > C++' 카테고리의 다른 글

[c++]소멸자함수  (2) 2018.03.07
[c++]복사생성자  (0) 2018.03.07
[c++]class, 생성자  (0) 2018.03.07
[c++]다차원포인터를 이용한 성적프로그램  (0) 2018.03.06
[c++] 함수 중복 정의, overloading, 오버로딩  (2) 2018.03.06
댓글
공지사항