#include <iostream>
#include <string>
using namespace std;
class String { //string 클래스 선언
string s, back; // 입력받을 문자열과 거꾸로 문자열이 들어갈 문자열변수 선언
public:
String() { //생성자
cout << "뒤집을 문자열을 입력하세요>> ";
getline(cin, s, '\n'); //띄어쓰기를 허용한 s 문자열 입력, Enter키를 누를시 종료
int length = s.length();// 길이를 정수형 변수로 선언, 문자열 길이 저장.
for (int i = 0; i <= length; i++) {//문자열 길이만큼 다음 행위 반복
string first = s.substr(length - i, 1);//입력받은 문자열의 제일 끝 문자를 저장
back += first;//제일끝 문자를 back 문자열에 저장, 위 과정 반복.
}
cout << back;//거꾸로 저장된 문자 출력
}
};
int main() {
String word;//객체 생성, 생성자 함수 실행
}
#include <iostream>
#include <string>
using namespace std;
class Player { // Player 클래스 선언
string name; //이름 Private화
public:
void getname(); //사람의 이름을 가져옴
string peoplename() { //사람 이름을 반환
return name;
}
};
void Player::getname() { //이름 입력 함수
cout << "참가자의 이름을 입력하세요. 빈칸 없이>>";
cin >> name; //name에 이름 입력
}
class WordGame { //WordGame 클래스 선언
int length; //단어의 길이 변수 선언
string firWord; //첫번째 단어 선언
string nextWord; //다음 단어 선언
public:
WordGame() { length = 0; firWord = "아버지"; }; //생성자 함수
bool equal(); //단어가 같은지 비교
void getword(); //단어를 받는 함수
void changeword(); //단어를 변경하는 함수
};
void WordGame::getword() { //단어를 입력하고 저장하는 함수
cin >> nextWord; // 입력된 단어 저장
}
bool WordGame::equal() { //단어 비교
length = firWord.length(); //문자열 길이에 받은 문자열의 길이를 저장
if (firWord[length - 2] == nextWord[0] && firWord[length - 1] == nextWord[1]) { //두 단어를 비교, 한글은 2바이트이기 떄문에 2바이트를 비교해줌.
changeword(); //마지막글자와 입력된 단어의 첫번째 글자가 같다면 마지막으로 입력된 단어를 변경
return 1; //변경됨
}
else {
return 0; //다름
}
}
void WordGame::changeword() { //단어를 변경해주는 함수
firWord = nextWord;//첫번째 단어와 이어진 단어 변경
}
int main() {
int num = 0; //사람 수
cout << "끝말 잇기 게임을 시작합니다." << endl;
cout << "게임에 참가하는 인원은 몇 명입니까?";
cin >> num; //사람 수 입력받음
Player* p = new Player[num]; //사람객체를 입력받은 사람 수 만큼 생성
for (int i = 0; i < num; i++) {//객체에 이름 입력
p[i].getname();
}
cout << "시작 단어는 아버지입니다." << endl;
int j = 0;
WordGame Game; //게임 객체 선언
while (1) { //break가 나올때까지 반복
cout << p[j].peoplename() << ">>"; //이름 입력
Game.getword(); //단어를 입력받음
if (Game.equal() == 0) { //끝말잇기 규칙 적용
cout << p[j].peoplename() << "이(가) 졌습니다.";
break;
}
j++; //4번을 넘는지 확인하기 위한 변수
if (j >= num)
j = 0; //횟수가4를 넘으면 처음으로 돌아감
}
delete[] p;//new 연산자 반환
}
#include <iostream>
using namespace std;
int GCD(int a, int b) {//최대공약수를 구하는 함수
int tmp;//변수 선언
while (b) {//반복루프
tmp = a; //tmp에 a값 대입 1.
a = b; //a에 b의 값 대입 2.
b = tmp % b;//tmp를 b로 나눈 나머지 를 b에 대입 3. (다시 1로)
}
return a; //a 반환
}
void LCD(int& a, int& b, int& lcd) {//call by reference 참조변수선언
lcd = (a * b / GCD(a, b)); //최소공배수를 구하는 공식
}
int main() {
int a = 0, b = 0, gcd = 0, lcd = 0;//최대공약수 최소공배수 변수 초기화
cout << "양의 정수 a를 입력하세요>> ";
cin >> a;//a 입력
cout << "양의 정수 b를 입력하세요>> ";
cin >> b;//b입력
gcd = GCD(a, b); //lvalue에 오른쪽 값을 입력
LCD(a, b,lcd); //함수선언 (참조 변수로 선언해줘야 맞는 값 얻을 수 있으므로)
cout << "정수 " << a << ", " << b << "의 최대공약수는 " << gcd << ", " << "최소공배수는 " << lcd << "입니다. ";
}
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;
class String { //String Class선언
int len_;//정수형 변수 선언
char* str_;//문자열 포인터 선언, private
public:
String(const char* str) {//char* 선언하기 위해 const 붙여줌
len_ = strlen(str);//문자열 길이 입력
str_ = new char[len_ + 1]; //new 연산자 이용, 기존 문자열+1개의 문자열
strcpy(str_, str); //문자열 복사
}
void Print() { //print 함수
cout << str_ << endl; //복사한 문자열 출력
delete[] str_;// delete연산자 사용, new 연산자 반환
}
};
void ShowString(String str) {//showstring 함수
str.Print();//매개변수(문자열)객체에 대한 print함수 사용
}
int main() {
String str1 = "C++ programming";//str1은 C++ Programming
ShowString(str1);//C++programming을 String class에 적용 후 연계과정 진행
}
'Electronic Engineering > C++' 카테고리의 다른 글
C++ 실습 과제 마지막 (0) | 2022.07.05 |
---|---|
C++ 실습 과제 3 (0) | 2022.07.05 |
C++ 실습 과제 (0) | 2022.07.05 |
C언어 Level Test (0) | 2022.07.05 |
2022 인하대학교 프로그래밍 대회 참가 후기 (0) | 2022.05.21 |