[ etfstudent @ 23.03.2014. 18:51 ] @
Imam problem sa pokretanjem jedne jednostavne aplikacije. Evo code-a:

Code:
#include <iostream>

using namespace std;

class proba{
public:
proba();
~proba();
void postavi(int,int);
void promijeni(int);
int stampaj(int);
private:
int duzina;
int *element;
};

void proba::postavi(int a,int i){
element[i]=a;
}

void proba::promijeni(int i){
int *p;
p=element;
p[i]=p[i]+1;
}

int proba::stampaj(int i){
return element[i];
}

proba::proba(){
element = new int[duzina];
}

proba::~proba(){
delete [] element;
}

int main()
{
proba niz;
int duzina,i,a;
cout<<"Unesi duzinu niza: ";
cin>>duzina;
cout<<"Unesi elemente niza: ";
for(i=0;i<duzina;i++){
cin>>a;
niz.postavi(a,i);
}
cout<<"Unijeli ste niz: ";
for(i=0;i<duzina;i++){
cout<<" "<<niz.stampaj(i);
}
for(i=0;i<duzina;i++){
niz.promijeni(i);
}
cout<<"\nUneseni niz za 1 uvecan: ";
for(i=0;i<duzina;i++){
cout<<" "<<niz.stampaj(i);
}
}


Program uspjesno kompajlujem ali prilikom pokretanja dobijam ovu poruku
"terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information."
Da li neko zna sta moze biti uzrok?

[ Burgos @ 23.03.2014. 19:52 ] @
Code:
proba::proba(){
element = new int[duzina];
}


Nisi inicijalizovao polje `duzina`. Dakle, prvo sačekaj unos od korisnika, pa tek onda kreiraj objekat.

Code:
#include <iostream>

using namespace std;

class proba{
public:
proba(int pDuzina);
~proba();
void postavi(int,int);
void promijeni(int);
int stampaj(int);
private:
int duzina;
int *element;
};

void proba::postavi(int a,int i){
element[i]=a;
}

void proba::promijeni(int i){
int *p;
p=element;
p[i]=p[i]+1;
}

int proba::stampaj(int i){
return element[i];
}

proba::proba(int pDuzina){
duzina = pDuzina;
element = new int[duzina];
}

proba::~proba(){
delete [] element;
}

int main()
{

int duzina,i,a;
cout<<"Unesi duzinu niza: ";
cin>>duzina;

proba niz(duzina);

cout<<"Unesi elemente niza: ";
for(i=0;i<duzina;i++){
cin>>a;
niz.postavi(a,i);
}
cout<<"Unijeli ste niz: ";
for(i=0;i<duzina;i++){
cout<<" "<<niz.stampaj(i);
}
for(i=0;i<duzina;i++){
niz.promijeni(i);
}
cout<<"\nUneseni niz za 1 uvecan: ";
for(i=0;i<duzina;i++){
cout<<" "<<niz.stampaj(i);
}
}


Moguce je da ima jos gresaka, nisam gledao dalje.
[ etfstudent @ 23.03.2014. 20:37 ] @
Ispravljeno. Zahvaljujem