arhivadlwms

DokumentPredavanja Elmir Babović

PR I - Code Nizovi 2D

Tekst dokumenta261 redova
  1. == DvodimenzionalniNizovi.cpp
  2. // DvodimenzionalniNizovi.cpp : Defines the entry point for the console application.
  3. //
  4. #include "stdafx.h"
  5. #include <iostream>
  6. #include <iomanip>
  7. using namespace std;
  8. const int x=5, y=4, z=6;
  9. const int xoDimenzije=3;
  10. const int XO1Dimenzije=5;
  11. void punjenje_2D_niza(int niz[][y]);
  12. void ispis_2D_niza(int niz[][y]);
  13. void ispis_2D_niza_veci(float niz[][y]);
  14. void ispis_niza_XO1(char niz[][XO1Dimenzije]);
  15. int sumaDijagonala(int niz[][y]);
  16. void mnozenjeMatrica(int niz1[][y], int niz2[][y]);
  17. char provjeriPob(char xo[][xoDimenzije]);
  18. void ispis_niza(char niz[][xoDimenzije]);
  19. int _tmain(int argc, _TCHAR* argv[])
  20. {
  21. system("cls");
  22. /*
  23. //int matrica [3][2]={{1}, {3,4}, {5}};
  24. int matrica [3][2]={1,3,6,12};
  25. for (int i =0; i<3; i++)
  26. {
  27. for (int j=0; j<2; j++)
  28. {
  29. cout<<setw(3)<<matrica[i][j];
  30. }
  31. cout<<endl;
  32. }
  33. */
  34. /*
  35. int tabela[x][y];
  36. punjenje_2D_niza(tabela);
  37. ispis_2D_niza(tabela);
  38. */
  39. /*
  40. int matr1[x][y], matr2[x][y];
  41. punjenje_2D_niza(matr1);
  42. punjenje_2D_niza(matr2);
  43. mnozenjeMatrica(matr1,matr2);
  44. */
  45. /*
  46. //suma dijagonala niza
  47. int nizZaSumu[4][4];
  48. int rezultat;
  49. for (int i =0; i<4; i++)
  50. {
  51. for (int j=0; j<4; j++)
  52. {
  53. nizZaSumu[i][j]=i*2+j+3;
  54. }
  55. }
  56. for (int i =0; i<4; i++)
  57. {
  58. for (int j=0; j<4; j++)
  59. {
  60. cout<<setw(3)<<nizZaSumu[i][j];
  61. }
  62. cout<<endl;
  63. }
  64. rezultat=sumaDijagonala(nizZaSumu);
  65. cout<<rezultat;
  66. */
  67. /*
  68. //XO igra
  69. char xo[xoDimenzije][xoDimenzije]={'a','b','c','d','e','f','g','h','i'};
  70. ispis_niza(xo);
  71. int i, j;
  72. do
  73. {
  74. cout<<"unesi red ";
  75. cin>>i;
  76. cout<<"unesi kolonu ";
  77. cin>>j;
  78. cout<<"unesi svoj znak"; //1. zadatak za studente: Unaprijediti program da sprijeci ponovni unos istog polja
  79. cin>>xo[i-1][j-1]; //2. zadatak za studente: Unaprijediti program da naizmjenicno unosi X i O bez upisa sa tastature
  80. system("cls");
  81. ispis_niza(xo);
  82. }
  83. while (provjeriPob(xo)=='a');
  84. */
  85. /*
  86. //punjenje niza slovima abecede
  87. //za pravljenje vece table za XO igru
  88. //2. zadatak za studente: Unaprijediti program XO igre da podrzava vecu tablu
  89. char XO1[XO1Dimenzije][XO1Dimenzije];
  90. int brojac=97;
  91. for (int i=0;i<XO1Dimenzije;i++)
  92. {
  93. for(int j=0;j<XO1Dimenzije;j++)
  94. {
  95. XO1[i][j]=char(brojac++); // ili ++brojac ako je inicijaliziran na vrijednost 96
  96. }
  97. }
  98. ispis_niza_XO1(XO1);
  99. */
  100. system("pause");
  101. return 0;
  102. }
  103. void punjenje_2D_niza(int niz[][y])
  104. {
  105. for (int i =0; i<x; i++)
  106. {
  107. for (int j=0; j<y; j++)
  108. {
  109. niz[i][j]=i*10+j;
  110. }
  111. }
  112. }
  113. void ispis_2D_niza(int niz[][y])
  114. {
  115. for (int i =0; i<x; i++)
  116. {
  117. for (int j=0; j<y; j++)
  118. {
  119. cout<<setw(3)<<&niz[i][j]<<setw(3)<<niz[i][j]<<setw(4)<<" ";
  120. //cout <<setw(3)<<niz[i][j];
  121. }
  122. cout<<endl;
  123. }
  124. }
  125. void ispis_2D_niza_veci(float niz[][y])
  126. {
  127. for (int i =0; i<x; i++)
  128. {
  129. for (int j=0; j<y; j++)
  130. {
  131. //cout<<setw(3)<<&niz[i][j]<<setw(3)<<niz[i][j]<<setw(4)<<" ";
  132. cout <<setw(5)<<niz[i][j]<<setw(4)<<" ";
  133. }
  134. cout<<endl;
  135. }
  136. }
  137. char provjeriPob(char xo[][xoDimenzije])
  138. {
  139. char pobjednik = 'a';
  140. //provjera po prvoj dimenziji
  141. for (int i= 0; i<3;i++)
  142. {
  143. if (xo[0][i]==xo[1][i] && xo[1][i]==xo[2][i])
  144. {
  145. cout<<"pobjednik je "<<xo[0][i]<<endl;
  146. pobjednik =xo[0][i];
  147. break;
  148. }
  149. }
  150. //provjera po drugoj dimenziji
  151. for (int i= 0; i<3;i++)
  152. {
  153. if (xo[i][0]==xo[i][1] && xo[i][1]==xo[i][2])
  154. {
  155. cout<<"pobjednik je "<<xo[i][0]<<endl;
  156. pobjednik =xo[i][0];
  157. break;
  158. }
  159. }
  160. //provjera po dijagonalama
  161. if (xo[0][0]==xo[1][1] && xo[1][1]==xo[2][2])
  162. {
  163. cout<<"pobjednik je "<<xo[0][0]<<endl;
  164. pobjednik =xo[0][0];
  165. }
  166. if (xo[2][0]==xo[1][1] && xo[1][1]==xo[0][2])
  167. {
  168. cout<<"pobjednik je "<<xo[1][1]<<endl;
  169. pobjednik =xo[1][1];
  170. }
  171. //3. zadatak za studente: Unaprijediti program provjeri pobjednika sa manje linija code-a
  172. //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
  173. return pobjednik;
  174. }
  175. void ispis_niza(char niz[][xoDimenzije])
  176. {
  177. for (int i =0; i<xoDimenzije; i++)
  178. {
  179. for (int j=0; j<xoDimenzije; j++)
  180. {
  181. cout<<setw(3)<<niz[i][j];
  182. }
  183. cout<<endl;
  184. }
  185. }
  186. void ispis_niza_XO1(char niz[][XO1Dimenzije])
  187. {
  188. for (int i =0; i<XO1Dimenzije; i++)
  189. {
  190. for (int j=0; j<XO1Dimenzije; j++)
  191. {
  192. cout<<setw(3)<<niz[i][j];
  193. }
  194. cout<<endl;
  195. }
  196. }
  197. void mnozenjeMatrica(int niz1[][y], int niz2[][y])
  198. {
  199. float rezultantna[x][y];
  200. for (int i =0; i<x; i++)
  201. {
  202. for (int j=0; j<y; j++)
  203. {
  204. rezultantna[i][j]=niz1[i][j]*niz2[i][j];
  205. }
  206. }
  207. ispis_2D_niza(niz1);
  208. cout<<endl;
  209. ispis_2D_niza(niz2);
  210. cout<<endl;
  211. ispis_2D_niza_veci(rezultantna);
  212. }
  213. int sumaDijagonala(int niz[][4]) //podrazumjeva se da imaju isti broj redova i kolona
  214. {
  215. int suma=0;
  216. for (int i=0;i<4;i++) //gornji lijevi do donjeg desnog
  217. {
  218. cout<< niz[i][i] << " ";
  219. suma+= niz[i][i];
  220. }
  221. cout<<endl;
  222. for (int i=0, j=3; i<4; i++, j--) //gornji desni do donjeg lijevog - obratiti paznju na kriterije u for petlji
  223. {
  224. cout<< niz[i][j] << " ";
  225. suma+= niz[i][j];
  226. }
  227. cout<<endl;
  228. return suma;
  229. }
na vrh