PR I - Code Nizovi 2D
Tekst dokumenta261 redova
- == DvodimenzionalniNizovi.cpp
- // DvodimenzionalniNizovi.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <iostream>
- #include <iomanip>
- using namespace std;
- const int x=5, y=4, z=6;
- const int xoDimenzije=3;
- const int XO1Dimenzije=5;
- void punjenje_2D_niza(int niz[][y]);
- void ispis_2D_niza(int niz[][y]);
- void ispis_2D_niza_veci(float niz[][y]);
- void ispis_niza_XO1(char niz[][XO1Dimenzije]);
- int sumaDijagonala(int niz[][y]);
- void mnozenjeMatrica(int niz1[][y], int niz2[][y]);
- char provjeriPob(char xo[][xoDimenzije]);
- void ispis_niza(char niz[][xoDimenzije]);
- int _tmain(int argc, _TCHAR* argv[])
- {
- system("cls");
- /*
- //int matrica [3][2]={{1}, {3,4}, {5}};
- int matrica [3][2]={1,3,6,12};
- for (int i =0; i<3; i++)
- {
- for (int j=0; j<2; j++)
- {
- cout<<setw(3)<<matrica[i][j];
- }
- cout<<endl;
- }
- */
- /*
- int tabela[x][y];
- punjenje_2D_niza(tabela);
- ispis_2D_niza(tabela);
- */
- /*
- int matr1[x][y], matr2[x][y];
- punjenje_2D_niza(matr1);
- punjenje_2D_niza(matr2);
- mnozenjeMatrica(matr1,matr2);
- */
- /*
- //suma dijagonala niza
- int nizZaSumu[4][4];
- int rezultat;
- for (int i =0; i<4; i++)
- {
- for (int j=0; j<4; j++)
- {
- nizZaSumu[i][j]=i*2+j+3;
- }
- }
- for (int i =0; i<4; i++)
- {
- for (int j=0; j<4; j++)
- {
- cout<<setw(3)<<nizZaSumu[i][j];
- }
- cout<<endl;
- }
- rezultat=sumaDijagonala(nizZaSumu);
- cout<<rezultat;
- */
- /*
- //XO igra
- char xo[xoDimenzije][xoDimenzije]={'a','b','c','d','e','f','g','h','i'};
- ispis_niza(xo);
- int i, j;
- do
- {
- cout<<"unesi red ";
- cin>>i;
- cout<<"unesi kolonu ";
- cin>>j;
- cout<<"unesi svoj znak"; //1. zadatak za studente: Unaprijediti program da sprijeci ponovni unos istog polja
- cin>>xo[i-1][j-1]; //2. zadatak za studente: Unaprijediti program da naizmjenicno unosi X i O bez upisa sa tastature
- system("cls");
- ispis_niza(xo);
- }
- while (provjeriPob(xo)=='a');
- */
- /*
- //punjenje niza slovima abecede
- //za pravljenje vece table za XO igru
- //2. zadatak za studente: Unaprijediti program XO igre da podrzava vecu tablu
- char XO1[XO1Dimenzije][XO1Dimenzije];
- int brojac=97;
- for (int i=0;i<XO1Dimenzije;i++)
- {
- for(int j=0;j<XO1Dimenzije;j++)
- {
- XO1[i][j]=char(brojac++); // ili ++brojac ako je inicijaliziran na vrijednost 96
- }
- }
- ispis_niza_XO1(XO1);
- */
- system("pause");
- return 0;
- }
- void punjenje_2D_niza(int niz[][y])
- {
- for (int i =0; i<x; i++)
- {
- for (int j=0; j<y; j++)
- {
- niz[i][j]=i*10+j;
- }
- }
- }
- void ispis_2D_niza(int niz[][y])
- {
- for (int i =0; i<x; i++)
- {
- for (int j=0; j<y; j++)
- {
- cout<<setw(3)<<&niz[i][j]<<setw(3)<<niz[i][j]<<setw(4)<<" ";
- //cout <<setw(3)<<niz[i][j];
- }
- cout<<endl;
- }
- }
- void ispis_2D_niza_veci(float niz[][y])
- {
- for (int i =0; i<x; i++)
- {
- for (int j=0; j<y; j++)
- {
- //cout<<setw(3)<<&niz[i][j]<<setw(3)<<niz[i][j]<<setw(4)<<" ";
- cout <<setw(5)<<niz[i][j]<<setw(4)<<" ";
- }
- cout<<endl;
- }
- }
- char provjeriPob(char xo[][xoDimenzije])
- {
- char pobjednik = 'a';
- //provjera po prvoj dimenziji
- for (int i= 0; i<3;i++)
- {
- if (xo[0][i]==xo[1][i] && xo[1][i]==xo[2][i])
- {
- cout<<"pobjednik je "<<xo[0][i]<<endl;
- pobjednik =xo[0][i];
- break;
- }
- }
- //provjera po drugoj dimenziji
- for (int i= 0; i<3;i++)
- {
- if (xo[i][0]==xo[i][1] && xo[i][1]==xo[i][2])
- {
- cout<<"pobjednik je "<<xo[i][0]<<endl;
- pobjednik =xo[i][0];
- break;
- }
- }
- //provjera po dijagonalama
- if (xo[0][0]==xo[1][1] && xo[1][1]==xo[2][2])
- {
- cout<<"pobjednik je "<<xo[0][0]<<endl;
- pobjednik =xo[0][0];
- }
- if (xo[2][0]==xo[1][1] && xo[1][1]==xo[0][2])
- {
- cout<<"pobjednik je "<<xo[1][1]<<endl;
- pobjednik =xo[1][1];
- }
- //3. zadatak za studente: Unaprijediti program provjeri pobjednika sa manje linija code-a
- //hint: for petlja za jednu dijagonalu a ugnjezdena for petlja za drugu ali voditi racuna o tome u kojoj brojac raste a u kojoj pada
- return pobjednik;
- }
- void ispis_niza(char niz[][xoDimenzije])
- {
- for (int i =0; i<xoDimenzije; i++)
- {
- for (int j=0; j<xoDimenzije; j++)
- {
- cout<<setw(3)<<niz[i][j];
- }
- cout<<endl;
- }
- }
- void ispis_niza_XO1(char niz[][XO1Dimenzije])
- {
- for (int i =0; i<XO1Dimenzije; i++)
- {
- for (int j=0; j<XO1Dimenzije; j++)
- {
- cout<<setw(3)<<niz[i][j];
- }
- cout<<endl;
- }
- }
- void mnozenjeMatrica(int niz1[][y], int niz2[][y])
- {
- float rezultantna[x][y];
- for (int i =0; i<x; i++)
- {
- for (int j=0; j<y; j++)
- {
- rezultantna[i][j]=niz1[i][j]*niz2[i][j];
- }
- }
- ispis_2D_niza(niz1);
- cout<<endl;
- ispis_2D_niza(niz2);
- cout<<endl;
- ispis_2D_niza_veci(rezultantna);
- }
- int sumaDijagonala(int niz[][4]) //podrazumjeva se da imaju isti broj redova i kolona
- {
- int suma=0;
- for (int i=0;i<4;i++) //gornji lijevi do donjeg desnog
- {
- cout<< niz[i][i] << " ";
- suma+= niz[i][i];
- }
- cout<<endl;
- for (int i=0, j=3; i<4; i++, j--) //gornji desni do donjeg lijevog - obratiti paznju na kriterije u for petlji
- {
- cout<< niz[i][j] << " ";
- suma+= niz[i][j];
- }
- cout<<endl;
- return suma;
- }