Dvodimenzioni nizovi (matrice) u jeziku C++
Sadržaj stranice
Dobrodošli na stranicu posvećenu dvodimenzionalnim i višedimenzionalnim nizovima u C++! Ova stranica nudi sve ključne informacije, primere koda i praktične savete o radu sa matricama i višedimenzionalnim strukturama podataka. Pomoću tabele sadržaja možete brzo preskočiti na interesantne sekcije i pronaći sadržaj koji vas zanima.
Uvod
Dvodimenzionalni nizovi, ili matrice, predstavljaju ključni koncept u C++ programiranju, omogućavajući efikasno skladištenje i manipulaciju podacima u tabelarnom formatu. Ova stranica pruža sveobuhvatan uvod u rad sa dvodimenzionalnim nizovima, uključujući deklaraciju, inicijalizaciju i praktične primere koji ilustruju njihovu primenu u realnim situacijama.
Formiranje matrice
Primer 1: Ispisivanje po redovima i kolonama
Pretpostavimo da želimo da ispišemo niz od prvih 100 prirodnih brojeva, ali da budu ispisani u 10 redova i 10 kolona, kao na slici ispod:

Da bi smo ovo ispisali koristimo ugnježdenu for petlju:
#include <iostream>
using namespace std;
// Program za ispis prvih 100 prirodnih brojeva u 10 redova i 10 kolona
int main() {
for (int i = 0; i < 10; i++) {
// i predstavlja red (počinje od 0 i ide do 9)
for (int j = 0; j < 10; j++) {
// j predstavlja kolonu (počinje od 0 i ide do 9)
int broj = 10 * i + (j + 1); // Računanje broja u zavisnosti od reda i kolone
cout << broj << " "; // Ispis broja u istoj liniji
}
cout << endl; // Prelazak u novi red nakon što se završi kolona
}
return 0; // Kraj programa
}
Da bi ove brojeve stavili u memoriju, morali bi smo da uvedemo ili 10 nizova po 10 elemenata ili ako želimo da sve podatke upamtimo u jednoj promenljivoj, onda bi upotrebili dvodimenzioni niz(matricu)
int matrica[ 10 ][ 10 ] ;
Ovo je matrica celih brojeva koja ima 10 redova i 10 kolona.
Pristup određenom elementu koji se recimo, nalazi u 3 redu i 5. koloni bi bio:
matrica[3][5];
Prethodni primer bi bio malo izmenjen
#include <iostream>
using namespace std;
// Program za popunjavanje i ispis dvodimenzionalnog niza (matrice)
int main() {
int matrica[10][10]; // Deklaracija matrice sa 10 redova i 10 kolona
// Popunjavanje matrice
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
matrica[i][j] = 10 * i + (j + 1); // Računanje vrednosti i smeštanje u matricu
}
}
// Ispis matrice
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
cout << matrica[i][j] << " "; // Ispis elemenata u redu
}
cout << endl; // Prelazak u novi red
}
return 0; // Kraj programa
}
U svakom ciklusu izračunat broj a se smešta u matricu u i-ti red i j-tu kolonu.
Testirajte svoj kod ovde
Inicijalizacija matrice
Ukoliko unapred znamo brojeve koje treba staviti u matricu, možemo ih definisati na sličan način kao što inicijalizujemo jednodimenzioni niz, ali u ovom slučaju se radi o nizu nizova. Na primer, ocene iz nekih predmeta za više učenika mogu se smestiti u matricu:
int ocene[3][8] = {{2, 3, 2, 2, 4, 5, 5, 4},
{2, 3, 2, 2, 4, 5, 5, 4},
{2, 3, 2, 2, 4, 5, 5, 4}};
U uglastim zagradama je potrebno navesti dimenzije, čak i ako su one implicitno određene nizovima korišćenim za inicijalizaciju matrice – ovde 3 reda i 8 kolona. Ovo ukazuje da je matrica zapravo niz elemenata, gde su ti elementi takođe nizovi, a svaki red i kolona imaju svoj indeks pomoću kojeg se pristupa pojedinačnim elementima (u ovom primeru redovi su indeksirani od 0 do 2, a kolone od 0 do 7).
Da bi izračunali prosek svih elemenata matrice, potrebno je prvo sabrati sve elemente, a zatim podeliti dobijeni zbir sa ukupnim brojem elemenata. Za to se koristi ugnježdena for petlja.
Primer 2: Prosek ocena svih učenika
Tekst: Izračunati prosečnu ocenu svih učenika iz prethodno zadatih nizova
#include <iostream>
using namespace std;
// Funkcija za izračunavanje prosečne ocene svih učenika
void prosek() {
int ocene[3][8] = {{2, 3, 2, 2, 4, 5, 5, 4}, // Ocene prvog učenika
{2, 5, 2, 5, 4, 5, 5, 4}, // Ocene drugog učenika
{2, 4, 4, 2, 4, 3, 5, 4}}; // Ocene trećeg učenika
int zbir = 0; // Promenljiva za sabiranje svih ocena
double prosek; // Promenljiva za čuvanje proseka
// Petlja za prolazak kroz sve ocene u matrici
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 8; j++) {
zbir = zbir + ocene[i][j]; // Dodavanje trenutne ocene u zbir
cout << ocene[i][j] << " "; // Ispis trenutne ocene
}
cout << endl; // Novi red nakon svakog reda ocena
}
cout << "Prosek: ";
prosek = zbir / (3.0 * 8.0); // Izračunavanje proseka (3 reda x 8 ocena)
cout << prosek; // Ispis proseka
}
int main() {
prosek(); // Poziv funkcije za izračunavanje proseka
return 0; // Kraj programa
}
Objašnjenje
1. Deklaracija matrice:
- Matrica ocene[3][8] sadrži ocene tri učenika, svaki sa po osam ocena.
2. Prolazak kroz matricu:
- Ugnježdena for petlja prolazi kroz sve redove i kolone matrice.
- Svaka ocena se sabira u promenljivu zbir.
3. Izračunavanje proseka:
- Prosek se računa deljenjem ukupnog zbira ocena sa brojem svih elemenata matrice (3 x 8).
4. Ispis:
- Ocene se ispisuju red po red, a nakon prolaska kroz sve ocene, ispisuje se prosečna ocena.
Posle pokretanja
Primer 3: Prosek ocena po svakom učeniku
Tekst: Izračunati prosečnu ocenu za svakog učenika ponaosob iz prethodno zadatih nizova
Da bi izračunali prosek po svakom učeniku, onda moramo posebno sabrati svaki red ocena i podeliti sa brojem elemenata svakog unutrašnjeg niza jer red svaki ocena predstavlja ocene jednog učenika. Prosek će sada biti niz brojeva:
#include <iostream>
using namespace std;
// Funkcija za izračunavanje prosečne ocene za svakog učenika
void proseciPoUceniku() {
int ocene[3][8] = {{2, 3, 2, 2, 4, 5, 5, 4}, // Ocene prvog učenika
{2, 5, 2, 5, 4, 5, 5, 4}, // Ocene drugog učenika
{2, 4, 4, 2, 4, 3, 5, 4}}; // Ocene trećeg učenika
double zbir = 0; // Promenljiva za sabiranje ocena jednog učenika
double prosek[3]; // Niz za čuvanje proseka za svakog učenika
// Petlja za prolazak kroz ocene svakog učenika
for (int i = 0; i < 3; i++) {
// Prolazak kroz sve ocene trenutnog učenika
for (int j = 0; j < 8; j++) {
zbir += ocene[i][j]; // Dodavanje trenutne ocene u zbir
cout << ocene[i][j] << " "; // Ispis trenutne ocene
}
prosek[i] = zbir / 8; // Računanje proseka za trenutnog učenika
zbir = 0; // Resetovanje zbira za sledećeg učenika
cout << endl; // Novi red nakon ocena jednog učenika
}
// Ispis proseka za svakog učenika
cout << "Proseci po učeniku:" << endl;
for (int i = 0; i < 3; i++) {
cout << "Učenik " << i + 1 << ": " << prosek[i] << endl;
}
}
int main() {
proseciPoUceniku(); // Poziv funkcije za izračunavanje proseka po učeniku
return 0; // Kraj programa
}
Objašnjenje
1. Deklaracija matrice i nizova:
- Matrica ocene[3][8] sadrži ocene učenika.
- Niz prosek[3] čuva prosečne ocene svakog učenika.
2. Računanje proseka:
- Prva for petlja prolazi kroz učenike.
- Unutrašnja petlja prolazi kroz ocene trenutnog učenika i sabira ih u zbir.
- Nakon računanja proseka za jednog učenika, zbir se resetuje.
3. Ispis proseka:
- Na kraju programa ispisuju se proseci svakog učenika.
Posle pokretanja:

Učitavanje matrice
U prethodnom primeru, matrica ocena je bila zadata. Da bi korisnik mogao samostalno da unese matricu, potrebno je prvo učitati broj redova i kolona matrice. Ovaj proces se može postići sledećim koracima:
int matrica[10][10], m, n;
cin >> m >> n; // Učitavanje dimenzija matrice
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cin >> matrica[i][j]; // Učitavanje elemenata matrice
}
}
Kompletno rešenje:
#include <iostream>
using namespace std;
// Funkcija za unos matrice od strane korisnika
void ucitajMatricu() {
int matrica[10][10]; // Matrica maksimalne veličine 10x10
int m, n; // Broj redova i kolona
cout << "Unesite broj redova i kolona matrice (maksimalno 10x10): ";
cin >> m >> n; // Učitavanje dimenzija matrice
if (m > 10 || n > 10 || m <= 0 || n <= 0) {
cout << "Nevalidne dimenzije matrice!" << endl;
return; // Završetak funkcije ako su dimenzije nevalidne
}
cout << "Unesite elemente matrice:" << endl;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cin >> matrica[i][j]; // Učitavanje elementa matrice
}
}
cout << "Uneta matrica je:" << endl;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cout << matrica[i][j] << " "; // Ispis elementa matrice
}
cout << endl; // Novi red za sledeći red matrice
}
}
int main() {
ucitajMatricu(); // Poziv funkcije za unos matrice
return 0; // Kraj programa
}
Primer 5: Skakač napada
Učitati poziciju skakača u šahu m i n i odrediti koja polja skakač napada. Ako su kolone obeležene 1-8 a redovi A-H, obeležiti šiframa polja koja skakač napada. Ostala polja obeležiti zvezdicom, osim polja gde se nalazi skakač.
Ulaz
Red i kolona koji predstavljaju poziciju skakača 1<=m<=8, 1<=n<=8
Izlaz
Šifre polja na onim poljima koji skakač napada, prazno na polju gde se nalazi skakač, zvezdice na ostalim
Uputstvo:
Da bi smo ispisali odgovarajući tekst na odgovarajuće polje koristićemo matricu čiji su elementi tipa string. Pošto je šahovska tabla dimenzija 8*8, a indeks u matrici počinje od nule, kreiraćemo matricu reda 9*9.
string tabla[9][9];
Treba redom proći kroz sve elemente matrice. Pošto je poslednji red u matrici prvi red u šahovskoj tabli treba formirati ugnježdenu for petlju na sledeći način:
for(int i=8; i>=1; i--)
{
for(int j=1; j<=8; j++)
{
...
}
}
Kada se naiđe na poziciju i=m, j=n, odatle treba ispisati šifre na poljima koju napada skakač. Npr. pozicija i=m+2, j=n-1 i j=n+1 itd.
Primer:
Ulaz
4
4
Izlaz

