Расставить числа 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>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д