Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- TP 16/17 (Tutorijal 6, Zadatak 1)
- Autotestovi by Kerim Hodzic. Prijave gresaka, pitanja
- i sugestije saljite na mail: khodzic2@etf.unsa.ba
- Napomene: testovi su konacni tek pred tutorijal
- za krsenje zabrana dobiva se 0 bodova za zadatak
- */
- #include <iostream>
- #include <stdexcept>
- #include <cmath>
- #include <new>
- #include <limits>
- template<typename tip>
- tip *GenerirajStepeneDvojke(int n){
- if(n <= 0) throw std::domain_error("Broj elemenata mora biti pozitivan");
- tip *niz = nullptr;
- try{
- niz= new tip[n];
- }
- catch(...){
- throw std::runtime_error("Alokacija nije uspjela");
- }
- tip broj(1);
- for(int i=0; i<n; i++){
- if(i!=n-1 && broj>=(std::numeric_limits<tip>::max()/2)){
- delete [] niz;
- throw std::overflow_error("Prekoracen dozvoljeni opseg");
- }
- niz[i]=broj;
- broj*=2;
- }
- return niz;
- }
- int main(){
- std::cout<<"Koliko zelite elemenata: ";
- int n;
- std::cin>>n;
- unsigned long long *pok;
- try{
- pok=GenerirajStepeneDvojke<unsigned long long>(n);
- }
- catch(std::exception &e) {
- std::cout<<"Izuzetak: "<<e.what();
- return 0;
- }
- for(int i=0; i<n; i++)
- std::cout<<pok[i]<<" ";
- delete[] pok;
- return 0;
- }
- ---------------------------------------------------------------
- /*
- TP 16/17 (Tutorijal 6, Zadatak 2)
- Autotestovi by Kerim Hodzic. Prijave gresaka, pitanja
- i sugestije saljite na mail: khodzic2@etf.unsa.ba
- Napomene: testovi su konacni tek pred tutorijal
- za krsenje zabrana dobiva se 0 bodova za zadatak
- */
- #include <iostream>
- #include <vector>
- #include <type_traits>
- template <typename NekiTip>
- auto KreirajIzvrnutiNiz(NekiTip pocetak, NekiTip iza_kraja)->typename std::remove_reference<decltype(*pocetak)>::type *{
- typename std::remove_reference<decltype(*pocetak)>::type *pok(nullptr);
- auto pomocni(pocetak);
- int n=0;
- while(pomocni!= iza_kraja){
- pomocni++;
- n++;
- }
- try{
- pok=(new typename std::remove_reference<decltype(*pocetak)>::type [n]);
- for(int i=n-1; 0<=i; i--){
- pok[i] = *pocetak++;
- }
- }catch(std::bad_alloc){
- throw;
- }
- return pok;
- }
- int main(){
- std::cout<<"Koliko zelite elemenata: ";
- int n;
- std::cin>>n;
- try{
- std::vector<double> v(n,0);
- double broj;
- std::cout<<"Unesite elemente: ";
- for(int i=0; i<n; i++){
- std::cin>>broj;
- v[i]= broj;
- }
- double *pok(nullptr);
- pok= KreirajIzvrnutiNiz(std::begin(v), std::end(v));
- std::cout<<"Kreirani niz: ";
- for(int i=0; i<n; i++){
- std::cout<<pok[i]<<" ";
- }
- delete[] pok;
- }catch(...){
- std::cout <<"Nedovoljno memorije!"<<std::endl;
- }
- return 0;
- }
- ------------------------------------------------------------------
- /*
- TP 16/17 (Tutorijal 6, Zadatak 3)
- Autotestovi by Kerim Hodzic. Prijave gresaka, pitanja
- i sugestije saljite na mail: khodzic2@etf.unsa.ba
- Napomene: testovi su konacni tek pred tutorijal
- za krsenje zabrana dobiva se 0 bodova za zadatak
- */
- #include <iostream>
- #include <stdexcept>
- int** KreirajTrougao(int n){
- if(n<=0) throw std::domain_error ("Broj redova mora biti pozitivan");
- int **niz1=nullptr;
- try{
- niz1=new int* [n];
- }
- catch(...){
- delete[] niz1;
- throw;
- }
- for(int i=0; i<n; i++){
- try{
- niz1[i]= new int[2*i+1];
- }
- catch(...){
- for(int j=0;j<n;j++) delete[] niz1[j];
- delete[] niz1;
- throw;
- }
- }
- for(int i=0; i<n; i++){
- int k=i+1;
- for(int j=0;j<2*i+1; j++){
- niz1[i][j]=k;
- if(j<(2*i+1)/2) k--;
- else k++;
- }
- }
- return niz1;
- }
- int main(){
- std::cout<<"Koliko zelite redova: ";
- int redovi;
- std::cin>>redovi;
- int **p=nullptr;
- try{
- p=KreirajTrougao(redovi);
- }
- catch(std::domain_error poruka) {
- std::cout<<"Izuzetak: "<<poruka.what();
- return 0;
- }
- catch(std::bad_alloc){
- std::cout<<"Izuzetak: Nedovoljno memorije!";
- return 0;
- }
- for(int i=0; i<redovi; i++){
- for(int j=0; j<2*i+1; j++){
- std::cout<<p[i][j]<< " ";
- }
- std::cout<<std::endl;
- }
- for(int j=0; j< redovi; j++) delete[] p[j];
- delete[] p;
- return 0;
- }
- ---------------------------------------------------------
- /*
- TP 16/17 (Tutorijal 6, Zadatak 4)
- Autotestovi by Kerim Hodzic. Prijave gresaka, pitanja
- i sugestije saljite na mail: khodzic2@etf.unsa.ba
- Napomene: testovi su konacni tek pred tutorijal
- za krsenje zabrana dobiva se 0 bodova za zadatak
- */
- #include <iostream>
- #include <stdexcept>
- int** KreirajTrougao(int n){
- if(n<=0) throw std::domain_error ("Broj redova mora biti pozitivan");
- int **niz1=nullptr;
- try{
- niz1=new int* [n]{};
- niz1[0]=new int[n*n];
- }
- catch(...){
- delete[] niz1;
- throw;
- }
- for(int i=1; i<n; i++){
- niz1[i]= niz1[i-1] + 2*(i-1)+1;
- }
- for(int i=0; i<n; i++){
- int k=i+1;
- for(int j=0;j<2*i+1; j++){
- niz1[i][j]=k;
- if(j<(2*i+1)/2) k--;
- else k++;
- }
- }
- return niz1;
- }
- int main(){
- std::cout<<"Koliko zelite redova: ";
- int redovi;
- std::cin>>redovi;
- int **p=nullptr;
- try{
- p=KreirajTrougao(redovi);
- }
- catch(std::domain_error poruka) {
- std::cout<<"Izuzetak: "<<poruka.what();
- return 0;
- }
- catch(std::bad_alloc){
- std::cout<<"Izuzetak: Nedovoljno memorije!";
- return 0;
- }
- for(int i=0; i<redovi; i++){
- for(int j=0; j<2*i+1; j++){
- std::cout<<p[i][j]<< " ";
- }
- std::cout<<std::endl;
- }
- delete[] p[0];
- delete[] p;
- return 0;
- }
- ------------------------------------------------------------
- /*
- TP 16/17 (Tutorijal 6, Zadatak 5)
- Autotestovi by Kerim Hodzic. Prijave gresaka, pitanja
- i sugestije saljite na mail: khodzic2@etf.unsa.ba
- Napomene: testovi su konacni tek pred tutorijal
- za krsenje zabrana dobiva se 0 bodova za zadatak
- */
- #include <iostream>
- #include <vector>
- #include <deque>
- using std::cout;
- using std::cin;
- typedef std::deque<int> Dek;
- template <typename NekiTip>
- auto KreirajDinamickuKopiju2D(NekiTip Kontenjer)-> decltype(Kontenjer[0][0] + Kontenjer[0][0])** {
- decltype(Kontenjer[0][0] + Kontenjer[0][0]) **Matrica=nullptr;
- try{
- Matrica= new decltype(Kontenjer[0][0] + Kontenjer[0][0])*[Kontenjer.size()];
- } catch(std::bad_alloc) {
- throw;
- }
- for(int i=0; i<Kontenjer.size(); i++) {
- try {
- Matrica[i]=new decltype(Kontenjer[0][0] + Kontenjer[0][0])[Kontenjer[i].size()];
- } catch(std::bad_alloc) {
- for(int j=0; j<i; j++) delete[] Matrica[j];
- delete[] Matrica;
- throw;
- }
- for(int j=0; j<Kontenjer[i].size(); j++) {
- Matrica[i][j]=Kontenjer[i][j];
- }
- }
- return Matrica;
- }
- int main()
- {
- cout<<"Unesite broj redova kvadratne matrice: ";
- int n;
- cin>>n;
- std::vector<Dek> VekDek;
- try {
- VekDek.resize(n);
- for(int i=0; i<n; i++) VekDek[i].resize(n);
- } catch(std::exception &e) {
- cout <<"Nedovoljno memorije";
- return 0;
- }
- cout<<"Unesite elemente matrice: ";
- for(int i=0; i<VekDek.size(); i++) {
- for(int j=0; j<VekDek[i].size(); j++) {
- cin>>VekDek[i][j];
- }
- }
- int **Matrica= nullptr;
- try {
- Matrica=KreirajDinamickuKopiju2D(VekDek);
- }
- catch(std::bad_alloc) {
- cout<<"Nedovoljno memorije";
- return 0;
- }
- for(int i=0; i<n; i++) {
- for(int j=0; j<n; j++) {
- cout<<Matrica[i][j]<<" ";
- }
- cout<<std::endl;
- }
- for(int i=0; i<n; i++) delete[] Matrica[i];
- delete[] Matrica;
- return 0;
- }
- -------------------------------------------------------
- /*
- TP 16/17 (Tutorijal 6, Zadatak 6)
- Autotestovi by Kerim Hodzic. Prijave gresaka, pitanja
- i sugestije saljite na mail: khodzic2@etf.unsa.ba
- Napomene: testovi su konacni tek pred tutorijal
- za krsenje zabrana dobiva se 0 bodova za zadatak
- */
- #include <iostream>
- #include <vector>
- #include <deque>
- using std::cout;
- using std::cin;
- typedef std::deque<int> Dek;
- template <typename NekiTip>
- auto KreirajDinamickuKopiju2D(NekiTip Kontenjer)-> decltype(Kontenjer[0][0] + Kontenjer[0][0])** {
- decltype(Kontenjer[0][0] + Kontenjer[0][0]) **Matrica=nullptr;
- try{
- Matrica= new decltype(Kontenjer[0][0] + Kontenjer[0][0])*[Kontenjer.size()];
- } catch(std::bad_alloc) {
- throw;
- }
- int brojac(0);
- for(int i=0; i<Kontenjer.size(); i++) {
- brojac+=Kontenjer[i].size();
- }
- try {
- Matrica[0]=new decltype(Kontenjer[0][0] + Kontenjer[0][0])[brojac];
- }
- catch(std::bad_alloc) {
- delete[] Matrica;
- throw;
- }
- for(int i=1; i<Kontenjer.size();i++)
- Matrica[i]=Matrica[i-1] + Kontenjer[i-1].size();
- for(int i=0; i<Kontenjer.size(); i++){
- for(int j=0; j<Kontenjer[i].size(); j++){
- Matrica[i][j]= Kontenjer[i][j];
- }
- }
- return Matrica;
- }
- int main(){
- cout<<"Unesite broj redova kvadratne matrice: ";
- int n;
- cin>>n;
- std::vector<Dek> VekDek;
- try {
- VekDek.resize(n);
- for(int i=0; i<n; i++) VekDek[i].resize(n);
- } catch(std::exception &e) {
- cout <<"Nedovoljno memorije";
- return 0;
- }
- cout<<"Unesite elemente matrice: ";
- for(int i=0; i<VekDek.size(); i++) {
- for(int j=0; j<VekDek[i].size(); j++) {
- cin>>VekDek[i][j];
- }
- }
- int **Matrica= nullptr;
- try {
- Matrica=KreirajDinamickuKopiju2D(VekDek);
- }
- catch(std::bad_alloc) {
- cout<<"Nedovoljno memorije";
- return 0;
- }
- for(int i=0; i<n; i++) {
- for(int j=0; j<n; j++) {
- cout<<Matrica[i][j]<<" ";
- }
- cout<<std::endl;
- }
- delete[] Matrica[0];
- delete[] Matrica;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement