[ miniplazma @ 17.11.2010. 22:39 ] @
Vježbam C++, pa ako možete da provjerite šta nije dobro u sledećim zadacima.

1.zad Napraviti klasu Trougao, koja u sebi sadrži stranice trougla. Klasa treba da sadrži
sledeće metode... Zatim napisati kod koji čita (ograničeni) niz trouglova . Problem je kod učitavanja niza trouglova.Evo mog koda:
Code:


class Trougao
{
    float a,b,c;
    public:
    float getA() {return a;};
    float getB() {return b;};
    float getC() {return c;};
    void setA(float data){a=data;};
    void setB(float data){b=data;};
    void setC(float data){c=data;};
    void postavi(float x, float y, float z);
    float O() // obim
    {
        float tmp;
        tmp=getA()+getB()+getC();
        return tmp;
    };
    float P() // povrsina
    {
        float s;
        s=(a+b+c)/2;
        return s*(s-getA())*(s-getB())*(s-getC());
    };
};

int main()
{
    float input, obim, povrsina;
    int broj;
    Trougao t;
    Trougao *niz=new Trougao();
    cout<<"Broj trouglova: ";
    cin>>broj;
    niz=new Trougao [broj];
    for (int i=0;i<broj;i++)
    {
        cout<<"a= ";
        cin>>input;
        t[i].setA(input);
        cout<<"b= ";
        cin>>input;
        t[i].setB(input);
        cout<<"c=";
        cin>>input;
        t[i].setC(input);
    } 


Dinamički alociram niz tipa Trougao.Problem je kod učitavanja i-tom elementa niza. I ako možete da pogledate je lli ostatak programa ok.

2.zad Napraviti strukturu Element koja sadrži dva polja. Prvo polje je cjelobrojna
vrijednost, dok je drugo polje pokazivač na strukturu istog tipa (tj. na tip
Element). Potom napraviti strukturu Stek koja sadrži jedno polje, a koje
predstavlja pokazivač na Element. Zatim napraviti sledeće slobodne funkcije:
a) inicijalizujStek(..) koja kao argument ima pokazivač na objekat strukturu Stek
i pokazivač unutar te strukture postavljen na NULL.
b) brisiStek(...) koja za argument ima pokazivač na strukturu Stek i
uništava jedan po jedan element , a na samom kraju pokazivač postavlja na NULL.
c) push(...) koja za argumente ima pokazivač na strukturu Stek i vrijednost
koja se postavlja na stek.

Code:
struct Element
{
    int info;
    Element *next;
};

struct Stek
{
    Element *s;
};

void inicijalizujStek(Stek *pok)
{
    pok->s->next=NULL;
}

void brisiStek(Stek *pok)
{
    while (pok->s->next != NULL)
    {
        Stek *a=pok;
        pok=pok+1;
        delete a;
    }
}

void push(Stek pok,int data)
{
    Stek a;
    a->s->info=data;
    a->s->next=pok->s;
    pok=a;

}

Problem je kod procedure push.
[ miniplazma @ 18.11.2010. 12:01 ] @
Našla sam grešku u prvom zad, evo koda

Code:
class Trougao
{
    float a,b,c;
    public:
    float getA() {return a;};
    float getB() {return b;};
    float getC() {return c;};
    void setA(float data){a=data;};
    void setB(float data){b=data;};
    void setC(float data){c=data;};
    void postavi(float x, float y, float z);
    float O()
    {
        float tmp;
        tmp=getA()+getB()+getC();
        return tmp;
    };
    float P()
    {
        float s;
        // Racuna povrsinu preko Heronovog obrasca
        s=(a+b+c)/2;
        return s*(s-getA())*(s-getB())*(s-getC());
    };
};

void Trougao::postavi(float x, float y, float z)
{
    if (x+y>z && x+z>y && y+z>x)
    {
        a=x;
        b=y;
        c=z;
    }

}
void Stampa(Trougao *t,int br)
{
    for (int i=0;i<br;i++)
    {
        cout<<i+1<<".trougao:"<<endl;
        cout<<"a="<<t[i].getA()<<"  b="<<t[i].getB()<<"  c="<<t[i].getC()<<endl;
        cout<<"Povrsina je: "<<t[i].P()<<endl;
    }
}

int main()

{
    float input, obim, povrsina;
    int broj;
    Trougao *niz=new Trougao();
    cout<<"Broj trouglova: ";
    cin>>broj;
    niz=new Trougao [broj]; 
    for (int i=0;i<broj;i++) // unos trouglova
    {

        cout<<"a= ";
        cin>>input;
        niz[i].setA(input);
        cout<<"b= ";
        cin>>input;
        niz[i].setB(input);
        cout<<"c=";
        cin>>input;
        niz[i].setC(input);
    }