게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
2차원 배열 중복 수 질문
게시물ID : programmer_18977짧은주소 복사하기
작성자 : JORDAN
추천 : 1
조회수 : 681회
댓글수 : 3개
등록시간 : 2016/11/13 23:55:11
옵션
  • 본인삭제금지
로또랑 좀 비슷한데요,

이번엔 중복 수는 나오지 않는 반면, 수가 다 나오지 않습니다.



예를 들어 20개를 뽑아내려고 하면, 중복수가 생길 시 그건 넘어가버리고 끝나버립니다...

continue나 break를 이용하려구 하는데, 잘 안되네요 ...


#include <stdio.h>

#include <stdlib.h>

#include <time.h>

void main(){

    int arr[8][12]={0};

    int cnt=0;

    int r,c,num=0,j=0,k=0;

    int x=0;

    int y=0;

    int i=0;

    srand((unsigned int)time(NULL));

    printf("지뢰 개수를 입력하세요.");

    scanf("%d",&num);

    

    // 지뢰 심기

    for(i=0;i<num;i++){

        x=rand()%8;

        y=rand()%12;

        arr[x][y]=9;

        for(j=0;j<8;j++){

            for(k=0;k<12;k++){

                if(arr[x][y]==arr[j][k]){

                    continue;

                }

            }

        }

    }

    

    // 지뢰 위치

    printf("지뢰가 심긴 장소\n");

    for(r=0;r<8;r++){

        for(c=0;c<12;c++){

            if(arr[r][c]==9){

                cnt++;

                printf("%d arr[%d][%d]\n",cnt,r,c);

            }

        }

    }

    

    //확인할

    printf("확인할 곳을 입력하세요 : ");

    scanf("%d %d",&x,&y);

            if(arr[x][y]!=9){

                cnt =0;

                if(x-1>=0&&arr[x-1][y]==9){ // 12

                    cnt++;

                }

                if(x-1>=0&&y+1<=11&&arr[x-1][y+1]==9){ //1

                    cnt++;

                }

                if(y+1<=11&&arr[x][y+1]==9){ //3

                    cnt++;

                }

                if(x+1<=7&&y+1<=11&&arr[x+1][y+1]){ //5

                    cnt++;

                }

                if(x+1<=7&&arr[x+1][y]==9){ //6

                    cnt++;

                }

                if(x+1<=7&&y-1>=0&&arr[x+1][y-1]==9){ //7

                    cnt++;

                }

                if(y-1>=0&&arr[x][y-1]==9){ //9

                    cnt++;

                }

                if(x-1>=0&&y-1>=0&&arr[x-1][y-1]==9){ //11

                    cnt++;

                }

            }

    arr[x][y]=cnt;

    printf("%d\n",cnt);

    

}



붉게 되어있는 부분을 고치면 될거같은데,


continue 앞에 i-- 를 붙이면 먹통이 되어버립니다. 어떡하죠?

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호