1번
#include <iostream>
#include <string>
using namespace std;
template <class T>
T biggest(T arr[], int n) {
T max = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max) max = arr[i];
}
return max;
}
int main() {
int x[] = { 1, 10, 100, 5, 4 };
cout << biggest(x, 5) << endl;
}
2번
#include <iostream>
using namespace std;
template <class T>
bool equalArrays(T a[], T b[], int n){
for(int i=0;i<n;i++)
if (a[i]!=b[i]) return false;
return true;
}
int main(){
int x[]={1,10,100,5,4};
int y[]={1,10,100,5,4};
double a[]={1.1, 2.3};
double b[]={3.3, 2.3};
if(equalArrays(x,y,5)) cout<<"같다"<<endl;
else cout<<"다르다"<<endl;
if(equalArrays(a,b,5)) cout<<"같다"<<endl;
else cout<<"다르다"<<endl;
}
3번
#include <iostream>
using namespace std;
template <class T>
void reverseArray(T arr[], int n) {
for (int i = 0; i < n / 2; i++) {
T tmp = arr[i];
arr[i] = arr[n - i - 1];
arr[n - i - 1] = tmp;
}
}
int main() {
int x[] = { 1,10,100,5,4 };
for (int i = 0; i < 5; i++) cout << x[i] << ' ';
cout << endl;
reverseArray(x, 5);
for (int i = 0; i < 5; i++) cout << x[i] << ' ';
}
4번
#include <iostream>
using namespace std;
template <class T>
bool search(T target, T arr[], int n){
for(int i=0;i<n;i++)
if(arr[i]==target) return true;
return false;
}
int main(){
int x[]={1,10,100,5,4};
if(search(100,x,5)) cout<<"100이 x에 포함되어 있다"<<endl;
else cout<<"100이 배열 x에 포함되어 있지 않다"<<endl;
if(search(3,x,5)) cout<<"3이 x에 포함되어 있다"<<endl;
else cout<<"3이 배열 x에 포함되어 있지 않다"<<endl;
}
5번
#include <iostream>
using namespace std;
template <class T>
T* concat(T a[], int sizea, T b[], int sizeb) {
T* p = new T[sizea + sizeb];
for (int i = 0; i < sizea; i++)
p[i] = a[i];
for (int i = 0; i < sizeb; i++)
p[i + sizea] = b[i];
return p;
}
int main() {
double x[] = { 1.1,2.2,3.3,4.4,5.5 };
double y[] = { -1, -2, -3, -4 };
double* p = concat(x, 5, y, 4);
for (int i = 0; i < 9; i++) cout << p[i] << ' ';
cout << endl;
delete[]p;
}
6번
#include <iostream>
using namespace std;
template <class T>
T* remove(T src[], int sizeSrc, T minus[], int sizeMinus, int& retSize) {
T* tmp = new T[sizeSrc + sizeMinus];
int size = 0, i, j;
for (i = 0; i < sizeSrc; i++) {
for (j = 0; j < sizeMinus; j++)
if (src[i] == minus[j]) break;
if (j == sizeMinus) tmp[retSize++] = src[i];
}
return tmp;
}
int main() {
double x[] = { 1.1,2.2,3.3,4.4,5.5 };
double y[] = { 2.2,3.3 };
int retSize = 0;
double* p = remove(x, 5, y, 2, retSize);
for (int i = 0; i < retSize; i++) cout << p[i] << ' ';
cout << endl;
}
7번
#include <iostream>
using namespace std;
class Circle{
int radius;
public:
Circle(int radius=1){this->radius=radius;}
int getRadius(){return radius;}
};
template <class T>
T bigger(T a, T b){return a>b?a:b;}
Circle bigger(Circle a, Circle b){
if(a.getRadius()>b.getRadius()) return a;
else return b;
}
int main(){
int a=20, b=50, c;
c=bigger(a,b);
cout<<"20과 50 중 큰 값은 "<<c<<endl;
Circle waffle(10), pizza(30), y;
y=bigger(waffle, pizza);
cout<<"waffle(10)과 pizza(30) 중 큰 것의 반지름은 "<<y.getRadius()<<endl;
}
8번
#include <iostream>
using namespace std;
class Comparable {
public:
virtual bool operator > (Comparable& op2) = 0;
virtual bool operator < (Comparable& op2) = 0;
virtual bool operator == (Comparable& op2) = 0;
};
class Circle : public Comparable {
int radius;
public:
Circle(int radius = 1) { this->radius = radius; }
int getRadius() { return radius; }
bool operator > (Comparable& op2) {
Circle* c;
c = (Circle*)&op2;
if (this->radius > c->getRadius())
return true;
return false;
}
bool operator < (Comparable& op2) {
Circle* c;
c = (Circle*)&op2;
if (this->radius < c->getRadius())
return true;
return false;
}
bool operator == (Comparable& op2) {
Circle* c;
c = (Circle*)&op2;
if (this->radius == c->getRadius())
return true;
return false;
}
};
template <class T>
T bigger(T a, T b) {
if (a > b) return a;
else return b;
}
int main() {
int a = 20, b = 50, c;
c = bigger(a, b);
cout << "20과 50중 큰 값은 " << c << endl;
Circle waffle(10), pizza(20), y;
y = bigger(waffle, pizza);
cout << "waffle과 pizza 중 큰 것의 반지름은 " << y.getRadius() << endl;
}
9번
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v;
while (true) {
int n, sum = 0;
cout << "정수를 입력하세요(0을 입력하면 종료) >> ";
cin >> n;
if (n == 0) break;
v.push_back(n);
for (int i = 0; i < v.size(); i++) {
cout << v[i] << ' ';
sum += v[i];
}
cout << endl << "평균 = " << sum / v.size() << endl;
}
}
10번
#include <iostream>
#include <vector>
#include <stdlib.h>
#include <time.h>
using namespace std;
class Nation{
string nation;
string capital;
public:
Nation(string n, string c){
nation=n;capital=c;
}
string getNation(){return nation;}
string getCapital(){return capital;}
};
int main(){
Nation Kor("대한민국", "서울"), US("미국", "워싱턴"), Japan("일본", "도쿄");
vector<Nation> v;
v.push_back(Kor);
v.push_back(US);
v.push_back(Japan);
cout<<"***** 나라의 수도 맞추기 게임을 시작합니다. *****"<<endl;
while(true){
int get;
cout<<endl<<"정보 입력: 1, 퀴즈: 2, 전체 출력 : 3, 종료: 4 >> ";
cin>>get;
if(get==4) break;
if(get==1){
cout<<"현재 "<<v.size()<<"개의 나라가 입력되어 있습니다."<<endl;
cout<<"나라와 수도를 입력하세요(no no 이면 입력끝)"<<endl;
cin.ignore(1, '\n');
while(true){
string nation,capital;
int check=0;
cout<<v.size()+1<<">>";
getline(cin, nation, ' ');
getline(cin, capital);
if(nation=="no" && capital=="no") break;
for(int i=0;i<v.size();i++){
if(nation==v[i].getNation()){
cout<<"already exists !!"<<endl;
check=1;
break;
}
}
if(check==0){
Nation p(nation, capital);
v.push_back(p);
}
}
}
if(get==2){
while(true){
string capital;
srand(time(NULL));
int ran=rand()%v.size();
cout<<v[ran].getNation()<<"의 수도는?(종료는 exit) >> ";
cin>>capital;
if(capital=="exit") break;
if(capital==v[ran].getCapital()) cout<<"Correct !!"<<endl;
else cout<<"NO !!"<<endl;
}
}
if(get==3){
for(int i=0;i<v.size();i++)
cout<<i<<" : "<<v[i].getNation()<<" "<<v[i].getCapital()<<endl;
}
}
}
'대학교 수업 > C++ 프로그래밍' 카테고리의 다른 글
[C++] 명품 C++ 프로그래밍 9장 (0) | 2022.06.09 |
---|---|
[C++] 명품 C++ 프로그래밍 9장 OpenChallenge (0) | 2022.06.09 |
[C++] 명품 C++ 프로그래밍 8장 OpenChallenge (0) | 2022.06.09 |
[C++] 명품 C++ 프로그래밍 7장 OpenChallenge (0) | 2022.06.09 |
[C++] 명품 C++ 프로그래밍 8장 (0) | 2022.06.08 |