(adsbygoogle = window.adsbygoogle || []).push({ google_ad_client: "ca-pub-8242763509535969", enable_page_level_ads: true }); 'code' 카테고리의 글 목록 (8 Page) :: 깜냥깜냥
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
#include<iostream>
#include<string>
#pragma warning(disable:4996)
using namespace std;
class A {
    int a;
public:
    A(int a) {
        this->a = a;
    }
    void disp() { cout <<"A::"<< a << endl; }
};
 
class B :virtual public A {
    int b;
public:
    B(int a, int b) :A(a) {
        this->b = b;
    }
    void disp() { cout <<"B::"<< b << endl; }
};
 
class C: public virtual A{
    int c;
public:
    C(int a, int c) :A(a) {
        this->c = c;
    }
    void disp() { cout <<"C::"<< c << endl; }
};
 
class D : public B,public C {
    int d;
public:
    D(int a, int b, int c, int d):B(a,b),C(a,c),A(a){
        this->d = d;
    }
    void disp() { cout <<"D::"<< d << endl; }
};
 
void main() {
    D dd(1,2,3,4);
    dd.disp();
    dd.C::disp();
    dd.B::disp();
    dd.A::disp();//virtual(가상 상속)을 하지 않으면 모호해서 에러가 떠야하는데 안 뜹니다.
                 //높은 버전에서는 에러가 뜨지 않습니다.
}


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

[C++] protected 상속  (0) 2017.04.20
[C++] public 상속  (0) 2017.04.20
[C++] 성적처리 동적리턴  (0) 2017.04.20
[C++] 성적관리-동적할당  (0) 2017.04.20
[C++] Stack&Queue (예외처리, 소멸자 포함)  (0) 2017.04.20
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
#include<iostream>
 
using namespace std;
 
void hNum(int &num);
void input(int num,char name [][10],int score[][4]);
void oper(int num,int score[][4], float avg[]);
void disp(int num,char name[][10],int score[][4],float avg[]);
int wmam(int num,char (**name)[10],int (**score)[4],float **avg);
void ddelete(char name[][10],int score[][4], float avg[]);
int *reScore(int num);
char *reNamee(int num);
float *reAvg(int num);
 
const static char scoName[6][10]={"Name","Kor","Eng","Mat","Total","Avg"};
void main(){
 
    int num=0;
    char(*name)[10]={0,};
    int (*score)[4]={0,};
    float (*avg)={0,};
 
    hNum(num);
    name=(char(*)[10])reNamee(num);
    score=(int(*)[4])reScore(num);
    avg=(float (*))reAvg(num);
 
    input(num,name,score);
    oper(num,score,avg);
    disp(num,name,score,avg);
 
    ddelete(name,score,avg);
}
void hNum(int &num){
    cout<<"How many people? ";
    cin>>num;
}
 
void ddelete(char name[][10],int score[][4], float avg[]){
    delete[]name;
    delete[]score;
    delete[]avg;
}
 
char *reNamee(int num){
    return new char [num*10];
}
 
int *reScore(int num){
    return new int [num*4];
}
 
float *reAvg(int num){
    return new float[num];
}
 
void input(int num,char name [][10],int score[][4]){//void input(char name[][10],int score[][4])
    for(int i=0;i<num;i++){
        cout<<*scoName<<" Input: "//항상 주소는 1차 주소값으로
        cin>>*(name+i);
 
        for(int j=0;j<3;j++){
            cout<<scoName[j+1]<<" Input: ";
            cin>>score[i][j];
        }
    }
}
void oper(int num,int score[][4], float avg[]){
 
    for(int i=0;i<num;i++){
        score[i][3]=0;
        for(int j=0;j<3;j++){
            score[i][3]+=score[i][j];
        }
        avg[i]=score[i][3]/3.f;
    }    
}
void disp(int num,char name[][10],int score[][4],float avg[]){
    for(int i=0;i<6;i++){
        cout<<scoName[i]<<"\t";
    }
    cout<<endl;
    for(int i=0;i<num;i++){
        cout<<name[i]<<"\t"//항상 주소는 1차 주소값으로
        for(int j=0;j<4;j++){
            cout<<score[i][j]<<"\t";
        }
        cout<<avg[i]<<endl;
    }
}


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

[C++] public 상속  (0) 2017.04.20
[C++] 다중 상속  (0) 2017.04.20
[C++] 성적관리-동적할당  (0) 2017.04.20
[C++] Stack&Queue (예외처리, 소멸자 포함)  (0) 2017.04.20
[C++] 오버로딩-암시적 오버로딩  (0) 2017.04.20
몇 명을 받는지에 대한 동적할당입니다.
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
#include<iostream>
#include<cstring>
 
#pragma warning(disable:4996)
using namespace std;
 
class Student{
private:
    char name[10];/////////////세 사람 성적 구하기
    int score[4];//국,영,수,총
    float avg;//평균
public:
    void setName(){
    cin>>name;
    }
    char *getName(){
    return name;
    }
 