Rešenje
#include <iostream>
#include <string>
using namespace std;
int main() {
int m, n;
string tabla[9][9]; // Matrica za šahovsku tablu
cout << "Unesite poziciju skakača (red i kolona): ";
cin >> m >> n;
for (int i = 8; i >= 1; i--) {
for (int j = 1; j <= 8; j++) {
if (i == m && j == n) {
tabla[i][j] = " "; // Polje skakača ostaje prazno
} else if ((i == m + 2 && (j == n - 1 || j == n + 1)) ||
(i == m - 2 && (j == n - 1 || j == n + 1)) ||
(i == m + 1 && (j == n - 2 || j == n + 2)) ||
(i == m - 1 && (j == n - 2 || j == n + 2))) {
tabla[i][j] = "S"; // Polje koje skakač napada
} else {
tabla[i][j] = "*"; // Ostala polja su zvezdice
}
}
}
cout << "Šahovska tabla:" << endl;
for (int i = 8; i >= 1; i--) {
for (int j = 1; j <= 8; j++) {
cout << tabla[i][j] << " ";
}
cout << endl; // Novi red nakon svakog reda table
}
return 0;
}
Objašnjenje:
- Unos korisnika: Unose se red i kolona na kojima se nalazi skakač.
- Logika šahovske table:
- Matrica tabla predstavlja šahovsku tablu.
- Ugnježdene petlje prolaze kroz sve redove i kolone table.
- Određuju se polja koja skakač napada pomoću pravila kretanja u šahu.
- Ispis rezultata: Prikazuje šahovsku tablu sa označenim poljima:
- " " za polje na kojem je skakač.
- "S" za polja koja skakač napada.
- "*" za ostala polja.
Zadaci za vežbanje
Kako biste bolje razumeli rad sa dvodimenzionalnim nizovima u C++, pripremili smo nekoliko praktičnih zadataka koji će vam pomoći da savladate osnovne koncepte.
1. Kreiranje tabele za evidenciju ocena učenika
Opis zadatka:
Napravite program koji koristi dvodimenzionalni niz za čuvanje ocena učenika iz nekoliko predmeta.
- Niz treba da ima redove koji predstavljaju učenike i kolone koje predstavljaju predmete.
- Program treba da omogući unos ocena, ispis ocena svakog učenika i računanje prosečne ocene za svakog učenika i svaki predmet.
Primer ispisa:
Unesite ocene za 3 učenika i 4 predmeta:
Učenik 1: 5 4 3 5
Učenik 2: 4 3 4 4
Učenik 3: 5 5 5 4
Prosečna ocena po učeniku:
Učenik 1: 4.25
Učenik 2: 3.75
Učenik 3: 4.75
Prosečna ocena po predmetu:
Predmet 1: 4.67
Predmet 2: 4.00
Predmet 3: 4.00
Predmet 4: 4.33
3. Implementacija igre "Iks-Oks" (Tic-Tac-Toe)
Opis zadatka:
Kreirajte jednostavnu verziju igre "Iks-Oks" za dva igrača.
- Igra se odvija na matrici 3×3.
- Program treba da omogući igračima da naizmenično unose poteze, prikaže trenutni status table i proveri da li je neko pobedio ili je igra završena nerešeno.
Primer igre:
Trenutno stanje table:
_ _ _
_ _ _
_ _ _
Igrač 1 (X) bira polje (red, kolona): 1 1
Trenutno stanje table:
X _ _
_ _ _
_ _ _
Igrač 2 (O) bira polje (red, kolona): 1 2
Trenutno stanje table:
X O _
_ _ _
_ _ _
Igrač 1 (X) bira polje (red, kolona): 2 2
...
Igrač 1 (X) je pobedio!
Višedimenzionalni nizovi – Proširenje koncepta
Dvodimenzionalni nizovi su korisni za predstavljanje matrica, tabela i sličnih struktura. Međutim, ponekad su potrebni složeniji modeli podataka, gde dolazimo do višedimenzionalnih nizova, poput trodimenzionalnih nizova.
Šta su trodimenzionalni nizovi?Trodimenzionalni nizovi su nizovi sa tri indeksa. Možemo ih zamisliti kao niz "matrica" ili kao prostornu strukturu, poput kocke, gde svaki element ima:
- red,
- kolonu,
- "dubinu".
Sintaksa za deklaraciju trodimenzionalnog niza u C++:
int niz[dim1][dim2][dim3];
Primer:int trodimenzionalniNiz[2][3][4];
Ovaj niz ima:
- 2 "sloja" (ili dubine),
- 3 reda po sloju,
- 4 kolone u svakom redu.
Primer upotrebe trodimenzionalnog nizaKao praktičan primer, trodimenzionalni nizovi se mogu koristiti za čuvanje vrednosti u različitim vremenskim intervalima, poput:
- Podataka o temperaturi u različitim gradovima (sloj = grad, red = dan, kolona = vreme).
- Boja piksela slike u RGB formatu (sloj = komponenta boje R, G, B).
Kratak primer:
#include <iostream>
using namespace std;
int main() {
// Deklaracija trodimenzionalnog niza za temperature (grad, dan, vreme)
float temperature[2][3][4] = {
{{22.5, 23.1, 21.8, 22.0}, {24.2, 25.0, 23.5, 24.1}, {19.8, 20.0, 18.7, 19.5}},
{{28.5, 27.9, 29.0, 28.7}, {26.5, 25.8, 27.0, 26.9}, {30.0, 31.2, 29.8, 30.5}}};
// Prikaz temperature za drugi grad, prvi dan, drugo vreme
cout << "Temperatura u drugom gradu, prvog dana, u drugom vremenu: "
<< temperature[1][0][1] << "°C" << endl;
return 0;
}
Rezultat:
Temperatura u drugom gradu, prvog dana, u drugom vremenu: 27.9°C
Dalje učenje
Ako želite detaljnije da naučite o trodimenzionalnim i višedimenzionalnim nizovima u C++-u i njihovoj primeni, posetite sledeći resurs:
□ Detaljno objašnjenje trodimenzionalnih i višedimenzionalnih nizova
Srodni članci
Proveri znanje
Otvori kviz
Kviz: Matrice u C++-u
1. Koliko elemenata ima int m[3][4];?
2. Šta je m[1][2]?
3. Kako izgleda uslov za element na glavnoj dijagonali?
4. Koliko petlji obično treba za prolaz kroz sve elemente matrice?
| Prethodno |<Rečnik podataka-mape u C++ |
Sledeće Dvodimenzioni dinamički nizovi u c++>| |
DVODIMENZIONALNI NIZOVI - MATRICE U PROGRAMSKOM JEZIKU C++
Sadržaj stranice
Dobrodošli na stranicu posvećenu dvodimenzionalnim i višedimenzionalnim nizovima u C++! Ova stranica nudi sve ključne informacije, primere koda i praktične savete o radu sa matricama i višedimenzionalnim strukturama podataka. Pomoću tabele sadržaja možete brzo preskočiti na interesantne sekcije i pronaći sadržaj koji vas zanima.
Uvod
Formiranje matrice
Primer 1: Ispisivanje po redovima i kolonama
Pretpostavimo da želimo da ispišemo niz od prvih 100 prirodnih brojeva, ali da budu ispisani u 10 redova i 10 kolona, kao na slici ispod:
Da bi smo ovo ispisali koristimo ugnježdenu for petlju:
using namespace std;
// Program za ispis prvih 100 prirodnih brojeva u 10 redova i 10 kolona
int main() {
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
int broj = 10 * i + (j + 1); // Računanje broja u zavisnosti od reda i kolone
cout << broj << " "; // Ispis broja u istoj liniji
cout << endl; // Prelazak u novi red nakon što se završi kolona
return 0; // Kraj programa
int matrica[ 10 ][ 10 ] ;
Ovo je matrica celih brojeva koja ima 10 redova i 10 kolona.
Pristup određenom elementu koji se recimo, nalazi u 3 redu i 5. koloni bi bio:
matrica[3][5];
Prethodni primer bi bio malo izmenjen
using namespace std;
// Program za popunjavanje i ispis dvodimenzionalnog niza (matrice)
int main() {
// Popunjavanje matrice
for (int i = 0; i < 10; i++) {
// Ispis matrice
for (int i = 0; i < 10; i++) {
cout << endl; // Prelazak u novi red
return 0; // Kraj programa
Testirajte svoj kod ovde
Inicijalizacija matrice
Ukoliko unapred znamo brojeve koje treba staviti u matricu, možemo ih definisati na sličan način kao što inicijalizujemo jednodimenzioni niz, ali u ovom slučaju se radi o nizu nizova. Na primer, ocene iz nekih predmeta za više učenika mogu se smestiti u matricu:
intocene[3][8] = { {2,3,2,2,4,5,5,4},
{2,3,2,2,4,5,5,4},
{2,3,2,2,4,5,5,4} };
U uglastim zagradama je potrebno navesti dimenzije, čak i ako su one implicitno određene nizovima korišćenim za inicijalizaciju matrice – ovde 3 reda i 8 kolona. Ovo ukazuje da je matrica zapravo niz elemenata, gde su ti elementi takođe nizovi, a svaki red i kolona imaju svoj indeks pomoću kojeg se pristupa pojedinačnim elementima (u ovom primeru redovi su indeksirani od 0 do 2, a kolone od 0 do 7).
Da bi izračunali prosek svih elemenata matrice, potrebno je prvo sabrati sve elemente, a zatim podeliti dobijeni zbir sa ukupnim brojem elemenata. Za to se koristi ugnježdena for petlja.
Primer 2: Prosek ocena svih učenika
using namespace std;
// Funkcija za izračunavanje prosečne ocene svih učenika
void prosek() {
{2, 5, 2, 5, 4, 5, 5, 4}, // Ocene drugog učenika
{2, 4, 4, 2, 4, 3, 5, 4} }; // Ocene trećeg učenika
int zbir = 0; // Promenljiva za sabiranje svih ocena
double prosek; // Promenljiva za čuvanje proseka
// Petlja za prolazak kroz sve ocene u matrici
for (int i = 0; i < 3; i++) {
cout << ocene[i][j] << " "; // Ispis trenutne ocene
cout << endl; // Novi red nakon svakog reda ocena
cout << "Prosek: ";
prosek = zbir / (3.0 * 8.0); // Izračunavanje proseka (3 reda x 8 ocena)
cout << prosek; // Ispis proseka
int main() {
return 0; // Kraj programa
Objašnjenje:
1. Deklaracija matrice:- Matrica ocene[3][8] sadrži ocene tri učenika, svaki sa po osam ocena.
2. Prolazak kroz matricu:
- Ugnježdena for petlja prolazi kroz sve redove i kolone matrice.
- Svaka ocena se sabira u promenljivu zbir.
3. Izračunavanje proseka:
- Prosek se računa deljenjem ukupnog zbira ocena sa brojem svih elemenata matrice (3 x 8).
4. Ispis:
- Ocene se ispisuju red po red, a nakon prolaska kroz sve ocene, ispisuje se prosečna ocena.
Primer 3: Prosek ocena po svakom učeniku
Da bi izračunali prosek po svakom učeniku, onda moramo posebno sabrati svaki red ocena i podeliti sa brojem elemenata svakog unutrašnjeg niza jer red svaki ocena predstavlja ocene jednog učenika. Prosek će sada biti niz brojeva:
using namespace std;
// Funkcija za izračunavanje prosečne ocene za svakog učenika
void proseciPoUceniku() {
{2, 5, 2, 5, 4, 5, 5, 4}, // Ocene drugog učenika
{2, 4, 4, 2, 4, 3, 5, 4} }; // Ocene trećeg učenika
double zbir = 0; // Promenljiva za sabiranje ocena jednog učenika
double prosek[3]; // Niz za čuvanje proseka za svakog učenika
// Petlja za prolazak kroz ocene svakog učenika
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 8; j++) {
cout << ocene[i][j] << " "; // Ispis trenutne ocene
prosek[i] = zbir / 8; // Računanje proseka za trenutnog učenika
zbir = 0; // Resetovanje zbira za sledećeg učenika
cout << endl; // Novi red nakon ocena jednog učenika
// Ispis proseka za svakog učenika
cout << "Proseci po učeniku:" << endl;
for (int i = 0; i < 3; i++) {
int main() {
return 0; // Kraj programa
Objašnjenje:
1. Deklaracija matrice i nizova:- Matrica ocene[3][8] sadrži ocene učenika.
- Niz prosek[3] čuva prosečne ocene svakog učenika.
2. Računanje proseka:
- Prva for petlja prolazi kroz učenike.
- Unutrašnja petlja prolazi kroz ocene trenutnog učenika i sabira ih u zbir.
- Nakon računanja proseka za jednog učenika, zbir se resetuje.
3. Ispis proseka:
- Na kraju programa ispisuju se proseci svakog učenika.
Učitavanje matrice
U prethodnom primeru, matrica ocena je bila zadata. Da bi korisnik mogao samostalno da unese matricu, potrebno je prvo učitati broj redova i kolona matrice. Ovaj proces se može postići sledećim koracima:
cin >> m >> n; // Učitavanje dimenzija matrice
for (int i = 0; i < m; i++) {
Kompletno rešenje:
using namespace std;
// Funkcija za unos matrice od strane korisnika
void ucitajMatricu() {
int m, n; // Broj redova i kolona
cout << "Unesite broj redova i kolona matrice (maksimalno 10x10): ";
cin >> m >> n; // Učitavanje dimenzija matrice
if (m > 10 || n > 10 || m <= 0 || n <= 0) {
return; // Završetak funkcije ako su dimenzije nevalidne
cout << "Unesite elemente matrice:" << endl;
for (int i = 0; i < m; i++) {
cout << "Uneta matrica je:" << endl;
for (int i = 0; i < m; i++) {
cout << endl; // Novi red za sledeći red matrice
int main() {
return 0; // Kraj programa
Primer 5: Skakač napada
Rešenje:
#include <string>
using namespace std;
int main() {
string tabla[9][9]; // Matrica za šahovsku tablu
cout << "Unesite poziciju skakača (red i kolona): ";
cin >> m >> n;
for (int i = 8; i >= 1; i--) {
(i == m - 2 && (j == n - 1 || j == n + 1)) ||
(i == m + 1 && (j == n - 2 || j == n + 2)) ||
(i == m - 1 && (j == n - 2 || j == n + 2))) {
cout << "Šahovska tabla:" << endl;
for (int i = 8; i >= 1; i--) {
cout << endl; // Novi red nakon svakog reda table
return 0;
- Unos korisnika: Unose se red i kolona na kojima se nalazi skakač.
- Logika šahovske table:
- Matrica tabla predstavlja šahovsku tablu.
- Ugnježdene petlje prolaze kroz sve redove i kolone table.
- Određuju se polja koja skakač napada pomoću pravila kretanja u šahu.
- Ispis rezultata: Prikazuje šahovsku tablu sa označenim poljima:
- " " za polje na kojem je skakač.
- "S" za polja koja skakač napada.
- "*" za ostala polja.
Zadaci za vežbanje
1. Kreiranje tabele za evidenciju ocena učenika
Opis zadatka:Napravite program koji koristi dvodimenzionalni niz za čuvanje ocena učenika iz nekoliko predmeta.
- Niz treba da ima redove koji predstavljaju učenike i kolone koje predstavljaju predmete.
- Program treba da omogući unos ocena, ispis ocena svakog učenika i računanje prosečne ocene za svakog učenika i svaki predmet.
Unesite ocene za 3 učenika i 4 predmeta:
Učenik 1: 5 4 3 5
Učenik 2: 4 3 4 4
Učenik 3: 5 5 5 4
Prosečna ocena po učeniku:
Učenik 1: 4.25
Učenik 2: 3.75
Učenik 3: 4.75
Prosečna ocena po predmetu:
Predmet 1: 4.67
Predmet 2: 4.00
Predmet 3: 4.00
Predmet 4: 4.33
2. Izračunavanje prosečne vrednosti elemenata u matrici
Opis zadatka:Napravite program koji koristi dvodimenzionalni niz za unos brojeva u matricu dimenzija N×MN \times MN×M.
- Program treba da izračuna prosečnu vrednost svih elemenata u matrici.
- Dodajte opciju za unos dimenzija matrice od strane korisnika.
Primer ulaza i izlaza:Unesite dimenzije matrice (redovi i kolone): 2 3
Unesite elemente matrice:
1 2 3
4 5 6
Prosečna vrednost elemenata matrice: 3.5
3. Implementacija igre "Iks-Oks" (Tic-Tac-Toe)
Opis zadatka:Kreirajte jednostavnu verziju igre "Iks-Oks" za dva igrača.
- Igra se odvija na matrici 3×3.
- Program treba da omogući igračima da naizmenično unose poteze, prikaže trenutni status table i proveri da li je neko pobedio ili je igra završena nerešeno.
Trenutno stanje table:
_ _ _
_ _ _
_ _ _
Igrač 1 (X) bira polje (red, kolona): 1 1
Trenutno stanje table:
X _ _
_ _ _
_ _ _
Igrač 2 (O) bira polje (red, kolona): 1 2
Trenutno stanje table:
X O _
_ _ _
_ _ _
Igrač 1 (X) bira polje (red, kolona): 2 2
...
Igrač 1 (X) je pobedio!
Višedimenzionalni nizovi – Proširenje koncepta
Dvodimenzionalni nizovi su korisni za predstavljanje matrica, tabela i sličnih struktura. Međutim, ponekad su potrebni složeniji modeli podataka, gde dolazimo do višedimenzionalnih nizova, poput trodimenzionalnih nizova.Šta su trodimenzionalni nizovi?Trodimenzionalni nizovi su nizovi sa tri indeksa. Možemo ih zamisliti kao niz "matrica" ili kao prostornu strukturu, poput kocke, gde svaki element ima:
- red,
- kolonu,
- "dubinu".
int niz[dim1][dim2][dim3];
Primer:int trodimenzionalniNiz[2][3][4];
Ovaj niz ima:
- 2 "sloja" (ili dubine),
- 3 reda po sloju,
- 4 kolone u svakom redu.
- Podataka o temperaturi u različitim gradovima (sloj = grad, red = dan, kolona = vreme).
- Boja piksela slike u RGB formatu (sloj = komponenta boje R, G, B).
usingnamespace std;
int main() {
float temperature[2][3][4] = {
{ {28.5, 27.9, 29.0, 28.7}, {26.5, 25.8, 27.0, 26.9}, {30.0, 31.2, 29.8, 30.5} }
// Prikaz temperature za drugi grad, prvi dan, drugo vreme
cout << "Temperatura u drugom gradu, prvog dana, u drugom vremenu: "
}
Temperatura u drugom gradu, prvog dana, u drugom vremenu: 27.9°C
Dalje učenje
Ako želite detaljnije da naučite o trodimenzionalnim i višedimenzionalnim nizovima u C++-u i njihovoj primeni, posetite sledeći resurs:
Srodni članci
Matrice-primeriNizovi-primeri
Matematički algoritmi
Klase i objekti
Grananje u programu u C/C++
