Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #import <stdio.h>
- #define ARRAY 3
- void calc(); // Calculate the squere
- int allNumsAppear(int nums); // Check if none of the numbers repeat itself
- void print(int num); // Print the squere on the screen
- int check(int num); // Check if the numbers can create a magic square
- int main()
- {
- calc();
- printf("Done!\n");
- getchar();
- return 0;
- }
- void calc()
- {
- int nums = 492357716;
- while(nums < 987654322)
- {
- if( check(nums) )
- {
- print(nums);
- printf("\n*****\n");
- nums++;
- }
- else
- if(allNumsAppear(nums))
- nums++;
- while(!allNumsAppear(nums))
- nums++;
- }
- }
- int allNumsAppear(int nums)
- {
- int i, j, counter = 0;
- int numAppeared[9];
- int tmp = nums, tmp2 = nums;
- if(nums == 816357924)
- return 0;
- for(i = 0 ; i < 9 ; i++)
- {
- numAppeared[i] = tmp2 % 10;
- tmp2 /= 10;
- }
- while(tmp > 0)
- {
- if( tmp % 10 == 0)
- return 0;
- tmp /= 10;
- }
- for(i = 0 ; i < 9 ; i++)
- for(j = 0 ; j < 9 ; j++)
- if((i != j) && (numAppeared[i] == numAppeared[j]))
- return 0;
- return 1;
- }
- void print(int num)
- {
- int i = 0;
- for( ; i < 9 ; i++)
- {
- if( (i + 1)%3 == 0)
- printf("%d\n", num%10);
- else
- printf("%d ", num%10);
- num /= 10;
- }
- }
- int check(int num)
- {
- int arr[9];
- int i = 0, sum;
- for( ; i < 9; i++)
- {
- arr[i] = num % 10;
- num /= 10;
- }
- sum = arr[0] + arr[3] + arr[6];
- if( (arr[1] + arr[4] + arr[7]) != sum)
- return 0;
- else
- if( (arr[2] + arr[5] + arr[8]) != sum)
- return 0;
- else
- if( (arr[0] + arr[1] + arr[2]) != sum)
- return 0;
- else
- if( (arr[3] + arr[4] + arr[5]) != sum)
- return 0;
- else
- if( (arr[6] + arr[7] + arr[8]) != sum)
- return 0;
- else
- if( (arr[0] + arr[4] + arr[8]) != sum)
- return 0;
- else
- if( (arr[2] + arr[4] + arr[6]) != sum)
- return 0;
- else
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement