Za početak – Unos i validacija podataka

Šta se radi:

  1. Unosi se broj n

  2. Proverava se da li važi:

    5 ≤ n < 15
    
  3. Ako nije – ponavlja se unos

Zatim:

  • Unosi se niz A od n celih brojeva

Napomena:  Validacija se radi pomoću petlje (while ili do-while)

Detaljna obrada KORAKA 1, uz logiku i gotova rešenja u više jezika:

Zadatak: Uneti prirodan broj n takav da važi:  5 ≤ n < 15

To znači da

  • n mora biti ceo broj
  • n mora biti u opsegu od 5 do 14
  • unos se ponavlja dok nije ispravan

Logika rešenja: 

  1. Tražimo unos od korisnika
  2. Proveravamo uslov
  3. Ako nije dobar → ispis poruke
  4. Ponovo tražimo unos

Opšti algoritam (napisan u pseudokodu)

ponavljaj:
    učitaj n
    ako n < 5 ili n >= 15:
        ispiši "Broj nije u opsegu"
dok uslov nije ispunjen

Koliko god mogu da se koriste obe petlje (while, do-while), iz dosadašnjeg raznatranja može da se zaključi da je bolje koristiti petlju do-while .


Rešenje u jeziku , , , ,

Rešenje u jeziku C

int n;

do {
     printf("Unesite broj elemenata niza N:\n");
     scanf("%d", &n);

     if (n < 5 || n >= 15) {
         printf("Broj nije u opsegu\n");
     }

} while (n < 5 || n >= 15);

Rešenje u jeziku C++

int n;

do {
     cout << "Unesite broj elemenata niza N:" << endl;
     cin >> n;

     if (n < 5 || n >= 15) {
          cout << "Broj nije u opsegu" << endl;
     }

 } while (n < 5 || n >= 15);

Rešenje u jeziku C# (prilagođeno za Visual Studio 2010)

int n;

do
{
     Console.WriteLine("Unesite broj elemenata niza N:");
     n = int.Parse(Console.ReadLine());

     if (n < 5 || n >= 15)
     {
          Console.WriteLine("Broj nije u opsegu");
     }

} while (n < 5 || n >= 15);

Rešenje u jeziku Python

while True:
    n = int(input("Unesite broj elemenata niza N:\n"))

    if 5 <= n < 15:
        break
    else:
        print("Broj nije u opsegu")

TIPIČNE GREŠKE 

  1. ❌ koriste && umesto ||

  2. ❌ pogrešno napišu uslov:

    n <= 5  (umesto n < 5)
    
  3. ❌ ne ponavljaju unos

  4. ❌ zaborave poruku o grešci

  5. ❌ u C# koriste Convert.ToInt32 bez objašnjenja (bolje int.Parse za početak)

Način rada

Program treba da ispiše:

Unesite elemente niza A:

Zatim korisnik unosi brojeve jedan po jedan (svaki u novom redu), pa ako je na primer n=5:

12
0
15
0
-15

Program samo čita vrednosti redom i smešta ih u niz.

REŠENJA PO JEZICIMA -> , , ,

Rešenje u jeziku C

    // treba na pocetku main-a 
// deklarisati celobrojni niz od MAX elemenata
// int A[15];
// a koristiti koliko je potrebno
printf("Unesite elemente niza A:\n"); for (int i = 0; i < n; i++) { scanf("%d", &A[i]); }

Rešenje u jeziku C++

// treba deklarisati celobrojni niz od MAX elemenata 
// int A[15];
// a koristiti koliko je potrebno

cout << "Unesite elemente niza A:" << endl; for (int i = 0; i < n; i++) { cin >> A[i]; }

Rešenje u jeziku C# (prilagođeno za Visual Studio 2010)


      int [] A = new int[n];

Console.WriteLine("Unesite elemente niza A:"); for (int i = 0; i < n; i++) { A[i] = int.Parse(Console.ReadLine()); }

Rešenje u jeziku Python


A = []

print("Unesite elemente niza A:")

for i in range(n):
    A.append(int(input()))

i

1. Jedna poruka, više unosa

Unesite elemente niza A:

Ova poruka se ispisuje samo jednom.  Nakon toga korisnik unosi n brojeva

2. Petlja kontroliše unos

za i od 0 do n-1

 Petlja garantuje da će se uneti tačno n elemenata

3. Svaki unos ide u niz

A[i] = uneta vrednost

 Prvi broj → A[0],  Drugi broj → A[1], itd.

4. Vizuelno objašnjenje

Ako je:

n = 5

i unos:

12
0
15
0
-15

dobijamo:

Indeks:   0   1   2   3   4
A:       12   0  15   0 -15

👉 „Program ne pita za svaki broj posebno — samo čita sledeći broj iz ulaza i smešta ga u niz.“


1.1 

Šta se radi:

  1. Ispis niza A

  2. Računa se srednja vrednost po formuli:  srednja = zbir svih elemenata / n

  3. Broji se koliko elemenata je deljivo sa 3 i veće je od srednje vrednosti

Za svaki element se gleda:
ako je (element % 3 == 0 i element > srednja)
povećaj brojač

-> U PSEUDOKOD - Korak po korak:

1.1.1. ISPIS NIZA

za i od 0 do n-1:
    ispis A[i]

1.1.2. SREDNJA VREDNOST

Korak 1 – zbir elemenata

zbir = 0
za i od 0 do n-1:
    zbir += A[i]

Korak 2 – srednja vrednost

srednja = zbir / n

Napomena:  srednja mora biti realan broj !

1.1.3. BROJANJE

brojac = 0

za i od 0 do n-1:
    ako A[i] % 3 == 0 i A[i] > srednja:
        brojac++

1.1.4. PRIMER

Ulaz:

12 0 15 0 -15

Računanje:

Zbir:

12 + 0 + 15 + 0 - 15 = 12

Srednja:

12 / 5 = 2.4

Provera:

Element deljiv sa 3 > 2.4 Broji se
12 DA DA
0 DA NE
15 DA DA
0 DA NE
-15 DA NE

Rezultat:

Broj elemenata = 2

-> Deo rešenja u jeziku , , , ,

Rešenje u jeziku C

 
    int zbir = 0;

    // ispis
    for (int i = 0; i < n; i++) {
        printf("%d ", A[i]);
        zbir += A[i];
    }
    printf("\n");

    double srednja = (double)zbir / n;

    int brojac = 0;

    for (int i = 0; i < n; i++) {
        if (A[i] % 3 == 0 && A[i] > srednja) {
            brojac++;
        }
    }

    printf("Srednja vrednost niza: %.2lf\n", srednja);
    printf("Broj elemenata: %d\n", brojac);
 

Rešenje u jeziku C++

 
    int zbir = 0;

    for (int i = 0; i < n; i++) {
        cout << A[i] << " ";
        zbir += A[i];
    }
    cout << endl;

    double srednja = (double)zbir / n;

    int brojac = 0;

    for (int i = 0; i < n; i++) {
        if (A[i] % 3 == 0 && A[i] > srednja) {
            brojac++;
        }
    }

    cout << "Srednja vrednost niza: " << srednja << endl;
    cout << "Broj elemenata: " << brojac << endl;

 

Rešenje u jeziku C# (prilagođeno za Visual Studio 2010)

 
        int zbir = 0;

        for (int i = 0; i < n; i++)
        {
            Console.Write(A[i] + " ");
            zbir += A[i];
        }
        Console.WriteLine();

        double srednja = (double)zbir / n;

        int brojac = 0;

        for (int i = 0; i < n; i++)
        {
            if (A[i] % 3 == 0 && A[i] > srednja)
            {
                brojac++;
            }
        }

        Console.WriteLine("Srednja vrednost niza: " + srednja);
        Console.WriteLine("Broj elemenata: " + brojac);
 

Rešenje u jeziku Python


      zbir = 0

      for x in A:
          print(x, end=" ")
          zbir += x

      print()

      srednja = zbir / n

      brojac = 0

      for x in A:
          if x % 3 == 0 and x > srednja:
              brojac += 1

      print("Srednja vrednost niza:", srednja)
      print("Broj elemenata:", brojac)
      

Napomene: 

✔️ srednja mora biti double / float
✔️ uslov ima dva dela (AND)
✔️ 0 je deljivo sa 3 (ovo je česta greška)


1.2

Od niza A formira se niz B po pravilima:

Ako je A[i] > 0 → zbir cifara
Ako je A[i] < 0 → apsolutna vrednost
Ako je A[i] == 0 → 0

Na kraju:

Ispisati niz B

-> U PSEUDOKOD-u:

pseudokod - KORAK PO KORAK

 1. Kreiranje niza B 

formirati niz B veličine n

 2. Prolazak kroz niz A

za i od 0 do n-1

 3. Grananje 

ako A[i] > 0:
    B[i] = zbir cifara

inače ako A[i] < 0:
    B[i] = apsolutna vrednost

inače:
    B[i] = 0

KAKO DOBITI ZBIR CIFARA

Primer:

123 → 1 + 2 + 3 = 6

Algoritam:

zbir = 0
broj = A[i]

dok broj != 0:
    cifra = broj % 10
    zbir += cifra
    broj = broj / 10

 PRIMER 

Ulaz:

A = 12 0 15 0 -15

 Primer računanja:

A[i] Pravilo B[i]
12 zbir cifara → 1+2 3
0 ostaje 0 0
15 1+5 6
0 0 0
-15 apsolutna vrednost 15

 Rezultat:

B = 3 0 6 0 15

-> Deo rešenja u jeziku , , , ,

Rešenje u jeziku C



int zbirCifara(int broj) {
    int zbir = 0;
    while (broj != 0) {
        zbir += broj % 10;
        broj /= 10;
    }
    return zbir;
}

int main() {

  // nakon pocetnog dela

    for (int i = 0; i < n; i++) {
        if (A[i] > 0) {
            B[i] = zbirCifara(A[i]);
        } else if (A[i] < 0) {
            B[i] = abs(A[i]);
        } else {
            B[i] = 0;
        }
    }

    for (int i = 0; i < n; i++) {
        printf("%d ", B[i]);
    }
   // nastavak sledi
 

Rešenje u jeziku C++



int zbirCifara(int broj) {
    int zbir = 0;
    while (broj != 0) {
        zbir += broj % 10;
        broj /= 10;
    }
    return zbir;
}

int main() {  

  // nakon pocetnog dela

    for (int i = 0; i < n; i++) {
        if (A[i] > 0) {
            B[i] = zbirCifara(A[i]);
        } else if (A[i] < 0) {
            B[i] = abs(A[i]);
        } else {
            B[i] = 0;
        }
    }

    for (int i = 0; i < n; i++) {
        cout << B[i] << " ";
    }

 // nastavak sledi
  

Rešenje u jeziku C# (prilagođeno za Visual Studio 2010)


  
    static int ZbirCifara(int broj)
    {
        int zbir = 0;
        while (broj != 0)
        {
            zbir += broj % 10;
            broj /= 10;
        }
        return zbir;
    }

    static void Main()
    {
       // nakon pocetnog dela

        for (int i = 0; i < n; i++)
        {
            if (A[i] > 0)
            {
                B[i] = ZbirCifara(A[i]);
            }
            else if (A[i] < 0)
            {
                B[i] = Math.Abs(A[i]);
            }
            else
            {
                B[i] = 0;
            }
        }

        for (int i = 0; i < n; i++)
        {
            Console.Write(B[i] + " ");
        }
    // nastavak sledi

Rešenje u jeziku Python

def zbir_cifara(broj):
    zbir = 0
    while broj != 0:
        zbir += broj % 10
        broj //= 10
    return zbir


B = []

for x in A:
    if x > 0:
        B.append(zbir_cifara(x))
    elif x < 0:
        B.append(abs(x))
    else:
        B.append(0)

for x in B:
    print(x, end=" ")

TIPIČNE GREŠKE 

❌ zaborave da izdvoje cifre (rade samo broj % 10)
❌ ne resetuju promenljivu zbir
❌ pokušaju zbir cifara nad negativnim brojem
❌ zaborave da 0 ostaje 0
❌ koriste if umesto if-else if pa pogrešno upisuju vrednosti

Napomena: Za svaki element iz A pravimo NOVU vrednost u B — ništa ne menjamo u A.


1.3

Od niza B formira se niz CAko je broj prost → upisati njegov kvadrat, a Ako nije prost → upisati proizvod cifara 

Za svaki element iz niza B:

Uslov Novi element
prost broj kvadrat broja
nije prost proizvod cifara

Provera da li je broj prost:

Broj je prost ako:

  • veći je od 1

  • deljiv samo sa 1 i samim sobom

Algoritam:

prost = true
za i od 2 do broj/2
    ako (broj % i == 0)
        prost = false

Proizvod cifara:

Primer: 123 → 1 * 2 * 3 = 6

-> U PSEUDOKOD-u:

pseudokod - KORAK PO KORAK

 1. Kreiranje niza C

formirati niz C veličine n

 2. Prolazak kroz niz B

za i od 0 do n-1

 3. Provera da li je broj prost

broj je prost ako:
- veći je od 1
- nema delioce osim 1 i sebe

Algoritam:

prost = true

ako broj <= 1:
    prost = false

za i od 2 do broj/2:
    ako broj % i == 0:
        prost = false

  4. Grananje

ako je broj prost:
    C[i] = broj * broj

inače:
    C[i] = proizvod cifara

KAKO DOBITI PROIZVOD CIFARA

Primer:

123 → 1 * 2 * 3 = 6

Algoritam:

proizvod = 1

dok broj != 0:
    cifra = broj % 10
    proizvod *= cifra
    broj = broj / 10

 PRIMER 

Ulaz:

B = 3 0 6 0 15

 Obrada:

B[i] Prost? Operacija C[i]
3 DA 9
0 NE proizvod cifara 0
6 NE 6 6
0 NE 0 0
15 NE 1×5 5

 Rezultat:

C = 9 0 6 0 5

 NAPOMENE 

 

✔️ 0 i 1 nisu prosti brojevi
✔️ proizvod cifara za jednocifren broj = taj broj
✔️ proizvod cifara za 0 = 0

 TIPIČNE GREŠKE

❌ smatraju da je 1 prost broj
❌ ne zaustave proveru kada nađu delilac
❌ pogrešno računaju proizvod cifara
❌ koriste isti broj i menjaju ga (gube original)
➡️ treba koristiti pomoćnu promenljivu

-> Deo rešenja u jeziku , , , ,

Rešenje u jeziku C

 

bool prost(int broj) {
    if (broj <= 1) return false;
    for (int i = 2; i <= broj / 2; i++) {
        if (broj % i == 0) return false;
    }
    return true;
}

int proizvodCifara(int broj) {
    if (broj == 0) return 0;

    int proizvod = 1;
    while (broj != 0) {
        proizvod *= broj % 10;
        broj /= 10;
    }
    return proizvod;
}

int main() {

  // .....

    for (int i = 0; i < n; i++) {
        if (prost(B[i])) {
            C[i] = B[i] * B[i];
        } else {
            C[i] = proizvodCifara(B[i]);
        }
    }

    for (int i = 0; i < n; i++) {
        printf("%d ", C[i]);
    }

  // .... 

Rešenje u jeziku C++


  
bool prost(int broj) {
    if (broj <= 1) return false;
    for (int i = 2; i <= broj / 2; i++) {
        if (broj % i == 0) return false;
    }
    return true;
}

int proizvodCifara(int broj) {
    if (broj == 0) return 0;

    int proizvod = 1;
    while (broj != 0) {
        proizvod *= broj % 10;
        broj /= 10;
    }
    return proizvod;
}

int main() {
   
  // ...

    for (int i = 0; i < n; i++) {
        if (prost(B[i])) {
            C[i] = B[i] * B[i];
        } else {
            C[i] = proizvodCifara(B[i]);
        }
    }

    for (int i = 0; i < n; i++) {
        cout << C[i] << " ";
    }

  // ...

Rešenje u jeziku C# (prilagođeno za Visual Studio 2010)



    static bool Prost(int broj)
    {
        if (broj <= 1) return false;

        for (int i = 2; i <= broj / 2; i++)
        {
            if (broj % i == 0)
                return false;
        }

        return true;
    }

    static int ProizvodCifara(int broj)
    {
        if (broj == 0) return 0;

        int proizvod = 1;
        while (broj != 0)
        {
            proizvod *= broj % 10;
            broj /= 10;
        }
        return proizvod;
    }

    static void Main()
    {
        // ...

        for (int i = 0; i < n; i++)
        {
            if (Prost(B[i]))
            {
                C[i] = B[i] * B[i];
            }
            else
            {
                C[i] = ProizvodCifara(B[i]);
            }
        }

        for (int i = 0; i < n; i++)
        {
            Console.Write(C[i] + " ");
        }

   // ...

Rešenje u jeziku Python

def prost(broj):
    if broj <= 1:
        return False
    for i in range(2, broj // 2 + 1):
        if broj % i == 0:
            return False
    return True

def proizvod_cifara(broj):
    if broj == 0:
        return 0
    proizvod = 1
    while broj != 0:
        proizvod *= broj % 10
        broj //= 10
    return proizvod

C = []

for x in B:
    if prost(x):
        C.append(x * x)
    else:
        C.append(proizvod_cifara(x))

for x in C:
    print(x, end=" ")

Napomene

Ovde kombinujemo DVE logike:

  1. matematičku (prosti broj)
  2. rad sa ciframa (proizvod)

1.4 

Od niza C treba formirati kvadratnu matricu m × m tako da:  m * m ≥ broj elemenata niza C ( m je najmanji mogući broj )

Treba odrediti dimenziju matrice m x m

Uslov:

m * m ≥ broj elemenata niza C

    gde je m najmanji ceo broj koji zadovoljava uslov

Primer:

  • ako C ima 5 elemenata → m = 3 (jer 3×3 = 9)

Popunjavanje matrice:

  • ide se red po red

  • ako nestane elemenata → vraća se na početak niza C

Primer:

C = [9, 0, 6, 0, 5]

Matrica:
9 0 6
0 5 9
0 6 0

-> U PSEUDOKOD-u:

Korak po korak

1. Određivanje dimenzije m

m = 1
dok m * m < n:
    m++

2. Kreiranje matrice

matrica M dimenzije m x m

3. Popunjavanje matrice

k = 0

za i od 0 do m-1:
    za j od 0 do m-1:
        M[i][j] = C[k]
        k++

        ako k == n:
            k = 0   (vraćanje na početak niza)

  IDEJA je da kada potrošimo sve elemente niza C  ne stajemo,  nego krećemo opet od početka

 PRIMER 

Ulaz:

C = 9 0 6 0 5
n = 5

Određivanje m:

1*1 = 1  < 5
2*2 = 4  < 5
3*3 = 9  ≥ 5  → m = 3

Popunjavanje:

i j k vrednost
0 0 0 9
0 1 1 0
0 2 2 6
1 0 3 0
1 1 4 5
1 2 5 → 0 9
2 0 1 0
2 1 2 6
2 2 3 0

🔹 Rezultat:

9 0 6
0 5 9
0 6 0

Najčešće GREŠKE

❌ ne vraćaju k na 0
❌ stanu kad potroše niz
❌ pogrešno računaju m
❌ pokušaju m = n (što je pogrešno)
❌ mešaju red i kolonu

-> Deo rešenja u jeziku , , , ,

Rešenje u jeziku C

 
    // ...

    int m = 1;
    while (m * m < n) {
        m++;
    }

    int M[10][10];
    int k = 0;

    for (int i = 0; i < m; i++) {
        for (int j = 0; j < m; j++) {
            M[i][j] = C[k];
            k++;

            if (k == n) k = 0;
        }
    }

    for (int i = 0; i < m; i++) {
        for (int j = 0; j < m; j++) {
            printf("%d ", M[i][j]);
        }
        printf("\n");
    }
    // ...

Rešenje u jeziku C++

 
    // ...

    int m = 1;
    while (m * m < n) {
        m++;
    }

    int M[10][10];
    int k = 0;

    for (int i = 0; i < m; i++) {
        for (int j = 0; j < m; j++) {
            M[i][j] = C[k];
            k++;

            if (k == n) k = 0;
        }
    }

    for (int i = 0; i < m; i++) {
        for (int j = 0; j < m; j++) {
            cout << M[i][j] << " ";
        }
        cout << endl;
    }

    // ...

Rešenje u jeziku C# (Visual Studio 2010)

    
        // .... 
  
        int m = 1;
        while (m * m < n)
        {
            m++;
        }

        int[,] M = new int[m, m];
        int k = 0;

        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j < m; j++)
            {
                M[i, j] = C[k];
                k++;

                if (k == n) k = 0;
            }
        }

        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j < m; j++)
            {
                Console.Write(M[i, j] + " ");
            }
            Console.WriteLine();
        }
        // ....
  

Rešenje u jeziku Python



m = 1
while m * m < n:
    m += 1

M = []
k = 0

for i in range(m):
    red = []
    for j in range(m):
        red.append(C[k])
        k += 1
        if k == n:
            k = 0
    M.append(red)

for red in M:
    for x in red:
        print(x, end=" ")
    print()

 Napomena  

„Matrica se puni red po red, a kada nestane elemenata — krećemo opet od početka niza.“


1.5

Najteži deo zadatka

Za svaki element matrice računa se:

zbir svih elemenata u istom redu
+ zbir svih elemenata u istoj koloni
- trenutni element (da se ne duplira)

Zašto oduzimamo element?

Zato što se on pojavljuje jednom u zbiru reda i jednom u zbiru kolone pa bi bio uračunat 2 puta.


Formula:

Za element D[i][j]:

D[i][j] = suma_reda[i] + suma_kolone[j] - M[i][j]

-> U PSEUDOKOD-u:

KAKO RAČUNAMO - korak po korak

Korak 1 – zbir reda

za k od 0 do m-1:
    suma_reda += M[i][k]

Korak 2 – zbir kolone

za k od 0 do m-1:
    suma_kolone += M[k][j]

Korak 3 – upis u D

D[i][j] = suma_reda + suma_kolone - M[i][j]

PRIMER

Ulaz:

M =
9 0 6
0 5 9
0 6 0

Računanje za D[0][0]:

Red:  9 + 0 + 6 = 15

Kolona: 9 + 0 + 0 = 9
D[0][0] = 15 + 9 - 9 = 15

Računanje za D[0][1]:

Red:  9 + 0 + 6 = 15 

Kolona: 0 + 5 + 6 = 11
D[0][1] = 15 + 11 - 0 = 26

🔹 Konačan rezultat:

15 26 24
23 20 20
15 11 21

Najčešće GREŠKE

❌ ne oduzmu M[i][j]
❌ saberu samo red ili samo kolonu
❌ pogrešan indeks u petlji
❌ menjaju matricu M umesto da prave D
❌ zaborave da resetuju sume

-> Deo rešenja u jeziku , , , ,

Rešenje u jeziku C

 

    // ako je 
    int m = 3;
    int M[3][3] = {
        {9, 0, 6},
        {0, 5, 9},
        {0, 6, 0}
    };

    int D[3][3];

    for (int i = 0; i < m; i++) {
        for (int j = 0; j < m; j++) {

            int suma_reda = 0;
            int suma_kolone = 0;

            for (int k = 0; k < m; k++) {
                suma_reda += M[i][k];
                suma_kolone += M[k][j];
            }

            D[i][j] = suma_reda + suma_kolone - M[i][j];
        }
    }

    for (int i = 0; i < m; i++) {
        for (int j = 0; j < m; j++) {
            printf("%d ", D[i][j]);
        }
        printf("\n");
    }

  // ...

Rešenje u jeziku C++

 
    // ako je 
  
    int m = 3;
    int M[3][3] = {
        {9, 0, 6},
        {0, 5, 9},
        {0, 6, 0}
    };

    int D[3][3];

    for (int i = 0; i < m; i++) {
        for (int j = 0; j < m; j++) {

            int suma_reda = 0;
            int suma_kolone = 0;

            for (int k = 0; k < m; k++) {
                suma_reda += M[i][k];
                suma_kolone += M[k][j];
            }

            D[i][j] = suma_reda + suma_kolone - M[i][j];
        }
    }

    for (int i = 0; i < m; i++) {
        for (int j = 0; j < m; j++) {
            cout << D[i][j] << " ";
        }
        cout << endl;
    }

  // ...

Rešenje u jeziku C# (Visual Studio 2010)

 
        // ako je 
  
        int m = 3;

        int[,] M = {
            {9, 0, 6},
            {0, 5, 9},
            {0, 6, 0}
        };

        int[,] D = new int[m, m];

        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j < m; j++)
            {
                int sumaReda = 0;
                int sumaKolone = 0;

                for (int k = 0; k < m; k++)
                {
                    sumaReda += M[i, k];
                    sumaKolone += M[k, j];
                }

                D[i, j] = sumaReda + sumaKolone - M[i, j];
            }
        }

        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j < m; j++)
            {
                Console.Write(D[i, j] + " ");
            }
            Console.WriteLine();
      // .... 

Rešenje u jeziku Python

m = 3

M = [
    [9, 0, 6],
    [0, 5, 9],
    [0, 6, 0]
]

D = []

for i in range(m):
    red = []
    for j in range(m):
        suma_reda = 0
        suma_kolone = 0

        for k in range(m):
            suma_reda += M[i][k]
            suma_kolone += M[k][j]

        red.append(suma_reda + suma_kolone - M[i][j])

    D.append(red)

for red in D:
    for x in red:
        print(x, end=" ")
    print()

Za svaki element gledamo njegov red i kolonu — i sabiramo sve oko njega.“


TIPIČNE GREŠKE 

  • nije urađena validacija unosa

  • pogrešno računata srednju vrednost (int umesto double)

  • pogrešno izdvajanje cifara

  • učenici možda ne znaju proveru prostog broja

  • pogrešno popunjavanje matrice (ne vraća se na početak niza)

  • zaboravljeno da se oduzme element u matrici D

Last modified: Tuesday, 28 April 2026, 4:14 PM