    void setscore(int a){
    cin>>score[a];
    }
    int getscore(int a){
    return score[a];
    }
        
    int getTot(){
    return score[3]=score[0]+score[1]+score[2];
    }
    
    float getAvg(){
    return avg=score[3]/3.f;
    }
 
};
void main()
{
    int num;
    char a;
    int b;
 
    cout<<"How many people?";
    cin>>num;
 
    Student *sc;
    sc=new Student[num];
    
    for(int i=0;i<num;i++){
        cout<<"Name input: ";
        sc[i].setName();
 
        for(int j=0;j<3;j++){
            cout<<"Score input: ";
            sc[i].setscore(j);
        }
    }
 
    for(int i=0;i<num;i++){
        cout<<sc[i].getName()<<"\t";
        for(int j=0;j<3;j++){
            cout<<sc[i].getscore(j)<<"\t";
        }
        cout<<sc[i].getTot()<<"\t";
        cout<<sc[i].getAvg()<<endl;
    }
    delete []sc;
}


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

[C++] 다중 상속  (0) 2017.04.20
[C++] 성적처리 동적리턴  (0) 2017.04.20
[C++] Stack&Queue (예외처리, 소멸자 포함)  (0) 2017.04.20
[C++] 오버로딩-암시적 오버로딩  (0) 2017.04.20
[C++] 오버로딩- 명시적 로딩  (0) 2017.04.20
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include<iostream>
using namespace std;
 
const int MAX = 10;
class Memory {
 
protected:
    int *data;
    int top;
    int front;
 
public:
    Memory() {
        data = new int[10];
        top = 0;
    }
    void push(int num) {
        if (top == MAX) {
            cout << "FULL!!" << endl;
            return;
        }
        else {
            data[top++] = num;
        }
    }
    virtual int pop() = 0;
    virtual ~Memory() {
        delete[]data;
        cout << "소멸자 함수" << endl;
    }
};
 
class Stack :public Memory {
public:
    int pop() {
        if (top == 0) {
            cout << "EMPTY!!!" << endl;
            return 0;
        }
        else {
            return data[--top];
        }
    }
};
 
class Queue :public Memory {
 
public:
    Queue() {
        front = 0;
    }
    int pop() {
        if (top == front) {
            cout << "EMPTY!!!" << endl;
            return 0;
        }
        else {
            if (front==MAX) {
                front = 0;
            }
                return data[(front++)];
            }
        }
};
 
void main() {
    Stack s;
    Queue q;
    Memory *p;
 
    int num;
    int a;
 
    do {
        cout << "1.stack" << "\t" << "2.queue" << "\t" << "3.Quit" << endl;
        cin >> num;
 
        if (num == 1) {
            p = &s;
        }
        else if (num == 2) {
            p = &q;
 
        }
        else if (num == 3) {
            continue;
        }
        else {
            cout << "Not num" << endl;
            cout << "Bye" << endl;
            num = 3;
            continue;
        }
 
        cout << "1.push" << "\t" << "2.pop" << endl;
        cin >> num;
 
        if (num == 1) {
 
            cout << "Data input : ";
            cin >> a;
            p->push(a);
 
 
        }
        else {
            cout << " output Data : " << p->pop() << endl;
        }
    } while (num != 3);
}


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

[C++] 다중 상속  (0) 2017.04.20
[C++] 성적처리 동적리턴  (0) 2017.04.20
[C++] 성적관리-동적할당  (0) 2017.04.20
[C++] 오버로딩-암시적 오버로딩  (0) 2017.04.20
[C++] 오버로딩- 명시적 로딩  (0) 2017.04.20
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
/*
    디폴트 인자값(암시적 오버로딩)
 
    함수의 매개변수의 값을 미리 초기화 시켜 사용하는 것
 
    디폴트 인자값을 하나만 적을 순 없음(void a(int a=0,int b)Xx,void a(int a=0,int b=0)Oo)
 
    ex. void aa(int a=1,int b=2)
 
    주의사항
    1.초기화를 한 매개변수 뒤에 있는 매개변수는 무조건 초기화해야한다.
    2.명시적 오버로딩과 충돌을 피해야 한다.(ANSI에서 금지화하고 있음)
 
*/
#include<iostream>
 
using namespace std;
 
void disp(int a=0,int b=0,int c=0);
 
void main(){
    int a=1;
    int b=2;
    int c=3;
 
    disp();//0,0,0
    disp(a);//1,0,0
    disp(a,b);//1,2,0
    disp(a,b,c);//1,2,3
}
 
void disp(int a,int b,int c){
    cout<<a<<","<<b<<","<<c<<endl;
}


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

[C++] 다중 상속  (0) 2017.04.20
[C++] 성적처리 동적리턴  (0) 2017.04.20
[C++] 성적관리-동적할당  (0) 2017.04.20
[C++] Stack&Queue (예외처리, 소멸자 포함)  (0) 2017.04.20
[C++] 오버로딩- 명시적 로딩  (0) 2017.04.20

+ Recent posts