C++ 2단원 실습과제 1
#include <iostream>
#include <cstring>
using namespace std;
int strcmp(const char* s1, const char* s2);
int GetMin(int x, int y)
{
return x < y ? x : y;
}
double GetMin(double x, double y)
{
return x < y ? x : y;
}
char *GetMin(char* x, char* y)
{
return strcmp(x, y) < 0 ? x : y;
}
int GetMin(int arr[], int size)
{
int min = arr[0];
for(int i = 1; i< size; i++)
if(arr[i] < min)
min = arr[i];
return min;
}
int main()
{
int a, b;
cout << "두개의 정수를 입력하세요 : ";
cin >> a >>b;
cout <<"최소값은 "<< GetMin(a, b) <<"입니다.\n";
double c,d;
cout << "두개의 실수를 입력하세요 : ";
cin >> c >> d;
cout << "최소값은 " << GetMin(c, d) <<"입니다.\n";
char s1[20], s2[20];
cout << "두개의 문자열을 입력하세요 : ";
cin >> s1 >> s2;
cout << "최소값은 : "<< GetMin(s1, s2) << "입니다.\n";
int arr[] = {2, 19, 34, 387, 1, 45, 78, 45, 11, 29};
cout << "배열을 원소 : ";
for(int i = 0; i< 10; i++)
cout<< arr[i] <<" ";
cout <<"\n최소값은 " << GetMin(arr, 10) << "입니다.\n";
return 0;
}
C++ 2단원 실습과제 2
#include <iostream>
using namespace std;
template Sort(T *arr, int size)
{
for(int i = 0; i< size-1; i++)
{
for(int j = i+1; j< size; j++)
{
if(arr[i] > arr[j])
{
T temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
int main()
{
char menu;
while(true)
{
//메뉴 출력
cout << "1. 정수 정렬\n";
cout << "2. 실수 정렬\n";
cout << "3. 종료\n";
cout << "메뉴 선택 : ";
cin >> menu;
if(menu == '3')
break;
switch(menu)
{
case '1':
{
int arr[5];
cout << "5개의 정수를 입력하세요 : ";
for(int i = 0; i< 5; i++)
cin >> arr[i];
Sort(arr,5);// 암시적 인스턴스화
cout << "정렬 결과 : ";
for(i = 0; i< 5; i++)
cout << arr[i] << " ";
cout << "\n";
break;
}
case '2':
{
double arr[5];
cout << "5개의 실수를 입력하세요 : ";
for(int i = 0; i< 5; i++)
cin >> arr[i];
Sort(arr,5);// 명시적 인스턴스화
cout << "정렬 결과 : ";
for(i = 0; i< 5; i++)
cout << arr[i] << " ";
cout << "\n";
break;
}
break;
default:
cout << "잘못 입력하셨습니다.\n";
continue;
}
}
return 0;
}
C++ 3단원 실습과제 1
#include <iostream>
using namespace std;
namespace A
{
int data = 10;
void foo()
{
cout<< "foo 호출: "<<++data<<"\n";
}
};
namespace B
{
int data = 20;
void foo()
{
cout<< "foo 호출: "<<++data<<"\n";
}
}
void Test1()
{
using B::data;
cout<< "Test1의 data = "<<data<<"\n";
}
void Test2()
{
using namespace A;
cout<< "Test2의 data = "<<data<<"\n";
foo();
}
int main()
{
int data = 30;
cout << "data = " << data << "\n";
cout<< "A::data = "<<A::data<<"\n";
Test1();
Test2();
return 0;
}
C++ 3단원 실습과제 2
#include <iostream>
using namespace std;
int main()
{
int *data = NULL; // data 라는 NULL 공간을 만들어냄
int num;
cout<< "데이터의 개수를 입력하세요 : ";
cin >> num;
data = new int [num]; // new 를 사용해서 동적 할당 해주고 data에 주소를 넣어줌
for(int i=0; i<num; i++)
data[i] = rand() % 100; // *(data+i) 랑 같음
cout<< "생성된 데이터 : ";
for(i =0; i<num; i++)
cout << *(data+i)<<" ";
cout << "\n";
delete [] data; // delete 를 사용해서 동적 할당을 해제 해줌
data = NULL; // 다시 비워줌
return 0;
}
C++ 3단원 실습과제 3
#include <iostream>
using namespace std;
struct CUSTOMER
{
char name[10];
int age;
char sex;
};
void InputCustomer(CUSTOMER* &cust,int& maxCustomer,int& numCustomer);
void PrintCustomer(const CUSTOMER *cust,int numCustomer);
int main()
{
int max=10;
int num=0;
CUSTOMER *customer=new CUSTOMER[max];
char menu;
while(1)
{
cout<<"1. 고객 정보 입력"<<endl;
cout<<"2. 고객 정보 출력"<<endl;
cout<<"3. 종료"<<endl;
cout<<"메뉴선택 : ";
cin>>menu;
if(menu=='3')
break;
switch(menu)
{
case'1':
InputCustomer(customer,max,num);
break;
case'2':
PrintCustomer(customer,num);
break;
default:
cout<<"잘못 입력하셨습니다."<<endl;
continue;
}
}
delete[] customer;
customer=NULL;
return 0;
}
void InputCustomer(CUSTOMER* &cust,int& maxCustomer,int& numCustomer)
{
if(numCustomer==maxCustomer)
{
maxCustomer *= 2;
CUSTOMER *temp = new CUSTOMER[maxCustomer];
memcpy(temp,cust,sizeof(CUSTOMER)*numCustomer);
delete cust;
cust=temp;
}
cout<<"고객 이름 : ";
cin>>cust[numCustomer].name;
cout<<"나이 : ";
cin>>cust[numCustomer].age;
cout<<"성별(M, F) : ";
cin>>cust[numCustomer].sex;
numCustomer++;
}
void PrintCustomer(const CUSTOMER *cust,int numCustomer)
{
cout<<"-----------------------------------"<<endl;
cout<<"이름 나이 성별"<<endl;
cout<<"-----------------------------------"<<endl;
for(int a=0;a<numCustomer;a++)
{
cout.width(20);
cout.setf(ios_base::left);
cout<<cust[a].name;
cout.width(5);
cout<<cust[a].age;
cout<<cust[a].sex<<endl;
}
cout<<"-----------------------------------"<<endl;
}
C++ 3단원 실전연습문제 2
#include <iostream>
using namespace std;
namespace A
{
int data = 10;
void f1() {}
void f2() {}
};
namespace B
{
int data = 20;
char str[20];
void f1() {}
void f2() {}
void f3() {}
};
void f3()
{
using A::data;
using A::f1;
data = 100;
f1();
f2(); //에러발생 A::f2();
}
int main()
{
using namespace B;
A::data = 200;
f1();
f2();
f3(); //에러발생 ::f3();
return 0;
}
C++ 3단원 실전연습문제 4
#include <iostream>
using namespace std;
int main()
{
double *p = NULL;
int num;
cout << "실수의 개수를 입력하세요 : ";
cin >> num;
p= new double[num];
cout << num << "개의 실수를 입력하세요 :";
for(int i=0; i<num; i++)
cin >> p[i];
double *arr = p;
double min,max;
min = max = arr[0];
for(int i=1; i<num; i++)
{
if(arr[i] > max)
max = arr[i];
if(arr[i] < min)
min = arr[i];
}
cout << "최소값 : "<<min<<", 최대값 : "<<max<<"\n";
delete [] p;
for(int i=0; i<num;i++)
p[i]= 0.0;
delete [] arr; // new로 할당을 해준적이 없는데 해제 하기때문에 불필요함.
return 0;
}
'학습공간 > C++, MFC' 카테고리의 다른 글
[MFC] Modeless Dialog (대화상자), 계산기 프로그램 (0) | 2019.11.27 |
---|---|
[3주차] 생성자와 소멸자, 멤버 함수의 활용, 클래스의 활용 (this) (0) | 2019.11.27 |
[2주차] 객체 지향 프로그래밍 시작하기, 클래스의 기초 (멤버변수) (0) | 2019.11.27 |