Расставить числа 1...9 в пустые ячейки квадрата размером 3x3 так, чтобы сумма чисел в каждой строке, в столбце, а также по диагоналям была равна 15 - C (СИ)
Формулировка задачи:
Не правильно работает программа. Тема: матрица.
Расставьте числа 1, 2, 3, 4, 5, 6, 7, 8, 9 в пустые ячейки квадрата размером 3x3 так, чтобы сумма чисел в каждой строке, в каждом столбце, а также по диагоналям равна 15.
Вот мой код:
Проблема вот в чем: при заполнении матрицы числами через раз, два появляется такой баг:
Тоист не верное число.
Как его пофиксить?
Спасибо.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <iostream>
int main()
{
int a[8][3]=
{
{1,5,9},
{3,5,7},
{5,2,8},
{5,4,6},
{1,8,6},
{3,4,8},
{7,2,6},
{9,4,2}
};
int matr[3][3];
int i,j,k,f,g,f2,g2,temp,flag=0,l,z;
srand((unsigned) time(NULL));
//
for(l=0;l<3;l++)
{
for(i=0;i<3;i++)
for(j=0;j<3;j++)
matr[i][j]=0;
matr[1][1]=5;
f=rand()%3;
if(f % 2 == 0)
{
g=1;
matr[f][g]=1;
for(i=0;i<3;i++)
if(matr[i][g]==0)
matr[i][g]=15-5-matr[f][g];
f2=1;
while(1)
{
g2=rand()%3;
if(g2 % 2 == 0)
break;
}
matr[f2][g2]=3;
for(j=0;j<3;j++)
if(matr[f2][j]==0)
matr[f2][j]=15-5-matr[f2][g2];
}
else
{
while(1)
{
g=rand()%3;
if(g % 2 == 0)
break;
}
matr[f][g]=1;
for(j=0;j<3;j++)
if(matr[f][j]==0)
matr[f][j]=15-5-matr[f][g];
while(1)
{
f2=rand()%3;
if(f2 % 2 == 0)
break;
}
g2=1;
matr[f2][g2]=3;
for(i=0;i<3;i++)
if(matr[i][g2]==0)
matr[i][g2]=15-5-matr[f2][g2];
}
for (i=4;i<8;i++)
if(a[i][0]==matr[0][1])
{
matr[0][0]=a[i][1];
for(j=4;j<8;j++)
if(a[j][0]==matr[1][0])
for(k=1;k<3;k++)
if(a[j][k]==matr[0][0])
flag++;
if(!flag)
matr[0][0]=a[i][2];
}
matr[0][2]=15-matr[0][1]-matr[0][0];
matr[2][0]=15-matr[1][0]-matr[0][0];
matr[2][2]=15-matr[1][1]-matr[0][0];
for(i=0;i<3;i++)
{
for(z=0;z<l;z++)
printf("\t");
for(j=0;j<3;j++)
printf("%-2d",matr[i][j]);
printf("\n\n");
}
}
printf("\n\n");
system("pause");
return 0;
}Решение задачи: «Расставить числа 1...9 в пустые ячейки квадрата размером 3x3 так, чтобы сумма чисел в каждой строке, в столбце, а также по диагоналям была равна 15»
textual
Листинг программы
#include <iostream>