Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.50 KB | None | 0 0
  1. #import <stdio.h>
  2.  
  3. #define ARRAY 3
  4.  
  5. void calc(); // Calculate the squere
  6. int allNumsAppear(int nums); // Check if none of the numbers repeat itself
  7. void print(int num); // Print the squere on the screen
  8. int check(int num); // Check if the numbers can create a magic square
  9.  
  10. int main()
  11. {
  12.     calc();
  13.     printf("Done!\n");
  14.    
  15.     getchar();
  16.     return 0;
  17. }
  18.  
  19. void calc()
  20. {
  21.     int nums = 492357716;
  22.    
  23.     while(nums < 987654322)
  24.     {
  25.          if( check(nums) )
  26.          {
  27.              print(nums);
  28.              printf("\n*****\n");
  29.              nums++;
  30.          }
  31.          else
  32.              if(allNumsAppear(nums))
  33.                  nums++;
  34.          while(!allNumsAppear(nums))
  35.              nums++;
  36.     }
  37. }
  38.  
  39. int allNumsAppear(int nums)
  40. {
  41.     int i, j, counter = 0;
  42.     int numAppeared[9];
  43.     int tmp = nums, tmp2 = nums;
  44.    
  45.     if(nums == 816357924)
  46.             return 0;
  47.    
  48.     for(i = 0 ; i < 9 ; i++)
  49.     {
  50.          numAppeared[i] = tmp2 % 10;
  51.          tmp2 /= 10;
  52.     }
  53.    
  54.     while(tmp > 0)
  55.     {
  56.          if( tmp % 10 == 0)
  57.              return 0;
  58.          tmp /= 10;
  59.     }
  60.    
  61.     for(i = 0 ; i < 9 ; i++)
  62.           for(j = 0 ; j < 9 ; j++)
  63.                 if((i != j) && (numAppeared[i] == numAppeared[j]))
  64.                       return 0;
  65.    
  66.     return 1;
  67. }
  68.  
  69. void print(int num)
  70. {
  71.     int i = 0;
  72.     for( ; i < 9 ; i++)
  73.     {
  74.          if( (i + 1)%3 == 0)
  75.              printf("%d\n", num%10);
  76.          else
  77.              printf("%d ", num%10);
  78.          num /= 10;
  79.     }
  80. }
  81.  
  82. int check(int num)
  83. {
  84.     int arr[9];
  85.     int i = 0, sum;
  86.     for( ; i < 9; i++)
  87.     {
  88.         arr[i] = num % 10;
  89.         num /= 10;
  90.     }
  91.     sum = arr[0] + arr[3] + arr[6];
  92.     if( (arr[1] + arr[4] + arr[7]) != sum)
  93.         return 0;
  94.     else
  95.         if( (arr[2] + arr[5] + arr[8]) != sum)
  96.             return 0;
  97.         else
  98.             if( (arr[0] + arr[1] + arr[2]) != sum)
  99.                 return 0;
  100.             else
  101.                 if( (arr[3] + arr[4] + arr[5]) != sum)
  102.                     return 0;
  103.                 else
  104.                     if( (arr[6] + arr[7] + arr[8]) != sum)
  105.                         return 0;
  106.                     else
  107.                         if( (arr[0] + arr[4] + arr[8]) != sum)
  108.                             return 0;
  109.                         else
  110.                             if( (arr[2] + arr[4] + arr[6]) != sum)
  111.                                 return 0;
  112.                             else
  113.                                 return 1;
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement