Advertisement
Guest User

Untitled

a guest
Apr 8th, 2020
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.41 KB | None | 0 0
  1. /*
  2.     TP 2018/2019: 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. #include <iostream>
  12. #include <limits>
  13. #include <cmath>
  14.  
  15. using std::cin;
  16. using std::cout;
  17. using std::endl;
  18.  
  19. template <typename Tip1, typename Tip2>
  20.  
  21.  
  22. Tip1 *GenerirajStepeneDvojke(Tip2 n) {
  23.    
  24.     if(n<=0) throw std::domain_error("Broj elemenata mora biti pozitivan");
  25.    
  26.     Tip1 *p=nullptr;
  27.    
  28.     try {
  29.         p = new Tip1[n];
  30.         p[0]=1;
  31.        
  32.         for(int i=1; i<n; i++) {
  33.             p[i]=p[i-1]*2;
  34.             //overflow
  35.             if(p[i]>std::numeric_limits<Tip1>::max()/2 && i!=n-1) throw std::overflow_error("Prekoracen dozvoljeni opseg");
  36.         }
  37.     }
  38.     catch(std::bad_alloc e) {
  39.         throw std::runtime_error("Neuspjesna alokacija");
  40.     }catch(std::overflow_error e) {
  41.         delete[] p; throw;
  42.     }
  43.    
  44.     return p;
  45. }
  46.  
  47. int main ()
  48. {
  49.     try {
  50.         cout<<"Koliko zelite elemenata: ";
  51.         long long int n;
  52.         cin>>n;
  53.         unsigned long long int *p=GenerirajStepeneDvojke<unsigned long long int>(n);
  54.        
  55.         for(int i=0; i<n; i++) {
  56.             cout<<p[i]<<" ";
  57.         }
  58.         delete[] p;
  59.     }
  60.     catch (std::overflow_error e) {
  61.         cout<<"Izuzetak: "<<e.what();
  62.     }
  63.         catch (std::runtime_error e) {
  64.         cout<<"Izuzetak: "<<e.what();
  65.     }       catch (std::domain_error e) {
  66.         cout<<"Izuzetak: "<<e.what();
  67.     }
  68.    
  69.     return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement