Advertisement
Guest User

Untitled

a guest
Apr 14th, 2019
370
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.45 KB | None | 0 0
  1. /*
  2. TP 16/17 (Tutorijal 6, Zadatak 1)
  3.  
  4. Autotestovi by Kerim Hodzic. Prijave gresaka, pitanja
  5. i sugestije saljite na mail: khodzic2@etf.unsa.ba
  6.  
  7. Napomene: testovi su konacni tek pred tutorijal
  8. za krsenje zabrana dobiva se 0 bodova za zadatak
  9.  
  10. */
  11.  
  12. #include <iostream>
  13. #include <stdexcept>
  14. #include <cmath>
  15. #include <new>
  16. #include <limits>
  17.  
  18. template<typename tip>
  19. tip *GenerirajStepeneDvojke(int n){
  20. if(n <= 0) throw std::domain_error("Broj elemenata mora biti pozitivan");
  21. tip *niz = nullptr;
  22.  
  23. try{
  24. niz= new tip[n];
  25. }
  26. catch(...){
  27. throw std::runtime_error("Alokacija nije uspjela");
  28. }
  29.  
  30. tip broj(1);
  31. for(int i=0; i<n; i++){
  32. if(i!=n-1 && broj>=(std::numeric_limits<tip>::max()/2)){
  33. delete [] niz;
  34. throw std::overflow_error("Prekoracen dozvoljeni opseg");
  35. }
  36. niz[i]=broj;
  37. broj*=2;
  38. }
  39. return niz;
  40. }
  41.  
  42. int main(){
  43. std::cout<<"Koliko zelite elemenata: ";
  44. int n;
  45. std::cin>>n;
  46. unsigned long long *pok;
  47.  
  48. try{
  49. pok=GenerirajStepeneDvojke<unsigned long long>(n);
  50.  
  51. }
  52. catch(std::exception &e) {
  53. std::cout<<"Izuzetak: "<<e.what();
  54. return 0;
  55. }
  56. for(int i=0; i<n; i++)
  57. std::cout<<pok[i]<<" ";
  58.  
  59. delete[] pok;
  60. return 0;
  61. }
  62. ---------------------------------------------------------------
  63.  
  64. /*
  65. TP 16/17 (Tutorijal 6, Zadatak 2)
  66.  
  67. Autotestovi by Kerim Hodzic. Prijave gresaka, pitanja
  68. i sugestije saljite na mail: khodzic2@etf.unsa.ba
  69.  
  70. Napomene: testovi su konacni tek pred tutorijal
  71. za krsenje zabrana dobiva se 0 bodova za zadatak
  72.  
  73. */
  74. #include <iostream>
  75. #include <vector>
  76. #include <type_traits>
  77.  
  78. template <typename NekiTip>
  79. auto KreirajIzvrnutiNiz(NekiTip pocetak, NekiTip iza_kraja)->typename std::remove_reference<decltype(*pocetak)>::type *{
  80.  
  81. typename std::remove_reference<decltype(*pocetak)>::type *pok(nullptr);
  82. auto pomocni(pocetak);
  83. int n=0;
  84. while(pomocni!= iza_kraja){
  85. pomocni++;
  86. n++;
  87. }
  88. try{
  89. pok=(new typename std::remove_reference<decltype(*pocetak)>::type [n]);
  90. for(int i=n-1; 0<=i; i--){
  91. pok[i] = *pocetak++;
  92. }
  93. }catch(std::bad_alloc){
  94. throw;
  95. }
  96. return pok;
  97. }
  98.  
  99. int main(){
  100. std::cout<<"Koliko zelite elemenata: ";
  101. int n;
  102. std::cin>>n;
  103. try{
  104. std::vector<double> v(n,0);
  105. double broj;
  106. std::cout<<"Unesite elemente: ";
  107. for(int i=0; i<n; i++){
  108. std::cin>>broj;
  109. v[i]= broj;
  110. }
  111. double *pok(nullptr);
  112. pok= KreirajIzvrnutiNiz(std::begin(v), std::end(v));
  113. std::cout<<"Kreirani niz: ";
  114. for(int i=0; i<n; i++){
  115. std::cout<<pok[i]<<" ";
  116. }
  117. delete[] pok;
  118. }catch(...){
  119. std::cout <<"Nedovoljno memorije!"<<std::endl;
  120. }
  121. return 0;
  122. }
  123.  
  124.  
  125. ------------------------------------------------------------------
  126. /*
  127. TP 16/17 (Tutorijal 6, Zadatak 3)
  128.  
  129. Autotestovi by Kerim Hodzic. Prijave gresaka, pitanja
  130. i sugestije saljite na mail: khodzic2@etf.unsa.ba
  131.  
  132. Napomene: testovi su konacni tek pred tutorijal
  133. za krsenje zabrana dobiva se 0 bodova za zadatak
  134.  
  135. */
  136.  
  137. #include <iostream>
  138. #include <stdexcept>
  139.  
  140. int** KreirajTrougao(int n){
  141. if(n<=0) throw std::domain_error ("Broj redova mora biti pozitivan");
  142.  
  143. int **niz1=nullptr;
  144. try{
  145. niz1=new int* [n];
  146. }
  147. catch(...){
  148. delete[] niz1;
  149. throw;
  150. }
  151. for(int i=0; i<n; i++){
  152. try{
  153. niz1[i]= new int[2*i+1];
  154. }
  155. catch(...){
  156. for(int j=0;j<n;j++) delete[] niz1[j];
  157. delete[] niz1;
  158. throw;
  159. }
  160. }
  161. for(int i=0; i<n; i++){
  162. int k=i+1;
  163. for(int j=0;j<2*i+1; j++){
  164. niz1[i][j]=k;
  165. if(j<(2*i+1)/2) k--;
  166. else k++;
  167. }
  168. }
  169. return niz1;
  170. }
  171.  
  172.  
  173.  
  174. int main(){
  175.  
  176. std::cout<<"Koliko zelite redova: ";
  177. int redovi;
  178. std::cin>>redovi;
  179.  
  180. int **p=nullptr;
  181. try{
  182. p=KreirajTrougao(redovi);
  183. }
  184. catch(std::domain_error poruka) {
  185. std::cout<<"Izuzetak: "<<poruka.what();
  186. return 0;
  187. }
  188.  
  189. catch(std::bad_alloc){
  190. std::cout<<"Izuzetak: Nedovoljno memorije!";
  191. return 0;
  192. }
  193.  
  194. for(int i=0; i<redovi; i++){
  195. for(int j=0; j<2*i+1; j++){
  196. std::cout<<p[i][j]<< " ";
  197. }
  198. std::cout<<std::endl;
  199. }
  200.  
  201. for(int j=0; j< redovi; j++) delete[] p[j];
  202. delete[] p;
  203. return 0;
  204. }
  205. ---------------------------------------------------------
  206. /*
  207. TP 16/17 (Tutorijal 6, Zadatak 4)
  208.  
  209. Autotestovi by Kerim Hodzic. Prijave gresaka, pitanja
  210. i sugestije saljite na mail: khodzic2@etf.unsa.ba
  211.  
  212. Napomene: testovi su konacni tek pred tutorijal
  213. za krsenje zabrana dobiva se 0 bodova za zadatak
  214.  
  215. */
  216. #include <iostream>
  217. #include <stdexcept>
  218.  
  219. int** KreirajTrougao(int n){
  220. if(n<=0) throw std::domain_error ("Broj redova mora biti pozitivan");
  221.  
  222. int **niz1=nullptr;
  223. try{
  224. niz1=new int* [n]{};
  225. niz1[0]=new int[n*n];
  226. }
  227.  
  228. catch(...){
  229. delete[] niz1;
  230. throw;
  231. }
  232. for(int i=1; i<n; i++){
  233. niz1[i]= niz1[i-1] + 2*(i-1)+1;
  234.  
  235. }
  236. for(int i=0; i<n; i++){
  237. int k=i+1;
  238. for(int j=0;j<2*i+1; j++){
  239. niz1[i][j]=k;
  240. if(j<(2*i+1)/2) k--;
  241. else k++;
  242. }
  243. }
  244. return niz1;
  245. }
  246.  
  247.  
  248.  
  249. int main(){
  250.  
  251. std::cout<<"Koliko zelite redova: ";
  252. int redovi;
  253. std::cin>>redovi;
  254.  
  255. int **p=nullptr;
  256. try{
  257. p=KreirajTrougao(redovi);
  258. }
  259. catch(std::domain_error poruka) {
  260. std::cout<<"Izuzetak: "<<poruka.what();
  261. return 0;
  262. }
  263.  
  264. catch(std::bad_alloc){
  265. std::cout<<"Izuzetak: Nedovoljno memorije!";
  266. return 0;
  267. }
  268.  
  269. for(int i=0; i<redovi; i++){
  270. for(int j=0; j<2*i+1; j++){
  271. std::cout<<p[i][j]<< " ";
  272. }
  273. std::cout<<std::endl;
  274. }
  275.  
  276. delete[] p[0];
  277. delete[] p;
  278. return 0;
  279. }
  280. ------------------------------------------------------------
  281. /*
  282. TP 16/17 (Tutorijal 6, Zadatak 5)
  283.  
  284. Autotestovi by Kerim Hodzic. Prijave gresaka, pitanja
  285. i sugestije saljite na mail: khodzic2@etf.unsa.ba
  286.  
  287. Napomene: testovi su konacni tek pred tutorijal
  288. za krsenje zabrana dobiva se 0 bodova za zadatak
  289.  
  290. */
  291. #include <iostream>
  292. #include <vector>
  293. #include <deque>
  294.  
  295. using std::cout;
  296. using std::cin;
  297.  
  298. typedef std::deque<int> Dek;
  299. template <typename NekiTip>
  300.  
  301. auto KreirajDinamickuKopiju2D(NekiTip Kontenjer)-> decltype(Kontenjer[0][0] + Kontenjer[0][0])** {
  302. decltype(Kontenjer[0][0] + Kontenjer[0][0]) **Matrica=nullptr;
  303.  
  304. try{
  305. Matrica= new decltype(Kontenjer[0][0] + Kontenjer[0][0])*[Kontenjer.size()];
  306. } catch(std::bad_alloc) {
  307. throw;
  308. }
  309. for(int i=0; i<Kontenjer.size(); i++) {
  310. try {
  311. Matrica[i]=new decltype(Kontenjer[0][0] + Kontenjer[0][0])[Kontenjer[i].size()];
  312. } catch(std::bad_alloc) {
  313. for(int j=0; j<i; j++) delete[] Matrica[j];
  314. delete[] Matrica;
  315. throw;
  316. }
  317. for(int j=0; j<Kontenjer[i].size(); j++) {
  318. Matrica[i][j]=Kontenjer[i][j];
  319. }
  320. }
  321. return Matrica;
  322. }
  323.  
  324. int main()
  325. {
  326.  
  327. cout<<"Unesite broj redova kvadratne matrice: ";
  328. int n;
  329. cin>>n;
  330. std::vector<Dek> VekDek;
  331.  
  332. try {
  333. VekDek.resize(n);
  334. for(int i=0; i<n; i++) VekDek[i].resize(n);
  335. } catch(std::exception &e) {
  336. cout <<"Nedovoljno memorije";
  337. return 0;
  338. }
  339. cout<<"Unesite elemente matrice: ";
  340. for(int i=0; i<VekDek.size(); i++) {
  341. for(int j=0; j<VekDek[i].size(); j++) {
  342. cin>>VekDek[i][j];
  343. }
  344. }
  345. int **Matrica= nullptr;
  346. try {
  347. Matrica=KreirajDinamickuKopiju2D(VekDek);
  348. }
  349.  
  350. catch(std::bad_alloc) {
  351. cout<<"Nedovoljno memorije";
  352. return 0;
  353. }
  354.  
  355. for(int i=0; i<n; i++) {
  356. for(int j=0; j<n; j++) {
  357. cout<<Matrica[i][j]<<" ";
  358. }
  359. cout<<std::endl;
  360. }
  361. for(int i=0; i<n; i++) delete[] Matrica[i];
  362. delete[] Matrica;
  363. return 0;
  364. }
  365. -------------------------------------------------------
  366. /*
  367. TP 16/17 (Tutorijal 6, Zadatak 6)
  368.  
  369. Autotestovi by Kerim Hodzic. Prijave gresaka, pitanja
  370. i sugestije saljite na mail: khodzic2@etf.unsa.ba
  371.  
  372. Napomene: testovi su konacni tek pred tutorijal
  373. za krsenje zabrana dobiva se 0 bodova za zadatak
  374.  
  375. */
  376. #include <iostream>
  377. #include <vector>
  378. #include <deque>
  379.  
  380. using std::cout;
  381. using std::cin;
  382.  
  383. typedef std::deque<int> Dek;
  384. template <typename NekiTip>
  385.  
  386. auto KreirajDinamickuKopiju2D(NekiTip Kontenjer)-> decltype(Kontenjer[0][0] + Kontenjer[0][0])** {
  387. decltype(Kontenjer[0][0] + Kontenjer[0][0]) **Matrica=nullptr;
  388.  
  389. try{
  390. Matrica= new decltype(Kontenjer[0][0] + Kontenjer[0][0])*[Kontenjer.size()];
  391. } catch(std::bad_alloc) {
  392. throw;
  393. }
  394. int brojac(0);
  395. for(int i=0; i<Kontenjer.size(); i++) {
  396. brojac+=Kontenjer[i].size();
  397. }
  398. try {
  399. Matrica[0]=new decltype(Kontenjer[0][0] + Kontenjer[0][0])[brojac];
  400. }
  401. catch(std::bad_alloc) {
  402. delete[] Matrica;
  403. throw;
  404. }
  405.  
  406. for(int i=1; i<Kontenjer.size();i++)
  407. Matrica[i]=Matrica[i-1] + Kontenjer[i-1].size();
  408. for(int i=0; i<Kontenjer.size(); i++){
  409. for(int j=0; j<Kontenjer[i].size(); j++){
  410. Matrica[i][j]= Kontenjer[i][j];
  411. }
  412. }
  413. return Matrica;
  414. }
  415.  
  416.  
  417. int main(){
  418.  
  419. cout<<"Unesite broj redova kvadratne matrice: ";
  420. int n;
  421. cin>>n;
  422. std::vector<Dek> VekDek;
  423.  
  424. try {
  425. VekDek.resize(n);
  426. for(int i=0; i<n; i++) VekDek[i].resize(n);
  427. } catch(std::exception &e) {
  428. cout <<"Nedovoljno memorije";
  429. return 0;
  430. }
  431. cout<<"Unesite elemente matrice: ";
  432. for(int i=0; i<VekDek.size(); i++) {
  433. for(int j=0; j<VekDek[i].size(); j++) {
  434. cin>>VekDek[i][j];
  435. }
  436. }
  437. int **Matrica= nullptr;
  438. try {
  439. Matrica=KreirajDinamickuKopiju2D(VekDek);
  440. }
  441.  
  442. catch(std::bad_alloc) {
  443. cout<<"Nedovoljno memorije";
  444. return 0;
  445. }
  446.  
  447. for(int i=0; i<n; i++) {
  448. for(int j=0; j<n; j++) {
  449. cout<<Matrica[i][j]<<" ";
  450. }
  451. cout<<std::endl;
  452. }
  453. delete[] Matrica[0];
  454. delete[] Matrica;
  455. return 0;
  456. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement