1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

sudoku solver!!not giving output!!

Discussion in 'C' started by vaibhav_cbeginner, Jul 9, 2008.

  1. vaibhav_cbeginner

    vaibhav_cbeginner New Member

    Joined:
    Jul 9, 2008
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
    i was trying to make a sudoku solver using c..since i hav just started learning c, i dont know anything about pointers and functions..
    so i am trying to make it using simple loops and array..(is it actually possible to make it without functions??)
    i have written a code for it(its not complete yet) ..when i compile the program ,it shows no error..but when i run it,
    no output is coming..the program goes as:
    Code:
    #include<stdio.h>
    #include<conio.h>
    
    void main()
    {
     int a[10][10],i,j,k,b,l,ans;
     clrscr();
     for(i=1;i<10;i++)              
     {
      for(j=1;j<10;j++)
      {
       printf("a(%d,%d)\t",i,j);
      }
      printf("\n\n\n");
     }
     for(i=1;i<10;i++)                     // input from user
     {
      for(j=1;j<10;j++)
      {
       printf(" a[%d,%d]?\n",i,j);         // i hav used 0 to represent a blank box
       scanf("%d",&a[i][j]);
      }
     }
     for(i=1;i<10;i++)                     //
     {
      for(j=1;j<10;j++)
      {
       b=0;
       if(a[i][j]==0)                      //checks whether the box is empty
       {
        end:
        ans=0;
        b=b+1;                             //gives a value to empty box
        for(k=1;k<10;k++)
        {
         if(a[i][k]==b||a[k][j]==b)        //checks whether that value is already occupied in the same row and column
         {
          ans=1;
         }
        }
        for(k=1;k<4;k++)                   //
        { 
         for(l=1;l<4;l++)
         {
          if(a[3*(i/3)+l][3*(j/3)+k]==b)   //checks whether that value is occupied by the bigger box containing nine boxes
          {
           ans=1;
          }
         }
        } 
        if(ans=1)
        {
         goto end;                         //if yes, than it goes back and assign a higher value to the box 
        }
        a[i][j]=b;
       }  
      }   
    }
     for(i=1;i<10;i++)                     //prints the result
     {
      for(j=1;j<10;j++)
      {
       printf("%d\t",a[i][j]);
      }
      printf("\n");
     }
    getch();
    }
    
    the program is not yet complete as i havnt introduced the feedback yet..
    can u tell me what is the problem with the code so far??why is it not giving any output??
    when i remove the part which checks 'if the value lies in bigger box' it works fine..why??


    srry i am not gud at explaining but hope u hav understood..
     
    Last edited by a moderator: Jul 10, 2008

Share This Page