Äàäåí å äâóìåðåí ìàñèâ ñ 3 ðåäà è 9 êîëîíè.  ïúðâèòå 3 êîëîíè äà ñå ðàçïîëîæàò â ñëó÷àåí ðåä ÷èñëàòà îò 1 äî 9. Âúâ âòîðèòå 3 êîëîíè îòíîâî äà ñå ðàçïîëîæàò â ñëó÷àåí ðåä ÷èñëàòà îò 1 äî 9.  òðåòèòå – ñúùî. Ïðè òîâà ðàçïîëàãàíå âúâ âñåêè ðåä òðÿáâà äà ñå ñðåùàò âñè÷êè ÷èñëà îò 1 äî 9 òî÷íî ïî âåäíúæ.

 

Ïðèìåð:

1

3

5

4

7

6

9

8

2

9

2

7

5

1

8

4

6

3

4

6

8

9

2

3

5

1

7

 

Ðåøåíèå:

 

#include <iostream.h>

#include <stdlib.h>

#include <time.h>

 

void init_mas(int mas[3][9])                 //íóëèðàíå íà ìàñèâà, îïèñâàù òàáëèöàòà

{

            int i,j;

            for(i=0;i<3;i++)

                        for(j=0;j<9;j++)

                                   mas[i][j]=0;

}

 

void main(void)

{

            int k,r,col,br_col,block,flag,j;   //ê – òåêóùîòî ÷èñëî, íà êîåòî òúðñèì ìÿñòîòî â ìàñèâà

                                                           //r,col – íîìåð íà ðåä è êîëîíà â òàáëèöàòà

                                                           // br_col – áðîé ïîïúëíåíè áëîêîâå ñ òåêóùîòî ÷èñëî

//block – íîìåð íà áëîê çà ïîïúëâàíå

//flag – ôëàã çà óñïåøåí çàïèñ

//j – ïîìîùíà çà îáõîæäàíå íà block_free

            int mas[3][9];                           //ìàñèâ, îïèñâàù òàáëèöàòà

            int block_free[3];                     //ìàñèâ, îïèñâàù âñåêè åäèí áëîê; ñò-ñò 0 – ëèïñà íà çàïèñ;  1 – èìà çàïèñ íà òåêóùîòî ÷èñëî

 

            init_mas(mas);

            srand( (unsigned)time( NULL ) );//íà÷àëíî èíèöèàëèçàöèÿ íà ãåíåðàòîðà íà ñëó÷àéíè ÷èñëà

 

//öèêúë çà ê – ÷èñëàòà ñ êîèòî ñå ïîïúëâà ìàñèâà

            for(k=1;k<=9;k++)

            {

//íóëèðàíå íà ïîìîùíèÿ ìàñèâ, îïèñâàù äàëè áëîêúò å çàåò ñ ÷èñëîòî ê

                        for(j=0;j<3;j++)                      block_free[j]=0;                     

                        for(r=0;r<3;r++)                      //ïîñëåäîâàòåëíî îáõîæäàíå íà ðåäîâåòå

                        {

                                   block=rand()%3;                     //çà âñåêè ðåä ñå èçáèðà áëîê, â êîéòî äà ñå çàïèøå ê

                                   do{

                                               while(block_free[block]==1)   block=++block%3;     //äîêàòî íå ñå íàìåðè ñâîáîäåí áëîê

                                               flag=0;

                                               col=rand()%3;             //èçáîð íà êîëîíà â áëîêà - îòíîñèòåëåí íîìåð îò 0 äî 2

                                               for(br_col=0;br_col<3;br_col++)                    //áðîè êîëêî êîëîíè ñà ïîïúëíåíè â áëîêà

                                               {

                                                           if(mas[r][block*3+col]!=0)                  col=++col%3;  //àêî êëåòêàòà íà ðåä r è èçáðàíàòà êîëîíà å çàåòà, ñå ïðåìèíàâà êúì ñëåäâàùàòà êëåòêà íà ðåäà è â áëîêà

                                                           else{

                                                                       mas[r][block*3+col]=k;          //çàïèñ íà ê â êëåòêàòà

                                                                       block_free[block]=1;   //ìàðêèðàíå, ÷å áëîêúò å çàåò

                                                                       flag=1;                                                //óñïåøåí çàïèñ

                                                                       break;

                                                           }

                                               }

                                               block=++block%3;                 //ñëåäâàù áëîê

                                   }while (flag==0);                                 //àêî çàïèñúò å óñïåøåí ñå ïðåìèíàâà êúì ñëåäâàùèÿ ðåä

                        }

            }

//èçâåæäàíå íà ìàñèâà

            for(r=0;r<3;r++)

            {

                        for(col=0;col<9;col++)

                                   cout<<mas[r][col]<<"   ";

                        cout<<'\n';

            }

}