Code:
class graph {
public :
graph();
~graph();
friend void polynomial (graph &);
private:
int n;
double p[11];
double s[10];
int a[10][10];
};
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);
}
#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]