반응형
1. 10x10 배열 만들어서 아이템 세개 심기
#include <iostream>
#include<cstdlib> //랜덤함수 s사용
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(nullptr);
char map[10][10];
char item[3] = { 'a','b','c' };
char stand = 'O';
//배열 기본값 세팅
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
map[i][j] = 'O';
}
}
// 랜덤으로 a,b,c 삽입
for (int i = 0; i < 3; i++) {
int a= rand() % 10;
int b = rand() % 10;
//중복 예외처리
if(strcmp(&map[a][b],&stand)) //char 비교하
map[a][b] = item[i];
else
i--; // 다시 기회주기
}
//출력
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
cout << map[i][j];
}
cout << endl;
}
}
나는 char 배열을 만들고 char 아이템을 랜덤으로 끼어넣는 식으로 코드를 짰다.
해보니 이론상 맞아보여도 실행하니 이상한 한자가 가득 나왔다.
교수님 코드를 참고해보니 나와 전혀 다른 코드였다.
오기가 생겨서 내 코드를 밀고 가다가 여러가지 정보를 알게 되었다.
1. int arr[][]={0,} 하면 0으로 세팅된다. 이는 int형에서만 사용가능하다
2. char 형을 비교할 때에는 strcmp(&a,&b) 를 사용해야한다.
3. for문에서 예외처리를 할때 else 구문에 i-- 를 넣으면 간편하다.
내 코드가 분명 교수님 코드보다 낫다고 할수가 없기에 교수님 코드도 첨부한다.
#include<iostream>
#include<string>
#include<ctime>
using namespace std;
int main() {
const int ROW = 10;
const int COL = 10;
int arr[ROW][COL] = { 0, };
string item[4] = { "□","★","※","●" };
srand((unsigned)time(NULL));
for (int i = 1; i <= 3; i++) {
int randRow = rand() % 10;
int randCol = rand() % 10;
if (arr[randRow][randCol] ==0)
arr[randRow][randCol] = i;
else
i--;
}
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
switch (arr[i][j]) {
case 0:
cout << item[0]; break;
case 1:
cout << item[1]; break;
case 2:
cout << item[2]; break;
case 3:
cout << item[3]; break;
}
}
cout << endl;
}
}
2. 좌석 예약 프로그램 : 빈좌석을 입력 받으면 예약 완료, 예약된 자석을 선태하면 예약 불가
//좌석 예약 프로그램 : 빈좌석을 입력 받으면 예약 완료, 예약된 자석을 선태하면 예약 불가
#include <iostream>
#include<cstdlib> //랜덤함수 s사용
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(nullptr);
const int low = 6;
const int col = 4;
bool seat[low][col];
int full = low * col;
//char L[low] = { 'A','B', 'C', 'D', 'E', 'F' };
// 자리 false로 세팅
for (int i = 0; i < low; i++) {
for (int j = 0; j < col; j++) {
seat[i][j] = false;
}
}
do {
//자리 출력
cout << ' ';
for (int j = 0; j < col; j++) {
cout << '\t' << (j + 1);
}
cout << endl;
for (int i = 0; i < low; i++) {
cout << char('A'+i);
for (int j = 0; j < col; j++) {
cout << '\t';
if (seat[i][j]) cout << "○";
else cout << "●";
}
cout << endl;
}
cout << "앉을 자리를 입력하세요(ex A 4)";
char A;
int B;
cin >> A >> B;
if (!seat[int(A - 'A')][B - 1]) {
seat[int(A - 'A')][B - 1] = true;
full--;
cout << "예약완료" << endl;
}
else {
cout << "예약불가" << endl;
}
} while (full != 0);
}
이것 또한 교수님이랑 전혀 다르게 코드를 짰다.
하지만 내 코드가 맘에 드니까 그냥 해야지
반응형
'학부내용 예습 > [ 2021 겨울 ] C++' 카테고리의 다른 글
[ C++ ] 6강. 동적할당 (0) | 2022.01.28 |
---|---|
[ C++ ] 5강. 포인터 배열, 문자열 배열, 참조자, 함수 (0) | 2022.01.26 |
[ C++ ] 3강. 배열 / 실습 코드 (0) | 2022.01.04 |
[ C++] 1강 2강. 실습 코드 (0) | 2022.01.03 |
[ C++ ] 1강 2강. C++ 소개와 기본 입출력 (0) | 2021.12.29 |