
Untitled
By: a guest on
May 22nd, 2012 | syntax:
None | size: 2.63 KB | hits: 10 | expires: Never
void *verifySudoku(void*ptr) {
int i,j,sA[S];
int temp = 0;
struct sudoku *data;
data = (struct sudoku *)ptr;
for(i=0;i < S; i++){
sA[i]=data->array[i];
printf("%d", sA[i]);
}
for(j=0; j<S;j++){
for(i=0; i<S-1;i++){
if(sA[i+1] < sA[i]){
temp=sA[i];
sA[i] = sA[i+1];
sA[i+1]=temp;
}
}
}
//Compare
i=0;
while (i<9)
{
if( sA[i]!=0 ) {
if(sA[i] == sA[i+1])
{
*(data->is_valid) = -1;
}else{
i++;
}
}else{
i++;
}
}
//Thread validated, close.
pthread_exit(0);
}
int main (){
//loop program
int board[S][S];
//Valid 1= valid 0 =p not
int is_valid=1;
int z=0,z1,i,r=0,c,n;
pthread_t t_id[3*S];
int t_ind =0;
//User Prompt
char buffer[10];
printf("Please enter a file name?");
scanf("%s", buffer);
read_sudoku(buffer, board);
printf("Row into Structure:\n");
//Rows -> Struct
for (z = 0; z < S; z++)
{
struct sudoku *row = (struct sudoku *) malloc(sizeof(struct sudoku));
for (r = 0; r < S; r++)
{
//printf("%d",r);
row->array[r] = board[r][z];
//printf("%d",row->array[r]);
}
row->is_valid = &is_valid;
pthread_create(&(t_id[t_ind++]),NULL,verifySudoku, (void *) row);
}
/*
for (z1=0; z1 < S; z1++)
{
struct sudoku *col = (struct sudoku *) malloc(sizeof(struct sudoku));
for (c =0; c < S; c++)
{
col->array[c] = board[z1][c];
printf("%d", col->array[c]);
}
col->is_valid = &is_valid;
pthread_create(&(t_id[t_ind++]), NULL, verifySudoku, (void *) col);
}
*/
//Handle Blocks
//Wait
//3*S for gird included 2*S for row/col ver
for(i=0; i<18;i++){
pthread_join( t_id[i], NULL);
}
if(is_valid ==-1){
printf("Invalid\n");
}
exit(0);
}