int arr[2][5]; = ์๋ฃํ ๋ฐฐ์ด๋ช [์ธ๋กํฌ๊ธฐ][๊ฐ๋กํฌ๊ธฐ]; |
5๊ฐ์ ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ง 1์ฐจ์ ๋ฐฐ์ด์ด 2๊ฐ ์๋ค.
์ด ์์๋ 5 x 2 =10๊ฐ
2์ฐจ์ ๋ฐฐ์ด์ 1์ฐจ์ ๋ฐฐ์ด์ ์๋ฏธํ๋ ๋๊ดํธ์ ๋๊ดํธ๊ฐ ํ๋ ๋ ์ถ๊ฐ๋๋ค.
2์ฐจ์ ๋ฐฐ์ด์ด 2๊ฐ ์ด์ ์ฐ์๋๋ฉด, 3์ฐจ์ ๋ฐฐ์ด
int arr[3][3][3];
3๊ฐ์ ์ฐ์๋ ๊ณต๊ฐ์ ๊ฐ์ง 1์ฐจ์ ๋ฐฐ์ด์ด 3๊ฐ ์๊ณ , ์ด๋ฐ 2์ฐจ์ ๋ฐฐ์ด์ด ๋ค์ 3๊ฐ ์๋ค๋ ๋ป
์ฆ, 3 x 3ํฌ๊ธฐ์ 2์ฐจ์ ๋ฐฐ์ด์ด 3๊ฐ ์์ผ๋ฉฐ, ์ด ์์๋ 3 x 3 x 3 = 27๊ฐ์ด๋ค.
์ธ๋ก ํฌ๊ธฐ๋ ์๋ต ๊ฐ๋ฅ
int arr[][2];
๊ฐ์ ๋ชจ์์ ์นด๋ ๋ง์ถ๊ธฐ ๊ฒ์
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int arrayAnimal[4][5];
char* strAnimal[10]; // ๋๋ฌผ ์ด๋ฆ ๋ฐฐ์ด
int checkAnimal[4][5]; // ์นด๋ ๋ท๋ฉด, ์๋ฉด ํ์ธ ๋ฐฐ์ด ์ ์ธ
void initAnimalArray();
void initAnimalName();
void shuffleAnimal();
int getEmptyPosition();
int conv_pos_x(int x);
int conv_pos_y(int y);
void printAnimals();
void printQuestion();
int foundAllAnimals();
int main(void) {
int failCount = 0;
srand(time(NULL));
initAnimalArray();
initAnimalName();
shuffleAnimal();
while (1) {
int select1 = 0;
int select2 = 0;
printAnimals();
printQuestion();
printf("\n๋ค์ง์ ์นด๋ 2์ฅ์ ๊ณ ๋ฅด์ธ์. ์ 12 4 -> ");
scanf_s("%d %d", &select1, &select2);
if (select1 == select2) {
continue;
}
// ์
๋ ฅ๋ฐ์ ์นด๋ ๋ฒํธ๋ฅผ x, y ์ขํ๋ก ๋ฐํ
int firstSelectX = conv_pos_x(select1);
int firstSelectY = conv_pos_y(select1);
int secondSelectX = conv_pos_x(select2);
int secondSelectY = conv_pos_y(select2);
if ((checkAnimal[firstSelectX][firstSelectY] == 0
&& checkAnimal[secondSelectX][secondSelectY] == 0
&& (arrayAnimal[firstSelectX][firstSelectY] == arrayAnimal[secondSelectX][secondSelectY]))) {
// ๋ ์นด๋๊ฐ ๊ฐ์ ๋๋ฌผ์ด๊ณ ๋ท๋ฉด์ธ ๊ฒฝ์ฐ
printf("\n\n๋น๊ณ ! %s ๋ฐ๊ฒฌ\n\n", strAnimal[arrayAnimal[firstSelectX][firstSelectY]]);
checkAnimal[firstSelectX][firstSelectY] = 1;
checkAnimal[secondSelectX][secondSelectY] = 1;
}
else { // ๋ ์นด๋๊ฐ ๋ค๋ฅธ ๋๋ฌผ์ด๊ฑฐ๋ ์๋ฉด์ธ ๊ฒฝ์ฐ
printf("\n\n๋ก! ์๋ก ๋ค๋ฅธ ๋๋ฌผ ์นด๋๊ฑฐ๋ ์ด๋ฏธ ๋ค์งํ ์นด๋์
๋๋ค.\n");
printf("%d : %s\n", select1, strAnimal[arrayAnimal[firstSelectX][firstSelectY]]);
printf("%d : %s\n", select2, strAnimal[arrayAnimal[secondSelectX][secondSelectY]]);
printf("\n");
failCount++;
}
if (foundAllAnimals() == 1) {
printf("\n\n์ถํํฉ๋๋ค. ๋ชจ๋ ๋๋ฌผ์ ์ฐพ์์ต๋๋ค.\n");
printf("์ด %d๋ฒ ์คํจํ์์ต๋๋ค.\n", failCount);
break;
}
}
return 0;
}
void initAnimalArray() {
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 5; ++j) {
arrayAnimal[i][j] = -1; // ์นด๋ ๋ท๋ฉด ์ค์
}
}
}
void initAnimalName() {
strAnimal[0] = "์์ญ์ด";
strAnimal[1] = "ํ๋ง";
strAnimal[2] = "๊ฐ์์ง";
strAnimal[3] = "๊ณ ์์ด";
strAnimal[4] = "๋ผ์ง";
strAnimal[5] = "์ฝ๋ผ๋ฆฌ";
strAnimal[6] = "๊ธฐ๋ฆฐ";
strAnimal[7] = "๋ํ";
strAnimal[8] = "ํ์กฐ";
strAnimal[9] = "ํธ๋์ด";
}
void shuffleAnimal() {
for (int i = 0; i < 10; ++i) {
for (int j = 0; j < 2; ++j) {
int pos = getEmptyPosition();
int x = conv_pos_x(pos);
int y = conv_pos_y(pos);
arrayAnimal[x][y] = i;
}
}
}
int getEmptyPosition() {
while (1) {
int randPos = rand() % 20;
int x = conv_pos_x(randPos);
int y = conv_pos_y(randPos);
if (arrayAnimal[x][y] == -1) {
return randPos;
}
}
return 0;
}
int conv_pos_x(int x) {
return x / 5;
}
int conv_pos_y(int y) {
return y % 5;
}
void printAnimals() {
printf("\n ๋๋ฌผ ์์น๋ฅผ ๋ณด์ฌ์ค๋๋ค.\n");
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 5; j++) {
printf("%8s", strAnimal[arrayAnimal[i][j]]);
}
printf("\n");
}
printf("\n");
}
void printQuestion() {
printf("\n๋ฌธ์ \n\n");
int seq = 0;
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 5; ++j) {
if (checkAnimal[i][j] == 1) { // ์นด๋๊ฐ ์์ด๋ฉด
printf("%8s", strAnimal[arrayAnimal[i][j]]); // ๋๋ฌผ ์ด๋ฆ ์ถ๋ ฅ
}
else {
printf("%8d", seq); // ์นด๋ ๋ฒํธ ์ถ๋ ฅ
}
seq++; // ๋ค์ ์นด๋๋ก ๋์ด๊ฐ๊ธฐ
}
printf("\n");
}
}
int foundAllAnimals() {
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 5; ++j) {
if (checkAnimal[i][j] == 0) {
return 0; // ๋ค์ง์ง ์์ ์นด๋๊ฐ ์์
}
}
}
return 1; // ๋ชจ๋ ์นด๋ ๋ค์ง์
}
ํฌ์ธํฐ ๋ฐฐ์ด char * cPtr = "ํ ์คํธ";
ํฌ์ธํฐ ๋ณ์๊ฐ ์์๋ก ์๋ ๋ฐฐ์ด. ์ฆ, ํฌ์ธํฐ ๋ฐฐ์ด์ ์์์ ๊ฐ์ด ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ธ ๋ฐฐ์ด
charํ ํฌ์ธํฐ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ฉด charํ ๋ฐฐ์ด๊ณผ ๋ค๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ ์ ์ฉ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฅํ๋ค. ์ฝ๊ธฐ ์ ์ฉ์ด๋ผ์ ํ ๋ฒ ์ ์ธํ๊ณ ๋๋ฉด ๋ฐ์ดํฐ๋ฅผ ํธ์งํ ์ ์๋ค. ๊ทธ๋์ ์ฝ๋๊ฐ ์คํ๋๋ ๋์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์๋๋ค๋ฉด charํ ํฌ์ธํฐ ๋ฐฐ์ด์ ์ด์ฉํ๋ค.
๋ฌด์ธ ์ํ๊ธฐ ๋ง๋ค๊ธฐ
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int vendingMachine[3][4];
char* items[12];
void initArray();
void printItems();
void initItemName();
void shuffleItems();
int getEmptyPos();
int findX(int x);
int findY(int y);
int main(void) {
int input;
srand((unsigned int)time(NULL));
initArray();
initItemName();
shuffleItems();
while (1) {
printItems();
printf("๋ช ๋ฒ ์ํ์ ๊ตฌ๋งคํ์๊ฒ ์ต๋๊น?(1-12) ");
scanf_s("%d", &input);
if (input > 12 || input < 1) {
printf("์ํ ๋ฒํธ๋ฅผ ์๋ชป ์
๋ ฅํ์ต๋๋ค.\n");
continue;
}
else {
printf("๊ตฌ๋งคํ์ ์ํ์ %2d.%5s์
๋๋ค. ๊ฐ์ฌํฉ๋๋ค.\n", input, items[input - 1]);
exit(0);
}
}
}
void initArray() {
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 4; ++j) {
vendingMachine[i][j] = -1; // ์นด๋ ๋ท๋ฉด ์ค์
}
}
}
void printItems() {
int num = 1;
printf("์ ์ฒด ์ํ ๋ชฉ๋ก์ ์ถ๋ ฅํฉ๋๋ค.\n");
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 4; ++j) {
printf("%2d. %5s ", num, items[vendingMachine[i][j]]);
num++;
}
printf("\n");
}
printf("\n");
}
void initItemName() {
items[0] = "์ฐ์ ";
items[1] = "์ปคํผ";
items[2] = "์ฃผ์ค";
items[3] = "ํ์ฐ์๋ฃ";
items[4] = "์นธ์นฉ";
items[5] = "๊ฑฐ๋ถ์นฉ";
items[6] = "๊ฐ์์นฉ";
items[7] = "๊ณ ๊ตฌ๋ง์นฉ";
items[8] = "์ํ๋ณผ";
items[9] = "์ด์ฝ๋ฒ์ฏ";
items[10] = "๊ฐ์ฌ๊นก";
items[11] = "์จ๋ฆฌ์ผ";
}
void shuffleItems() {
for (int i = 0; i < 12; ++i) {
int pos = getEmptyPos();
int x = findX(pos);
int y = findY(pos);
vendingMachine[x][y] = i;
}
}
int getEmptyPos() {
while (1) {
int randPos = rand() % 20;
int x = findX(randPos);
int y = findY(randPos);
if (vendingMachine[x][y] == -1) {
return randPos;
}
}
return 0;
}
int findX(int x) {
return x / 4;
}
int findY(int y) {
return y % 4;
}
'๐ฉโ๐ป ํ๋ก๊ทธ๋๋ฐ > ๐ญ C' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C] ํ์ผ ์ ์ถ๋ ฅ | #define (1) | 2024.01.02 |
---|---|
[C] ๊ตฌ์กฐ์ฒด | typedef (1) | 2024.01.01 |
[C] ํฌ์ธํฐ | ๊ฐ์ ์ํ ํธ์ถ | ์ฐธ์กฐ์ ์ํ ํธ์ถ | clock() | ํ์ ํํฌ (0) | 2023.10.12 |
[C] ๋ฐฐ์ด | null | sizeof() | ์์คํค์ฝ๋ (0) | 2023.09.10 |
[C] ํจ์ (0) | 2023.09.10 |