Rezultati II testa




Rezultati drugoga testa iz Teorije algoritama

Indeks

Student

Pr PG

Pr1

Test 1

T1Tot

Pr2

Test 2

T2Tot

Total

03/2021

Golubović Zagorka

3

3

 

5

2

11.1

13.1

18.1

1/2022

Ašanin Ana

 

3.5

4.9

8.4

2

17.9

19.9

28.3

2/2022

Slavić Vuk

 

5

23.1

28.1

3

23.8

26.8

54.9

3/2022

Vujačić Danilo

 

5

8.2

13.2

3

10.6

13.6

26.8

5/2022

Dopuđa Aleksa

 

5

10.3

15.3

3

16.7

19.7

35

6/2022

Kažić Luka

 

4

9.8

13.8

3

12.6

15.6

29.4

7/2022

Vučković Tamara

 

3

9.8

12.8

3

11.2

14.2

27

8/2022

Vuksanović Lidija

 

4.5

10.7

15.2

3

17.5

20.5

35.7

10/2022

Vukčević Aleksej

 

3

5.1

8.1

2

15.5

17.5

25.6

11/2022

Avdović Tarik

 

5

9.6

14.6

3

19.5

22.5

37.1

13/2022

Spaić Martin

 

5

6.9

11.9

3

25.9

28.9

40.8

1019/23

Obradović Goran

 

 

 

0

2

8.6

10.6

0

 

Moguća realizacija trećeg zadatka je data u prilogu. Radiće za 20 nula u matrici ali neće za 23-24 već će početi da se osjeća eksponencijalni rast složenosti. Inteligentnija implementacija je potrebna za dalje unaprijeđenje. Veliki problem u studentskim radovima je predstavljala činjenica da se ne provjeravaju vrste i kolone za jedinstvenost upisa. Jedinstvenost se provjerava na nivou čitave matrice a sume na nivoima redova, kolona i dijagonala!

Urađeno je tek malkice bolje nego prvi test.

Nažalost najveći broj izrada je rješavao neke zadatke koji su zamišljeni a nisu bili postavljeni!?

 

Postoji znatna mogućnost pogreški u pregledanju zbog raznih pristupa i nečitljivog koda pa ćemo oko toga na pauzama časova predavanja (ili nakon predavanja) u četvrtak.

 

PREDMETNI NASTAVNIK

#include 
#include 
using namespace std;

struct koordinate {int x,y;};
bool provjera(int mat[][5],int n,int suma,int x,int y)
{
    int s=0,br=0;
    for(int j=0;j<n;j++)
        {
            s+=mat[x][j];
            if(mat[x][j]) br++;
        }
     if(s>suma || (s!=suma && br==n)) return false;
     s=0;br=0;
    for(int i=0;i<n;i++)
        {
            s+=mat[i][y];
            if(mat[i][y]) br++;
        }
    if(s>suma || (s!=suma && br==n)) return false;


    if(x==y){
            s=0;br=0;
    for(int i=0;i<n;i++)
        {
            s+=mat[i][i];
            if(mat[i][i]) br++;
        }
    if(s>suma || (s!=suma && br==n)) return false;

    }
    if(x==n-y-1){
            s=0;br=0;
    for(int i=0;i<n;i++)
        {
            s+=mat[i][n-i-1];
            if(mat[i][n-i-1]) br++;
        }
    if(s>suma || (s!=suma && br==n)) return false;

    }
    return true;
}

bool dodaj (int mat[][5],bool IND[],int x,int y,int n,int suma,int poc)
{
    for(int k=poc;k<=n*n;k++)
    {
        if(!IND[k-1]){
        mat[x][y]=k;
        IND[k-1]=true;
        if(provjera(mat,n,suma,x,y)) return true;
        mat[x][y]=0;
        IND[k-1]=false;
        }
    }
    return false;
}

int main()
{
    int n;
    cin>>n;
    int mat[n][5],suma=(n*(n*n+1))/2;
    bool IND[n*n],uspjeh;
    stack  sk;
    koordinate temp;
    for(int i=0;i<n*n;i++) IND[i]=false;
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++) {cin>>mat[i][j];
                            if(mat[i][j]) IND[mat[i][j]-1]=true;}
    int i=0,j=0,poc=1;
    bool napolje=false;
    do
    {
        if(mat[i][j] && j==n-1){
            j=0;
            i++;
        }
        else if(mat[i][j] && j!=n-1)j++;
        else
        {

            uspjeh=dodaj(mat,IND,i,j,n,suma,poc);
            if(uspjeh){
                temp.x=i;
                temp.y=j;
                sk.push(temp);
                poc=1;
                if(j==n-1)
                {
                    j=0;
                    i++;
                }
                else j++;
            }
            else if(!sk.empty())
            {
                temp=sk.top();
                sk.pop();
                i=temp.x;
                j=temp.y;
                poc=mat[i][j]+1;
                IND[mat[i][j]-1]=false;
                mat[i][j]=0;
            }
            else napolje=true;

        }
    }while(i
Test primjer:
4
0 0 0 13
0 11 0 0
0 0 0 0
0 0 15 0

Rezultat:
3 16 2 13
14 11 5 4
7 6 12 9
10 1 15 8



Ne propustite nijednu važnu vijest, pretplatite se na vijesti Akademski forum.