728x90
배열과 포인터
#include <stdio.h>
void changeArray(int *ptr);
int main(void)
{
int arr2[3]={10, 20, 30};
changeArray(arr2); /* 배열일떄 arr2 자체는 주소를 가진다. */
/* 앞에 별도의 &를 붙일 필요 없이 배열 자체는 주소를 바로 던지는 것이다.*/
for(int i=0; i<3; i++)
{
printf("%d\n", arr2[i]);
}
return 0;
}
void changeArray(int *ptr)
{ //배열을 받을때는 함수 정의시 포인터로 받는 다.
ptr[2]=50;
}
중요한 점은 배열을 선언하는 변수는 그 자체만으로 주소를 가진다!!!
int main(void)
{
int arr2[3]={10, 20, 30};
changeArray(&arr2[0]); /* 배열일떄 arr2 자체는 주소를 가진다. */
/* 앞에 별도의 &를 붙일 필요 없이 배열 자체는 주소를 바로 던지는 것이다.*/
for(int i=0; i<3; i++)
{
printf("%d\n", arr2[i]);
}
return 0;
}
이렇게 한다면 우리가 예상하는 결과는 50, 20, 30일 것이다.
그러나
왜 이러는 걸까???
배열은 연속된 공간에 연속된 주소에 배열 공간을 할당해서 첫번쨰 배열항목에 해당하는 주소를 던져서 거기로부터 세번쨰 위치의 배열에 값을 바꾸는 것을 올바른 동작이라고 할 수 있다.
그렇다 scanf를 받을때 &num과 같이 왜 &표시를 붙였는지?이유를 알 수 있다.
프로젝트1(전반전)
#include <stdio.h>
#include <time.h>
/* 프로젝트 설명
물고기가 6마리가 있다. 이들은 어항에 살고 있는데 사막이다.
사막이 너무 건조해서 물이 아주 빨리 증발을 한다.
물이 다 증발하기 전에 부지런히 어항에 물을 줘서 물고기를 살려주세요~~
물고기는 시간이 지날 수록 점점 커져서 나중에는 잡아묵겟다.
*/
int level; // 레벨을 전역 변수로 선언한다.
int arrayFish[6]; // 6개의 공간을 가진 어항배열을 만든다.
int *cursor; /*arrayFish를 가리키면서 1번 물고기한테 물을 줄지, 2번 물고기 한테 물을 줄지 즉,
커서라는 포인터 변수가 각 물고기 어항에 찾아가서 물을 주는 동작을 하도록 한다. */
void initData();
void printfFishes();
int main(void)
{
long startTime=0; // 시간은 보통 long자료형을 사용한다. 게임 시작 시간을 의미한다.
long totalElapsedTime=0; //총 경과 시간
long prevElapsedTime=0; // 직전 경과시간 (최근에 물을 준 시간 간격)
int num; //몇 번 어항에 물을 줄 것인지, 사용자 입력을 받는 부분
initData(); // 데이터 초기화
cursor=arrayFish; // arrayFish값을 커서에 집어넣는다. 이렇게 포인터 변수를 활용함으로서 우리가 배열과 똑같이 사용할 수 있다.
// 게임이 시작되는 부분
startTime=clock(); // 현재 시간을 milisecond 즉, 1000분의 1초로 반환 (time.h에 정의)
while(1)
{
// 무한 반복을 하면서 진행한다. 물고기가 다 죽을떄 까지 게임을 실행할 것이라서 무한 반복
printfFishes(); // 물고기들의 어항 상태를 보고해준다.
printf("몇 번 어항에 물을 주시겠어요?"); // 사람에게 입력 받도록 한다.
scanf_s("%d", &num); // 사람에게 받은 입력 값을 num에 집어넣는다.
/* 게임을 하다보면 1번 어항 3번 어항 이런 식으로 물을 줄 수 있는데, 마음이 급해지면 12이렇게 입력
하게 된다면 어떠한 어항도 물을 받지 못하게 된다. 그래서 아래는 입력값을 체크한다.*/
if(num<1 || num>6) // 1~6까지의 입력값만 받도록 한다.
{
printf("\n입력값이 잘못되었습니다. \n");
continue; // 이렇게 하면 다시 위에 어항상태 보여주고 계속 진행할 것이다.
}
// 입력값 체크
//총 경과시간
totalElapsedTime=(clock()-startTime) / CLOCKS_PER_SEC; // 총 경과시간 체크 (얼마만큼 시간이 지났는가?)
/* 이러면 게임 맨 처음 시작할떄 시간으로부터 사용자 입력을 한 번 받고 나서 총 몇 초 걸렸는
지 알 수 있다. 하지만 해당 값은 Milisecond이니 clocks_per_sec으로 나누어 준다.
이 변수는 1000단위로 나누어서 만약 6000mili초가 흘럿다고 한다면 1000을 나눈 6초가 흘렀다.
라는 초 단위로 바꾸어주는 역할을 한다.*/
printf("총 경과시간 : %ld 초\n", totalElapsedTime);
/* 직전에 물을 준 시간을 체크한다. (마지막으로 물 준 시간) 이후로 흐른 시간
즉, 마지막으로 물을 주고 나서 얼마가 흘렀는지?
만약 우리가 10초가 흘렀을떄 물을 한번 주었다면 ? 그리고 우리가 다시 올라와서 다시 어항에
물을 줬을떄가 13초였다. 그러면 그 차이는 13초에서 10을 뺀 3초
이렇게 되면 3초간의 시간이 흘럿다는 것을 보여준다.
이걸 하는 이유는 3초 동안에 물이 얼만큼 흘럿는지를 계산하기 위해서 쓴다.
만약 사용자 입력이 10초 동안 있었다면 10초동안 물 빠진 것을 계산해서 물 높이를 낮춰야한다.
그런 목적으로 한다. */
prevElapsedTime=totalElapsedTime-prevElapsedTime; // 총 경과 시간에서 직전 시간을 뺀다.
printf("최근 경과시간: %ld 초\n", prevElapsedTime);
}
return 0;
}
void initData()
{
level=1; // 게임레벨 {1-5}
for(int i=0; i<6; i++)
{
arrayFish[i] = 100;// 어항
}
}
void printfFishes()
{// 물이 얼만큼 남아있는지 알려줘야 어느 물고기들을 키울지를 정할 수 있으니
printf("%3d번 %3d번 %3d번 %3d번 %3d번 %3d번\n", 1, 2, 3, 4, 5, 6); // 순서대로 어항에 번호 매김
for(int i=0; i<6; i++)
{
printf(" %4d ", arrayFish[i]); /*%4d에 앞 뒤로 두칸씩 띄운 이유는 하나의 어항당 차지하는 공간이
%3d는 세칸의 공간을 할당받고, 거기에 숫자를 표시한다. 그래서 1이라는 숫자가 들어와도 앞에
두 칸의 공백이 생길거고 '번'이라는 한글은 두 자를 차지한다. 뒤에 스페이스가 한 칸 있기 떄문에
총 이러면 %3d번만 해도 6칸이 된다. 그래서 위와 맞추기 위해서 %4d도 6칸을 차지하도록 할 것인데,
앞 뒤로 한 칸씩 띄우고 중간에 4칸의 공간을 마련해서 이렇게 처리를 하도록 한다. */
}
printf("\n\n");
}
#include <stdio.h>
#include <time.h>
/* 프로젝트 설명
물고기가 6마리가 있다. 이들은 어항에 살고 있는데 사막이다.
사막이 너무 건조해서 물이 아주 빨리 증발을 한다.
물이 다 증발하기 전에 부지런히 어항에 물을 줘서 물고기를 살려주세요~~
물고기는 시간이 지날 수록 점점 커져서 나중에는 잡아묵겟다.
*/
int level; // 레벨을 전역 변수로 선언한다.
int arrayFish[6]; // 6개의 공간을 가진 어항배열을 만든다.
int *cursor; /*arrayFish를 가리키면서 1번 물고기한테 물을 줄지, 2번 물고기 한테 물을 줄지 즉,
커서라는 포인터 변수가 각 물고기 어항에 찾아가서 물을 주는 동작을 하도록 한다. */
void initData();
void printfFishes();
void decreaseWater(long elapsedTime);
int main(void)
{
long startTime=0; // 시간은 보통 long자료형을 사용한다. 게임 시작 시간을 의미한다.
long totalElapsedTime=0; //총 경과 시간
long prevElapsedTime=0; // 직전 경과시간 (최근에 물을 준 시간 간격)
int num; //몇 번 어항에 물을 줄 것인지, 사용자 입력을 받는 부분
initData(); // 데이터 초기화
cursor=arrayFish; // arrayFish값을 커서에 집어넣는다. 이렇게 포인터 변수를 활용함으로서 우리가 배열과 똑같이 사용할 수 있다.
// 게임이 시작되는 부분
startTime=clock(); // 현재 시간을 milisecond 즉, 1000분의 1초로 반환 (time.h에 정의)
while(1)
{
// 무한 반복을 하면서 진행한다. 물고기가 다 죽을떄 까지 게임을 실행할 것이라서 무한 반복
printfFishes(); // 물고기들의 어항 상태를 보고해준다.
printf("몇 번 어항에 물을 주시겠어요?"); // 사람에게 입력 받도록 한다.
scanf_s("%d", &num); // 사람에게 받은 입력 값을 num에 집어넣는다.
/* 게임을 하다보면 1번 어항 3번 어항 이런 식으로 물을 줄 수 있는데, 마음이 급해지면 12이렇게 입력
하게 된다면 어떠한 어항도 물을 받지 못하게 된다. 그래서 아래는 입력값을 체크한다.*/
if(num<1 || num>6) // 1~6까지의 입력값만 받도록 한다.
{
printf("\n입력값이 잘못되었습니다. \n");
continue; // 이렇게 하면 다시 위에 어항상태 보여주고 계속 진행할 것이다.
}
// 입력값 체크
//총 경과시간
totalElapsedTime=(clock()-startTime) / CLOCKS_PER_SEC; // 총 경과시간 체크 (얼마만큼 시간이 지났는가?)
/* 이러면 게임 맨 처음 시작할떄 시간으로부터 사용자 입력을 한 번 받고 나서 총 몇 초 걸렸는
지 알 수 있다. 하지만 해당 값은 Milisecond이니 clocks_per_sec으로 나누어 준다.
이 변수는 1000단위로 나누어서 만약 6000mili초가 흘럿다고 한다면 1000을 나눈 6초가 흘렀다.
라는 초 단위로 바꾸어주는 역할을 한다.*/
printf("총 경과시간 : %ld 초\n", totalElapsedTime);
/* 직전에 물을 준 시간을 체크한다. (마지막으로 물 준 시간) 이후로 흐른 시간
즉, 마지막으로 물을 주고 나서 얼마가 흘렀는지?
만약 우리가 10초가 흘렀을떄 물을 한번 주었다면 ? 그리고 우리가 다시 올라와서 다시 어항에
물을 줬을떄가 13초였다. 그러면 그 차이는 13초에서 10을 뺀 3초
이렇게 되면 3초간의 시간이 흘럿다는 것을 보여준다.
이걸 하는 이유는 3초 동안에 물이 얼만큼 흘럿는지를 계산하기 위해서 쓴다.
만약 사용자 입력이 10초 동안 있었다면 10초동안 물 빠진 것을 계산해서 물 높이를 낮춰야한다.
그런 목적으로 한다. */
prevElapsedTime=totalElapsedTime-prevElapsedTime; // 총 경과 시간에서 직전 시간을 뺀다.
printf("최근 경과시간: %ld 초\n", prevElapsedTime);
//위는 증가되고 있는 과정이고, 어항의 물을 감소시켜본다.
decreaseWater(prevElapsedTime);
/*사용자가 입력한 어항에 물을 준다.
1. 어항에 물이 0이면? 만약 물을 줄려는 어항의 물고기가 이미 죽은상태라면 물을 줄 필요가 없다.
*/
if(cursor[num-1]<=0)
{
printf("%d 번 물고기는 이미 사망했습니다. 물을 주지 않습니다.");
}
/*2. 어항의 물이 0이 아닌 경우? 물을 준다! 이떄 100을 넘지 않는지 체크한다.
현재 어항의 물 +1<=100
을 했을때, 100보다 작거나 같으면 물을 주고 아니면 물 안준다.*/
else if (cursor[num-1]+1<=100)
{
// 물을 준다.
printf("%d번 어항에 물을 준다\n\n", num);
cursor[num-1]+=1;
}
// 여기까지 물을 주는 내용
// 마지막으로 레벨업을 어떻게 할 것인가? (레벨업은 20초마다 한 번씩 수행)
// 20초를 물고기를 죽이지 않고 살리고 있으면 레벨을 올려주며 물을 빨리 빠지게 한다.
if(totalElapsedTime/20 > level-1)
{
/*만약 total 시간이 15초가 흘렀으면, 15초가 흘렀을때 15/20은 몫이 0이라서
0으로 된다. level1일때 0은 0보다 크지 않기 때문에 false가 되고 아무런 동작을 하지 않게 된다.
만약에 레벨1로 선언햇는데 수행 시간이 25라면 몫이 25/20은 1이라서 레벨 업이 된다.*/
level++; // 처음 레벨이 1이었을떄는 level이 2가 된다.
/*45초가 되면 45/20=2이므로 level2일때 2-1로 왼쪽이 더 커지므로 levelup을 할 수 있게 된다.*/
printf(" *** 축 레벨업 ! 기존 %d레벨에서 %d레벨로 업그레이드를 하였습니다. ", level-1, level);
//최종레벨은 5
if(level==5)
{
printf("\n\n축하합니다. 최고 레벨을 달성하여 게임을 종료합니다.");
exit(0); // 모든 동작을 끝내는 함수
}
}
return 0;
}
void initData()
{
level=1; // 게임레벨 {1-5}
for(int i=0; i<6; i++)
{
arrayFish[i] = 100;// 어항
}
}
void printfFishes()
{// 물이 얼만큼 남아있는지 알려줘야 어느 물고기들을 키울지를 정할 수 있으니
printf("%3d번 %3d번 %3d번 %3d번 %3d번 %3d번\n", 1, 2, 3, 4, 5, 6); // 순서대로 어항에 번호 매김
for(int i=0; i<6; i++)
{
printf(" %4d ", arrayFish[i]); /*%4d에 앞 뒤로 두칸씩 띄운 이유는 하나의 어항당 차지하는 공간이
%3d는 세칸의 공간을 할당받고, 거기에 숫자를 표시한다. 그래서 1이라는 숫자가 들어와도 앞에
두 칸의 공백이 생길거고 '번'이라는 한글은 두 자를 차지한다. 뒤에 스페이스가 한 칸 있기 떄문에
총 이러면 %3d번만 해도 6칸이 된다. 그래서 위와 맞추기 위해서 %4d도 6칸을 차지하도록 할 것인데,
앞 뒤로 한 칸씩 띄우고 중간에 4칸의 공간을 마련해서 이렇게 처리를 하도록 한다. */
}
printf("\n\n");
}
void decreaseWater(long elapsedTime)
{
for(int i=0; i<6; i++)
{
arrayFish[i] -= (level * 3 * (int)elapsedTime); /* arrayfish에서 level만큼의 값을 뺼 건데, level이 1이라면 1씩 빠지고
level이 5라면 그만큼 게임이 어려워져야하니까 더 많이 빠지도록 한다.
하지만 1씩 빠지는건 너무 느려서 임의로 3정도를 곱하면서 시작한다.
이렇게하면 사용자 입력까지 10초가 지낫는데 그러면 30씩 감소한다.
즉, 3은 난이도 조절을 위한 값이다. */
if (arrayFish[i]<0)
{
arrayFish[i]=0;
}
/*어항이 물이 0보다 작아질 수 없으니 */
}
}
프로젝트 후반전 ↑
#include <stdio.h>
#include <time.h>
/* 프로젝트 설명
물고기가 6마리가 있다. 이들은 어항에 살고 있는데 사막이다.
사막이 너무 건조해서 물이 아주 빨리 증발을 한다.
물이 다 증발하기 전에 부지런히 어항에 물을 줘서 물고기를 살려주세요~~
물고기는 시간이 지날 수록 점점 커져서 나중에는 잡아묵겟다.
*/
int level; // 레벨을 전역 변수로 선언한다.
int arrayFish[6]; // 6개의 공간을 가진 어항배열을 만든다.
int *cursor; /*arrayFish를 가리키면서 1번 물고기한테 물을 줄지, 2번 물고기 한테 물을 줄지 즉,
커서라는 포인터 변수가 각 물고기 어항에 찾아가서 물을 주는 동작을 하도록 한다. */
void initData();
void printfFishes();
void decreaseWater(long elapsedTime);
int main(void)
{
long startTime=0; // 시간은 보통 long자료형을 사용한다. 게임 시작 시간을 의미한다.
long totalElapsedTime=0; //총 경과 시간
long prevElapsedTime=0; // 직전 경과시간 (최근에 물을 준 시간 간격)
int num; //몇 번 어항에 물을 줄 것인지, 사용자 입력을 받는 부분
initData(); // 데이터 초기화
cursor=arrayFish; // arrayFish값을 커서에 집어넣는다. 이렇게 포인터 변수를 활용함으로서 우리가 배열과 똑같이 사용할 수 있다.
// 게임이 시작되는 부분
startTime=clock(); // 현재 시간을 milisecond 즉, 1000분의 1초로 반환 (time.h에 정의)
while(1)
{
// 무한 반복을 하면서 진행한다. 물고기가 다 죽을떄 까지 게임을 실행할 것이라서 무한 반복
printfFishes(); // 물고기들의 어항 상태를 보고해준다.
printf("몇 번 어항에 물을 주시겠어요?"); // 사람에게 입력 받도록 한다.
scanf_s("%d", &num); // 사람에게 받은 입력 값을 num에 집어넣는다.
/* 게임을 하다보면 1번 어항 3번 어항 이런 식으로 물을 줄 수 있는데, 마음이 급해지면 12이렇게 입력
하게 된다면 어떠한 어항도 물을 받지 못하게 된다. 그래서 아래는 입력값을 체크한다.*/
if(num<1 || num>6) // 1~6까지의 입력값만 받도록 한다.
{
printf("\n입력값이 잘못되었습니다. \n");
continue; // 이렇게 하면 다시 위에 어항상태 보여주고 계속 진행할 것이다.
}
// 입력값 체크
//총 경과시간
totalElapsedTime=(clock()-startTime) / CLOCKS_PER_SEC; // 총 경과시간 체크 (얼마만큼 시간이 지났는가?)
/* 이러면 게임 맨 처음 시작할떄 시간으로부터 사용자 입력을 한 번 받고 나서 총 몇 초 걸렸는
지 알 수 있다. 하지만 해당 값은 Milisecond이니 clocks_per_sec으로 나누어 준다.
이 변수는 1000단위로 나누어서 만약 6000mili초가 흘럿다고 한다면 1000을 나눈 6초가 흘렀다.
라는 초 단위로 바꾸어주는 역할을 한다.*/
printf("총 경과시간 : %ld 초\n", totalElapsedTime);
/* 직전에 물을 준 시간을 체크한다. (마지막으로 물 준 시간) 이후로 흐른 시간
즉, 마지막으로 물을 주고 나서 얼마가 흘렀는지?
만약 우리가 10초가 흘렀을떄 물을 한번 주었다면 ? 그리고 우리가 다시 올라와서 다시 어항에
물을 줬을떄가 13초였다. 그러면 그 차이는 13초에서 10을 뺀 3초
이렇게 되면 3초간의 시간이 흘럿다는 것을 보여준다.
이걸 하는 이유는 3초 동안에 물이 얼만큼 흘럿는지를 계산하기 위해서 쓴다.
만약 사용자 입력이 10초 동안 있었다면 10초동안 물 빠진 것을 계산해서 물 높이를 낮춰야한다.
그런 목적으로 한다. */
prevElapsedTime=totalElapsedTime-prevElapsedTime; // 총 경과 시간에서 직전 시간을 뺀다.
printf("최근 경과시간: %ld 초\n", prevElapsedTime);
//위는 증가되고 있는 과정이고, 어항의 물을 감소시켜본다.
decreaseWater(prevElapsedTime);
/*사용자가 입력한 어항에 물을 준다.
1. 어항에 물이 0이면? 만약 물을 줄려는 어항의 물고기가 이미 죽은상태라면 물을 줄 필요가 없다.
*/
if(cursor[num-1]<=0)
{
printf("%d 번 물고기는 이미 사망했습니다. 물을 주지 않습니다.");
}
/*2. 어항의 물이 0이 아닌 경우? 물을 준다! 이떄 100을 넘지 않는지 체크한다.
현재 어항의 물 +1<=100
을 했을때, 100보다 작거나 같으면 물을 주고 아니면 물 안준다.*/
else if (cursor[num-1]+1<=100)
{
// 물을 준다.
printf("%d번 어항에 물을 준다\n\n", num);
cursor[num-1]+=1;
}
// 여기까지 물을 주는 내용
// 마지막으로 레벨업을 어떻게 할 것인가? (레벨업은 20초마다 한 번씩 수행)
// 20초를 물고기를 죽이지 않고 살리고 있으면 레벨을 올려주며 물을 빨리 빠지게 한다.
if(totalElapsedTime/20 > level-1)
{
/*만약 total 시간이 15초가 흘렀으면, 15초가 흘렀을때 15/20은 몫이 0이라서
0으로 된다. level1일때 0은 0보다 크지 않기 때문에 false가 되고 아무런 동작을 하지 않게 된다.
만약에 레벨1로 선언햇는데 수행 시간이 25라면 몫이 25/20은 1이라서 레벨 업이 된다.*/
level++; // 처음 레벨이 1이었을떄는 level이 2가 된다.
/*45초가 되면 45/20=2이므로 level2일때 2-1로 왼쪽이 더 커지므로 levelup을 할 수 있게 된다.*/
printf(" *** 축 레벨업 ! 기존 %d레벨에서 %d레벨로 업그레이드를 하였습니다. ", level-1, level);
//최종레벨은 5
if(level==5)
{
printf("\n\n축하합니다. 최고 레벨을 달성하여 게임을 종료합니다.");
exit(0); // 모든 동작을 끝내는 함수
}
//모든 물고기가 죽었는지를 확인한다. 모든 물고기가 죽었다면 게임을 계속 진행할 필요가 없으니...
if (checkFishAlive()==0)
{
//살아있는 물고기가 없다면
printf("모든 물고기가...흑흑 ㅜㅜ...\n");
exit(0); // 물고기가 다 죽었으니 게임을 끝낸다.
}
else
{
// 최소 한 마리의 물고기는 살아있음
printf("물고기가 아직 살아있어요~\n");
}
prevElapsedTime=totalElapsedTime;
/*최초의 물을 줄때가 10초가 지났고, 그 다음 물을 줄떄가 15초가 지낫다.그러면
5초라는 gap은 prevElapsedtime에 집어 넣는다.
그 다음 25초에 물을 줄텐데, 이떄는 10초를 계산한다. 그런데 이 10초를 계산하기 위해서는
25에서 15를 뺴야하는데, 이 15가 저장될 곳이 없다. */
}
return 0;
}}
void initData()1
{
level=1; // 게임레벨 {1-5}
for(int i=0; i<6; i++)
{
arrayFish[i] = 100;// 어항
}
}
void printfFishes()
{// 물이 얼만큼 남아있는지 알려줘야 어느 물고기들을 키울지를 정할 수 있으니
printf("%3d번 %3d번 %3d번 %3d번 %3d번 %3d번\n", 1, 2, 3, 4, 5, 6); // 순서대로 어항에 번호 매김
for(int i=0; i<6; i++)
{
printf(" %4d ", arrayFish[i]); /*%4d에 앞 뒤로 두칸씩 띄운 이유는 하나의 어항당 차지하는 공간이
%3d는 세칸의 공간을 할당받고, 거기에 숫자를 표시한다. 그래서 1이라는 숫자가 들어와도 앞에
두 칸의 공백이 생길거고 '번'이라는 한글은 두 자를 차지한다. 뒤에 스페이스가 한 칸 있기 떄문에
총 이러면 %3d번만 해도 6칸이 된다. 그래서 위와 맞추기 위해서 %4d도 6칸을 차지하도록 할 것인데,
앞 뒤로 한 칸씩 띄우고 중간에 4칸의 공간을 마련해서 이렇게 처리를 하도록 한다. */
}
printf("\n\n");
}
void decreaseWater(long elapsedTime)
{
for(int i=0; i<6; i++)
{
arrayFish[i] -= (level * 3 * (int)elapsedTime); /* arrayfish에서 level만큼의 값을 뺼 건데, level이 1이라면 1씩 빠지고
level이 5라면 그만큼 게임이 어려워져야하니까 더 많이 빠지도록 한다.
하지만 1씩 빠지는건 너무 느려서 임의로 3정도를 곱하면서 시작한다.
이렇게하면 사용자 입력까지 10초가 지낫는데 그러면 30씩 감소한다.
즉, 3은 난이도 조절을 위한 값이다. */
if (arrayFish[i]<0)
{
arrayFish[i]=0;
}
/*어항이 물이 0보다 작아질 수 없으니 */
}
}
int checkFishAlive()
{
// 어항의 물이 0보다 큰 게 있는지 확인
for(int i =0; i<6; i++)
{
if(arrayFish[i]>0)
{
return 1; // true, 아직 어항에 물이 있으니 물고기가 살아있음을 알림
//0이 된다면 if문에 이 부분을 만나지 못하고 for문이 끝난다.
}
}
return 0;
}
최종 코드
'C언어 공부' 카테고리의 다른 글
구조체 (0) | 2023.07.24 |
---|---|
다차원배열 (0) | 2023.07.24 |
다차원 배열 (0) | 2023.07.21 |
C언어 포인터 다시 공부 (0) | 2023.07.17 |
VSCode에서 c언어 시작하기1 (0) | 2023.07.17 |