[ lissa_m_87 @ 27.06.2011. 14:58 ] @
Moze li mi ko pomoci oko zadatka...Potrebno je formirati klasu
Code:

class graph {
 public :
 graph();
 ~graph();
 friend void polynomial (graph &);
 private:
 int n;
 double p[11];
 double s[10];
 int a[10][10];
 };

Broj n cvorova grafa G birati metodom slucajnog izbora (2<=n<=10).Elemente a[i ][j] matrice susedstva grafa G birati takodje metodom slucajnog izbora : a[i ][j]=a[j][i ] ako je i not= j; i a[i ][j]=0 ako je i=j.
Upotrebom funkcije void polynomial(graph &) prikazati karakteristicni polinom P_G(\lambda)=|\lambda I-A| u obliku (1,0,a_2,...a_n);
(niz p[11] sadrzi koeficijente P_G(\lambda)).
Upotrebom funkcije void matrix(graph &) prikazati matricu susedstva grafa G u sledecem formatu:
n m a_{21} a_{31} a_{32}...a_{n1} a_{n2}...a_{n,n-1};
gde je :
a)n broj cvorova grafa G;
b)m=|a_2| broj grana grafa G.


Ja sam uradila nesto sto bi trebalo da radi, ali resenje koje se dobija nije tacno...
Code:

#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<time.h>
class graph {
    public:
        graph();
        ~graph();
        void display();
        
        friend void polynomial (graph &);

    private:
        int n;
        double a[10][10];
        double p[11];
        double s[10];
};
graph::graph() {
    int i,j;
    randomize();
    n=2+random(9);
    for(i=1;i<=n;i++){
        for(j=1;j<=i;j++){
            if(i==j) a[i][i]=0;
            else { a[i][j]=random(2);
                   a[j][i]=a[i][j];}
                   }
         }

    }
graph::~graph() {
    }

void graph::display() {
    int i,j;
printf("********************************************************\n");
printf("Generisana je matrica:\n");
printf("********************************************************\n\n\n");
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++)
            printf("%d",a[i][j]);
        printf("\n");
        }
printf("\n\n %d",n);
printf("********************************************************\n");
printf("********************************************************\n");
}

void polynomial(graph &g)
{

int i,j,q,k;
double m;
double b[10][10];
double stari[10][10];
    for(i=1;i<=g.n;i++){for(j=1;j<g.n;j++) stari[i][j]=g.a[i][j];}
    g.s[1]=0;
for(k=2;k<=g.n;k++)
{       g.s[k]=0;
    for(i=1;i<=g.n;i++){
        for(j=1;j<=g.n;j++)
        {
            b[i][j]=0;
            for(q=1;q<=g.n;q++)
                b[i][j]=b[i][j]+stari[i][q]*g.a[q][j];
        }
    }
    for(i=1;i<=g.n;i++)
    g.s[k]=g.s[k]+b[i][i];
    for(i=1;i<=g.n;i++){for(j=1;j<g.n;j++) stari[i][j]=b[i][j];}
    }
g.p[0]=1;
g.p[1]=0;
for(k=2;k<=g.n;k++)
{       g.p[k]=0;
    for(i=1;i<=k-1;i++){
        g.p[k]=g.p[k]+g.s[k-i]*g.p[i];}
    m=-g.p[k];
    g.p[k]=m/k-g.s[k]/k;

}
printf("********************************************************\n");
printf("*Koeficijenti karakteristicnog polinoma su:*\n");
printf("********************************************************\n\n");
printf("%f",g.p[0]);
for(i=1;i<=g.n-1;i++) printf(",%f",g.p[i]);
printf(",%f)\n",g.p[g.n]);
}
void main() {
    clrscr();
    graph g;
    g.display();
    printf("\n");
    polynomial(g);

    }


[Ovu poruku je menjao X Files dana 30.06.2011. u 10:30 GMT+1]
[ jovazmaj @ 30.06.2011. 06:52 ] @
bi ja, al iskreno ne razumem recnik teksta zadatka.
mozes li da napises sta ocekujes da dobijes kao rezultat?
[ Nedeljko @ 30.06.2011. 10:23 ] @
A šta konkretno nije tačno?
[ lissa_m_87 @ 01.07.2011. 17:55 ] @
Pa problem sam uspela da resim na kraju..problem je bio u inicijalizaciji konstruktora klase..:) a inace zadatak jeste bio da se formira matrica pripadnosti cvora kod grafa.. tacnije ako su tacka 1 i 2 povezane granom onda se 1 upisuje u elemente a12 i a21..a ako nisu upisuje se 0..