무료
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결C 프로그래밍 - 입문부터 게임 개발까지
반올림 되는건가요?
double d = 4.428;printf("%2lf\n",d);이렇게 작성 시 4.43이 나오는데 반올림 되어 출력되는건가요?
- 미해결C 프로그래밍 - 입문부터 게임 개발까지
맥으로수강
맥으로 수강하기 괜찮을까요? 에어 m1입니다
- 미해결C 프로그래밍 - 입문부터 게임 개발까지
10-2
파일 쓰기 중에 계속 파일 열기 실패라고 뜨는데 혹시 파일을 만들어야하는건가요?
- 미해결C 프로그래밍 - 입문부터 게임 개발까지
질문이 있습니다
상당히 간단한 것일 수도 있겠지만 궁금한데여러 줄 주석 처리를 할 때 한 번에 묶는 것을 어떻게 하는지 알려주실 분 계신가요?
- 미해결C 프로그래밍 - 입문부터 게임 개발까지
3-3 for 반복문 ++i 일때 질문입니다.
for (int i = 0; i < 10; ++i) { printf("hello world %d\n", i);} 이렇게 코드를 변형해봤습니다.i == 0 인 상태에서반복문 첫번째 실행시 i == 1 이 되어 1부터 실행될거라 생각했습니다.그런데 0부터 시작합니다. 왜인지 이해되지 않습니다 ㅠㅠ
- 해결됨C 프로그래밍 - 입문부터 게임 개발까지
6-4(배열 파트 '문자 vs 문자열') sizeof 예제 다르게 출력되는 분들 참고하세요.
간혹 "나도코딩"의 sizeof 값이 13으로 나오는 분들이 있습니다. 저도 그랬습니다.해당 내용은 Encoding 방식의 차이 때문에 일어난 일입니다. 즉, 한글을 컴퓨터에 어떻게 저장할 것이냐의 차이인데, EUC-KR 혹은 CP949 방식으로는 나도코딩님처럼 한 글자가 2 byte를 차지하여 저장되지만, UTF-8 환경에서는 3 byte를 차지하게 되어 sizeof가 예제와 다르게 나오는 것입니다."만일"이라는 단어를 예시로 EUC-KR 환경이라면 sizeof가 5, UTF-8 환경이라면 sizeof가 7이 나오면 정상입니다. 즉 EUC-KR에서는 (2*n+1), UTF-8에서는 (3*n+1)의 값이 나오면 예제가 정상적으로 수행된 것입니다.저는 VSCode에서 실행하고 있는데 하단 오른쪽에 Encoding 방식을 설정할 수 있게 되어 있습니다. 수업에서 쓰는 에디터에서도 설정이 가능할 것 같은데, 확인해보지는 않았습니다.
- 미해결C 프로그래밍 - 입문부터 게임 개발까지
함수 선언과 정의를 동시에 해도 되나요?
//함수 선언 void p(int num); int main(void) { int num = 2; p(num); return 0; } void p(int num) //함수 정의 { printf("num은 %d입니다.\n",num); } 이것이 책 본문에 나와 있는 내용입니다.함수 선언따로 정의 따로 되어있는데요.혹시 아래와 같이 선언과 정의를 동시에 해도 되나요?//함수 선언 및 정의 void p(int num) { printf("num은 %d입니다.\n",num); } int main(void) { int num = 2; p(num); return 0; }
- 미해결C 프로그래밍 - 입문부터 게임 개발까지
빌드오류가 있다고 나오고, 지정된 파일을 찾을 수 없다고 오류가 나옵니다..
#include<stdio.h>#include<time.h>#include<stdlib.h>/*10마리의 서로다른 동물 (각 카드 2장씩)사용자로부터 2개의 입력값을 받아서 -> 같은 동물 찾으면 카드 뒤집기모든 동물 쌍을 찾으면 게임 종료총 실패 횟수 알려주기*/int checkAnimal[4][5]; //뒤집혔는지 여부 확인int arrayAnimal[4][5]; //카드 20장 - 4x5const char* strAnimal[10]; //10개의 배열 => 캐릭터포인터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){ srand(time(NULL)); initAnimalArray(); initAnimalName(); shuffleAnimal(); int failCount = 0; //실패 횟수 while (1) { int select1 = 0; //사용자가 선택한 처음 수 int select2 = 0; //사용자가 선택한 두번째 수 printAnimals(); //동물 위치 출력 printQuestion(); // 문제 출력 (카드지도) printf("뒤집을 카드 2개를 고르세요 : "); scanf_s("%d %d", &select1, &select2); if (select1 == select2) // 같은 카드 선택 시 무효 continue; //좌표에 해당하는 카드를 뒤집어보고 같은지 안같은지 확인 int firstSelect_x = conv_pos_x(select1); int firstSelect_y = conv_pos_y(select1); int secondSelect_x = conv_pos_x(select2); int secondSelect_y = conv_pos_y(select2); //정수좌표를 x,y로 변환 if (checkAnimal[firstSelect_x][firstSelect_y] == 0 && checkAnimal[secondSelect_x][secondSelect_y] == 0//카드가 뒤집히지 않앗는지 && arrayAnimal[firstSelect_x][firstSelect_y] == arrayAnimal[secondSelect_x][secondSelect_y])//두 동물이 같은지) { printf("\n\n빙고!! : %s 발견!!\n\n",strAnimal[arrayAnimal[firstSelect_x][firstSelect_y]]); checkAnimal[firstSelect_x][firstSelect_y] = 1; checkAnimal[secondSelect_x][secondSelect_y] = 1; } //다른 동물일 경우 else { printf("\n\n땡!!(틀렸습니다.. 혹은 이미 뒤집힌 카드입니다.)\n\n"); printf("%d : %s\n", select1, strAnimal[arrayAnimal[firstSelect_x][firstSelect_y]]); printf("%d : %s\n", select2, strAnimal[arrayAnimal[secondSelect_x][secondSelect_y]]); //틀린카드 알려주기 printf("\n\n"); failCount++; //실패횟수 +1 } //모든 동물을 찾았는지 여부. 1:참 , 0:거짓 if (foundAllAnimals() == 1) { 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; //0-19사이의 랜덤 숫자 반환 int x = conv_pos_x(randPos); int y = conv_pos_y(randPos); if (arrayAnimal[x][y] == -1) //초기에 -1로 설정했기때문에 -1이면 비어있다는 뜻 { return randPos; //현재 위치 반환 } } return 0;}int conv_pos_x(int x) //5로 나눴을 때 몫 /{ return x / 5;}int conv_pos_y(int y) //5로 나눴을 때 나머지 %{ 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=========================================\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] != 0) { printf("% 8s", strAnimal[arrayAnimal[i][j]]); } //아직 뒤집지 못했으면 (정답을 못맞혔으면) -> 뒷면 -> 위치를 나타내는 숫자 else { printf("%8d", 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;//모두 다 찾음}
- 미해결C 프로그래밍 - 입문부터 게임 개발까지
안녕하세요 좋은 강의와 책 감사드립니다!! 다름이 아니라 명령어를 실행시켰을 때 저런식으로 나와서 질문드립니다
위 사진처럼 프로그램을 진행시켰을때 위에부분이 잘려서 나옵니다.제가 코드를 잘못 친 것은 아닐까 하는 마음에 다른 코드들도 여러번 쳐봤으나 저런 경우가 꽤나 있습니다.무엇이 문제일까요??
- 미해결C 프로그래밍 - 입문부터 게임 개발까지
질문있습니다!
자꾸 알 수 없는 오류가 발생해서 여기저기 찾아보고 해결해보려고 헤더에 <stdlib.h>도 넣고 해봤고 나도코딩 님께서 올리신 소스코드를 그대로 복사 붙여넣기 해서 실행하는데도 아래 사진과 같은 상태로 에러가 나서 여쭤봅니다.혹시 왜 에러가 나는지, 그리고 그 해결법을 알 수 있을까요..?혹시 몰라 소스코드도 첨부합니다.#include <stdio.h>#include <time.h>#include <stdlib.h>// 10마리의 서로 다른 동물 (각 카드 2장씩)// 사용자로부터 2개의 입력값을 받아서 -> 같은 동물 찾으면 카드 뒤집기// 모든 동물 쌍을 찾으면 게임 종료// 총 실패 횟수 알려주기int arrayAnimal[4][5]; // 카드 지도 (20장의 카드)char* strAnimal[10]; // 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){ srand(time(NULL)); initAnimalArray(); initAnimalName(); shuffleAnimal(); int failCount = 0; // 실패 횟수 while (1) { int select1 = 0; // 사용자가 선택한 처음 수 int select2 = 0; // 사용자가 선택한 두번째 수 printAnimals(); // 동물 위치 출력 printQuestion(); // 문제 출력 (카드 지도) printf("뒤집을 카드를 2개 고르세요 : "); scanf_s("%d %d", &select1, &select2); if (select1 == select2) // 같은 카드 선택 시 무효 continue; // 좌표에 해당하는 카드를 뒤집어 보고 같은지 안 같은지 확인 // 정수 좌표를 (x,y) 로 변환 int firstSelect_x = conv_pos_x(select1); int firstSelect_y = conv_pos_y(select1); int secondSelect_x = conv_pos_x(select2); int secondSelect_y = conv_pos_y(select2); // 카드가 뒤집히지 않았는지 확인하고 같은 동물인지 확인 if ((checkAnimal[firstSelect_x][firstSelect_y] == 0 && checkAnimal[secondSelect_x][secondSelect_y] == 0) && (arrayAnimal[firstSelect_x][firstSelect_y] == arrayAnimal[secondSelect_x][secondSelect_y]) ) { printf("\n\n빙고! : %s 발견!\n\n", strAnimal[arrayAnimal[firstSelect_x][firstSelect_y]]); checkAnimal[firstSelect_x][firstSelect_y] = 1; checkAnimal[secondSelect_x][secondSelect_y] = 1; } else // 다른 동물인 경우 { printf("\n\n 땡!! (틀렸거나, 이미 뒤집힌 카드입니다)\n"); printf("%d : %s\n", select1, strAnimal[arrayAnimal[firstSelect_x][firstSelect_y]]); printf("%d : %s\n", select2, strAnimal[arrayAnimal[secondSelect_x][secondSelect_y]]); printf("\n\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(){ // ㅁㅁㅁㅁㅁ 0 1 2 3 4 // ㅁㅁㅁㅁㅁ 5 6 7 8 9 // ㅁㅁㅁㅁㅁ 10 11 12 13 14 // ㅁㅁㅁㅁㅁ 15 16 17 18 19 // 이 배열에서 빈 공간 두 곳에 랜덤으로 동물을 배치 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); // 반환한 값을 (x,y) 좌표로 변환 arrayAnimal[x][y] = i; } }}// 좌표에서 빈 공간 찾기int getEmptyPosition(){ while (1) { int randPos = rand() % 20; // 0~19 사이의 숫자 반환 // ex) 19 = (3,4) int x = conv_pos_x(randPos); int y = conv_pos_y(randPos); if (arrayAnimal[x][y] == -1) { return randPos; } } return 0; // int로 반환하는 함수이기 때문에 적은것이지, 큰 의미는 없음}int conv_pos_x(int x){ // ex) 19 = (3,4) return x / 5;}int conv_pos_y(int y){ return y % 5; // y를 5로 나눈 나머지 값}void printAnimals(){ printf("\n==================정답==================\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========================================\n\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] != 0) { 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;}
- 미해결C 프로그래밍 - 입문부터 게임 개발까지
질문드립니다
숫자를 입력하면 빙고! 이후에도 숫자에는 동물의 이름이 들어가지 않습니다 ㅠ
- 미해결C 프로그래밍 - 입문부터 게임 개발까지
scanf_s(" %d", &answer); 이후 바로 종료
이후 printf로 정답, 오답 여부가 안나오는데 뭐가 문제일까요? 검색으로 입력버퍼도 찾아봤는데 해결이 안되네요.
- 미해결C 프로그래밍 - 입문부터 게임 개발까지
질문 드립니다.
안녕하세요. 8번째 챕터 진행했는데, 컴파일 에러는 뜨지 않지만 이상하게 코드가 안 돌아가서 질문 드립니다. (참고로 비주얼 스튜디오가 깔리지 않아서, DEV-C++로 하고 있어 scanf_s가 아닌 scanf로 작성하고 있습니다) #include <stdio.h> #include <time.h> #include <iostream> #include <stdlib.h> #include <string> // 10마리의 서로 다른 동물 (각 카드 2장씩) // 사용자로부터 2개의 입력값을 받아서 -> 같은 동물 찾으면 카드 뒤집기 // 모든 동물 쌍을 찾으면 게임 종료 // 총 실패 횟수 알려주기 int arrayAnimal[4][5]; // 카드 지도 (20장의 카드) int checkAnimal[4][5]; // 뒤집혔는지 여부 확인 int foundAllAnimals(); const char * strAnimal[10]; 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 main(void) { srand(time(NULL)); initAnimalArray(); initAnimalName(); shuffleAnimal(); int failCount = 0; // 실패 횟수 while (1) { int select1 = 0; //사용자가 선택한 처음 수 int select2 = 0; //사용자가 선택한 두번째 수 printAnimals(); // 동물 위치 출력 printQuestion(); // 문제 출력 (카드 지도) printf("뒤집을 카드를 2개 고르세요 : "); scanf("%d %d" , &select1, &select2); if (select1 == select2) // 같은 카드 선택 시 무효 continue; // 좌표에 해당하는 카드를 뒤집어 보고 같은지 안같은지 확인 // 정수 좌표를 (x,y) 로 변환 int firstSelect_x = conv_pos_x(select1); int firstSelect_y = conv_pos_y(select1); int secondSelect_x = conv_pos_x(select2); int secondSelect_y = conv_pos_y(select2); // 같은 동물인 경우 if((checkAnimal[firstSelect_x][firstSelect_y] == 0 //카드가 뒤집히지 않았는지 && checkAnimal[secondSelect_x][secondSelect_y] == 0) && (arrayAnimal[firstSelect_x][firstSelect_y] == arrayAnimal[secondSelect_x][secondSelect_y]) ) //두 동물이 같은지 { printf("\n\n빙고! : %s 발견\n\n" , strAnimal[arrayAnimal[firstSelect_x][firstSelect_y]]); checkAnimal[firstSelect_x][firstSelect_y] = 1; checkAnimal[secondSelect_x][secondSelect_y] = 1; } // 다른 동물인 경우 else { printf("\n\n 땡!! (틀렸거나 이미 뒤집힌 카드입니다)) \n"); printf("%d : %s\n" , select1 , strAnimal[arrayAnimal[firstSelect_x][firstSelect_y]]); printf("%d : %s\n" , select2 , strAnimal[arrayAnimal[secondSelect_x][secondSelect_y]]); printf("\n\n"); failCount++; } // 모든 동물을 찾았는지 여부, 1 : 참, 0 : 거짓 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; i++) { 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() { // □□□□□ 0 1 2 3 4 -> 0 0 0 0 0 // □□□□□ 5 6 7 8 9 -> 1 1 1 1 1 // □□□□□ 10 11 12 13 14 -> 2 2 2 2 2 // □□□□□ 15 16 17 18 19 -> 3 3 3 3 3 while (1) { int randPos = rand() % 20; // 0 ~ 19 사이의 숫자 반환 // 19 -> (3,4) 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) { // 19 -> (3,4) return x / 5; } int conv_pos_y(int y) { // 19 -> 19 / 5 ? 몫은 3, 나머지 4 return y % 5; // y를 5로 나눈 나머지 값 } void printAnimals() // 동물 위치 출력 { printf("\n===== 이건 비밀인데.. 몰래 보여줍니다===\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=======================================\n\n"); } void printQuestion() // 문제 출력 (카드 지도) { printf("\n\n(문제)\n"); int seq = 0; // seq // checkAnimal // □□□□□ 0 1 2 3 4 0 0 0 0 0 // □□□□ 하마 6 7 8 9 1 0 0 0 0 // □□□□□ 10 11 12 하마 14 0 0 0 1 0 // □□□□□ 15 16 17 18 19 0 0 0 0 0 for (int i = 0; i < 4; i++) { for (int j = 0; j < 5; j++) { // 카드를 뒤집어서 정답을 맞혔으면 '동물 이름' if (checkAnimal[i][j] != 0) { printf("%8s" , strAnimal[arrayAnimal[i][j]]); } // 아직 카드를 뒤집지 못했으면 (정답을 못맞혔으면) 뒷면 -> 위치를 나타내는 숫자 else { printf("%8d" , seq); } } } } 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; // 모두 다 찾음 } 다음과 같이 작성했고, 컴파일시 에러는 뜨지 않지만 돌려볼 시 -------------------------------- Process exited after 3.839 seconds with return value 3221225725 계속하려면 아무 키나 누르십시오 . . .라고 나옵니다. 왜 이러는 걸까요?
- 미해결C 프로그래밍 - 입문부터 게임 개발까지
sizeof에서 오류가 나는 것 같아서 물어보고 싶습니다.
#include <stdio.h> int main(void) { char name[256]; printf("이름이 뭐에요? "); scanf_s("%s", name, sizeof(name)); int age; printf("몇살이세요? "); scanf_s("%d", &age); float weight; printf("몸무게는 몇 kg 이에요? "); scanf_s("%f", &weight); double height; printf("키는 몇 cm 이에요? "); scanf_s("%lf", &height); char what[256]; printf("어떤 범죄를 저질렀나요? "); scanf_s("%s", what, sizeof(what)); //조서 내용 출력 printf("\n\n--- 범죄자 정보 ---\n\n"); printf("이름 : %s\n", name); printf("나이 : %d\n", age); printf("몸무게 : %.2f\n", weight); printf("키 : %.2lf\n", height); pirntf("범죄 : %s\n", what); return 0; } 으로 코딩문을 작성했는데 C6328 크기 불일치: 'unsigned __int64'이(가) _Param_(3)으로 전달되었습니다. 다음 호출에는 'unsigned int'이(가) 필요합니다. 'scanf_s'. 라는 오류가 뜨는데 어디가 잘못된건지 잘 모르겠습니다.
- 해결됨C 프로그래밍 - 입문부터 게임 개발까지
bottle[randBottle] = 1; 인식
안녕하세요 좋은 강의 감사합니다! c언어 강의를 무엇을 들을지 찾고 있었는데 선생님 강의가 제목부터 딱 저랑 맞는 강의인 것 같아서 바로 수강했습니다. !! 좋은 강의 다시한번 감사드립니다. 이번 프로젝트에서 아래 코드대로 똑같이 코드를 따라 적으면서 실행을 했습니다. 실행 자체는 잘되지만, 살행 결과가 문제가 있었습니다. =================== 아빠는 머머리 게임 ================== > 1번째 시도 : 물약을 머리에 바릅니다. >> 실패! 머리가 자라지 않았어요 ㅠㅠ ... 계속하려면 아무키나 누르세요 ... > 2번째 시도 : 물약을 머리에 바릅니다. >> 실패! 머리가 자라지 않았어요 ㅠㅠ ... 계속하려면 아무키나 누르세요 ... > 3번째 시도 : 물약을 머리에 바릅니다. >> 실패! 머리가 자라지 않았어요 ㅠㅠ ... 계속하려면 아무키나 누르세요 ... 이렇게 실행 결과가 출력 되던군요... 제 생각에는 if (bottle[randBottle] == 0) { bottle[randBottle] = 1; if (randBottle == treatment) { isincluded = 1; } } 이 부분이 실행이 제대로 안되고 건너뛰어져서 for (int k = 0; k < 4; k++) { if (bottle[k] == 1) { printf("%d번 ", k + 1); } } 이 부분도 실행이 안되는 것 같은데 여기서 어떻게 조치를 취해야 할지 몇 시간동안 고민하다가 이렇게 글을 남겨 봅니다. ㅠㅠ (제가 주석을 많이 쓰기는 했는데 애초에 컴파일할 때 주석은 무시해서 별 지장은 안갈 것 같습니다.) 아래는 코드 원문입니다! #include <stdio.h> #include <time.h> int main(void) { srand(time(NULL)); printf("\n\n=================== 아빠는 머머리 게임 ==================\n\n"); int answer; // 사용자 입력값 int treatment = rand() % 4; int cntShowBottle = 0; int prevShowBottle = 0; for (int i = 1; i <= 3; i++) { int bottle[4] = { 0,0,0,0 }; // 4개의 병을 생성 do { cntShowBottle = rand() % 2 + 2; } while (cntShowBottle == prevShowBottle); cntShowBottle = prevShowBottle; int isincluded = 0; printf(" > %d번째 시도 : ", i); for (int j = 0; j < cntShowBottle; j++) { int randBottle = rand() % 4; if (bottle[randBottle] == 0) { bottle[randBottle] = 1; if (randBottle == treatment) { isincluded = 1; } } else { j--; } } for (int k = 0; k < 4; k++) { if (bottle[k] == 1) { printf("%d번 ", k + 1); } } printf(" 물약을 머리에 바릅니다.\n\n"); if (isincluded == 1) { printf(" >> 성공! 머리가 자랐어요!\n"); } else { printf(" >> 실패! 머리가 자라지 않았어요 ㅠㅠ\n"); } printf("\n ... 계속하려면 아무키나 누르세요 ...\n"); getchar(); } printf("\n\n 발모제는 몇 번일까요? : "); scanf_s("%d", &answer); if (answer == treatment + 1) { printf("\n >> 정답입니다!\n"); } else { printf("\n >> 땡 틀렸습니다! 정답은 %d번 입니다.\n", treatment + 1); } return 0; }
- 해결됨C 프로그래밍 - 입문부터 게임 개발까지
함수 비밀번호 마스터 프로젝트 질문이요!
비밀번호 마스터 프로젝트 할때 제 나름대로 코드를 써봤는데요 비효율적인 건 알지만 왜 실행이 안되는지 모르겠어서 질문드립니다ㅠㅠ 각 단계별 함수에서 random1, random2 변수가 인식이 안되는데 왜 이런거죠ㅜㅜ //비밀번호 마스터 프로젝트 //1~5단계, 점점 어려워지는 수식 출제(랜덤으로) //맞히면 통과, 틀리면 실패 #include<stdio.h> #include<stdlib.h> #include<time.h> void firstf(int random1, int random2); void secondf(int random1, int random2); void thirdf(int random1, int random2); void fourthf(int random1, int random2); void fifthf(int random1, int random2); int main(void) { for (int a = 1; a <= 5; a++) { srand(time(NULL)); int random1 = rand() % (3 * a); int random2 = rand() % (5 * a); int awnser=0; switch (a) { case 1: firstf(random1, random2); break; case 2: secondf(random1, random2); break; case 3: thirdf(random1, random2); break; case 4: fourthf(random1, random2); break; case 5: fifthf(random1, random2); break; default: printf("오류입니다."); break; } return 0; } void firstf(int random1, int random2) { printf("%d+%d=", random1, random2); scanf("%d", &awnser); if (awnser = random1 + random2) { printf("정답입니다. \n 다음 단계로 넘어갑니다."); } else { printf("틀렸습니다. \n 고생하셨습니다."); break; } } void secondf(int random1, int random2) { printf("%d+%d=", random1, random2); scanf("%d", &awnser); if (awnser = random1 + random2) { printf("정답입니다. \n 다음 단계로 넘어갑니다."); } else { printf("틀렸습니다. \n 고생하셨습니다."); break; } } void thirdf(int random1, int random2) { printf("%d-%d=", random1, random2); scanf("%d", &awnser); if (awnser = random1 - random2) { printf("정답입니다. \n 다음 단계로 넘어갑니다."); } else { printf("틀렸습니다. \n 고생하셨습니다."); break; } } void fourthf(int random1, int random2) { printf("%d*%d=", random1, random2); scanf("%d", &awnser); if (awnser = random1 * random2) { printf("정답입니다. \n 다음 단계로 넘어갑니다."); } else { printf("틀렸습니다. \n 고생하셨습니다."); break; } } void fifthf(int random1, int random2) { printf("%d/%d=", random1, random2); scanf("%d", &awnser); if (awnser = random1 / random2) { printf("정답입니다. \n 다음 단계로 넘어갑니다."); } else {printf("틀렸습니다. \n 고생하셨습니다."); break; } }
- 미해결C 프로그래밍 - 입문부터 게임 개발까지
실행은 잘 되는데 크기 불일치라는 경고가 떠서 궁금해서 질문 올립니다
실행은 잘 되는데 이러한 문구가 뜨는 이유에대해서 궁금해서 질문올렸습니다 혹시 제가 뭘 잘못 타이핑한건지 궁금합니다!
- 미해결C 프로그래밍 - 입문부터 게임 개발까지
단축기
중간중간에 문자 앞에 //을 붙일때 어떤 단축키를 사용해야 한번에 할 수 있는건가요?
- 미해결C 프로그래밍 - 입문부터 게임 개발까지
이해가 안되는 부분이 있어요ㅠㅠ
미션맨을 그대로 출력하면 주소가 되는 것 까지는 이해가 가는데 미션맨이 철수의 암호값을 가져오는데 왜.. *을 붙이는지 이해가 안가요...
- 미해결C 프로그래밍 - 입문부터 게임 개발까지
터미널에서 아무 반응이 없습니다.
터미널에서 아무 반응이 없습니다. 컨트롤 f5를 누른후의 상태입니다. 사용버전은 Visual Studio Code 사용중에 있습니다. 프로젝트로는 안만들어지고 일반새파일로해서 c언어로 파일만들어서 사용중인데 맞게사용중인지도 궁금합니다. 터미널은 아래의 사진처럼 뜨면서 출력으로 실행했을땐 출력이 제대로 나오긴합니다.