Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

플라칸

[C++]스도쿠 풀어주는 프로그램 만드는 과정3(비교) 본문

정보보호전문가가 되자!

[C++]스도쿠 풀어주는 프로그램 만드는 과정3(비교)

플라칸 2018. 10. 9. 13:33

#include<iostream>

using namespace std;


void putQ(int a,int b,int c,int *Q);

void match33(int a,int b,int c,int *Q);

void printsu(int a,int b,int,int *Q);

void runwidth(int a,int b,int c,int*Q);


int main()

{

int Q[81];

while(true)

{

cout<<"select number"<<endl<<"1을 누르고 x좌표, y좌표, 원하는 숫자를 입력하시오."<<endl<<"3을 누를 시 프로그램을 종료합니다.";

int a,b,c,d;

cin>>d;

switch(d){

case 1:

cout<<"case 1"<<endl;

cin>>a>>b>>c;

putQ(a,b,c,&Q[0]);

printsu(a,b,c,&Q[0]);

break; 

case 2:

cout<<"case 2"<<endl;

cin>>a>>b;

printsu(a,b,c,&Q[0]);

break;

case 3:

cout<<"case 3"<<endl;

return 0;

}

//s

}

return 0;

}



void putQ(int a,int b,int c,int *Q)

{

int *W=Q;

Q=Q+a*9+b;

*Q=c;

Q=W;

/*delete Q,W;

free Q,W;*/

return;

//sdfsdfsdfsdfds

}


void match33(int a,int b,int c, int *Q)

{

return;

}


void printsu(int a,int b,int,int *Q)

{

cout<<*(Q+a*9+b);

//delete Q;

return;

}


void runwidth(int a,int b,int c,int*Q)

{

return;


오늘은 여기에서 match33의 함수를 완성시켜보자.

match33함수는 3x3칸 내에 같은 숫자가 있는지 검사하는것이다.

먼저 9번 실행시켜주는 for문이 있어야한다.

for(int d=0,d<9,d++)

그뒤 Q함수의 위치와 비교할 함수의 위치와 같으면 안되므로

if(a==e)if(b==f)continue; 함수를 넣어주자 a와 b는 Q함수의 좌표, e와 f는 비교할 함수의 좌표를 말하는것이다.

이제 e와 f를 정의해주자

int e=d/3; int f=d%3;으로 해주자

if(*(Q+a*9+b)==*(Q+e*9+f))로 똑같은것을 검사한다.

 void match33(int a,int b,int c, int *Q)

{

for(int d=0;d<9;d++)

{

int e=d/3; int f=d%3;

if(a==e)if(b==f)continue;

if(*(Q+a*9+b)==*(Q+e*9+f))cout<<"같은것이 있습니다!!\n"; 

}

return;

}

아직 끝난것이 아니다. e와 f는 이제 3x3칸 이내에 있는 수만 지정할것이다.

e와 f를 좀 더 수정해준다.

int e=a/3+d/3; int f=b/3+d%3;로 수정해주었다.

case 3:

match33(a,b,c,&Q[0]);로 수정해주고 컴파일한다

#include<iostream>

using namespace std;


void putQ(int a,int b,int c,int *Q);

void match33(int a,int b,int c,int *Q);

void printsu(int a,int b,int,int *Q);

void runwidth(int a,int b,int c,int*Q);


int main()

{

int Q[81];

while(true)

{

cout<<"select number"<<endl<<"1을 누르고 x좌표, y좌표, 원하는 숫자를 입력하시오."<<endl<<"3을 누를 시 프로그램을 종료합니다.";

int a,b,c,d;

cin>>d;

switch(d){

case 1:

cout<<"case 1"<<endl;

cin>>a>>b>>c;

putQ(a,b,c,&Q[0]);

printsu(a,b,c,&Q[0]);

break; 

case 2:

cout<<"case 2"<<endl;

cin>>a>>b;

printsu(a,b,c,&Q[0]);

break;

case 3:

cout<<"case 3"<<endl;

match33(a,b,c,&Q[0]);

break;

case 4:

cout<<"case 4"<<endl;

return 0;

}

//s

}

return 0;

}



void putQ(int a,int b,int c,int *Q)

{

int *W=Q;

Q=Q+a*9+b;

*Q=c;

Q=W;

/*delete Q,W;

free Q,W;*/

return;

//sdfsdfsdfsdfds

}


void match33(int a,int b,int c, int *Q)

{

for(int d=0;d<9;d++)

{

int e=a/3+d/3; int f=b/3+d%3;

if(a==e)if(b==f)continue;

if(*(Q+a*9+b)==*(Q+e*9+f))cout<<"같은것이 있습니다!!\n"; 

}

return;

}


void printsu(int a,int b,int,int *Q)

{

cout<<*(Q+a*9+b);

//delete Q;

return;

}


void runwidth(int a,int b,int c,int*Q)

{

return;


잘 작동한다.


Comments