Professional Documents
Culture Documents
Матрици и Графови
Матрици и Графови
include <iostream>
int main ()
{
float a[10][10], n, m;
cout<<"Vnesi go nxm: "<<endl;
cin>>n>>m;
cout<<"Vnesi ja matricata: "<<endl;
CitajMatrica(a,n,m);
cout<<"Matricata ima zbir: "<<Suma(a,n,m)<<", proizvod "<<Proizvod(a,n,m)<<", minimum: "<<min(a,n,m)<<",
maximum: "<<max(a,n,m);
cout<<" i as: "<<as(a,n,m)<<endl;
return 0;
}
#include <iostream>
using namespace std;
int main ()
{
float a[10][10];
int n,m;
cout<<"Vnesete red na matricata nxm: ";
cin>>n>>m;
cout<<"Vnesete elementi na matricata po redici: ";
citajMatrica(a,n,m);
cout<<"Vo matricata so elementi: ";
pecatiMatrica(a,n,m);
cout<<"Sumata na elementite iznesuva: "<<Sumaelementi (a,n,m)<<endl;
cout<<"Proizvodot na elementite iznesuva: "<<proizvodelementi (a,n,m)<<endl;
cout<<"Najmaliot element e: "<<min(a,n,m)<<endl;
cout<<"Najgolemiot element e: "<<max (a,n,m)<<endl;
cout<<"Sumata na elementite na glavnata dijagonala e: "<<sumaGD(a,n)<<endl;
cout<<"Sumata na elementite na sporednata dijagonala e: "<<sumaSD(a,n)<<endl;
cout<<"Sumata na elementite na gtm e: "<<sumaGTM(a,n)<<endl;
cout<<"Sumata na elementite na dtm e: "<<sumaDTM(a,n)<<endl;
return 0;
}
#include <iostream> #include <iostream>
using namespace std; using namespace std;
void citajmatrica (float a[][10], int n, int m) void citajmatrica (float a[][10], int n, int m)
{ {
for (int i=0; i<n; i++) for (int i=0; i<n; i++)
for (int j=0; j<m; j++) for (int j=0; j<m; j++)
cin>>a[i][j]; cin>>a[i][j];
} }
void pecatimatrica (float a[][10], int n, int m) void pecatimatrica (float a[][10], int n, int m)
{ {
for (int i=0; i<n; i++) for (int i=0; i<n; i++)
for (int j=0; j<m; j++) for (int j=0; j<m; j++)
cout<<a[i][j]<<" "; cout<<a[i][j]<<" ";
cout<<endl; cout<<endl;
} }
void pecatiniza (float b[], int n) void pecatiniza (float b[], int m)
{ {
for(int i=0; i<n; i++) for(int j=0; j<m; j++)
cout<<b[i]<<" "; cout<<b[j]<<" ";
cout<<endl; cout<<endl;
} }
void proizvodredici (float a[][10], float b[10], int n, int m) void proizvodkoloni (float a[][10], float b[10], int n, int m)
{ {
for(int i=0; i<n; i++) for(int j=0; j<m; j++)
{ {
b[i]=1; b[j]=1;
for (int j=0; j<m; j++) for (int i=0; i<n; i++)
b[i]*=a[i][j]; b[j]*=a[i][j];
} }
} }
int main () int main ()
{ {
float a[10][10], b[10]; float a[10][10], b[10];
int i,j,n,m; int i,j,n,m;
cout<<"Vnesi red na matricata: "<<endl; cout<<"Vnesi red na matricata: "<<endl;
cin>>n>>m; cin>>n>>m;
cout<<"Vnesete elementi na matrica: "<<endl; cout<<"Vnesete elementi na matrica: "<<endl;
citajmatrica(a,n,m); citajmatrica(a,n,m);
proizvodredici (a,b,n,m); proizvodkoloni (a,b,n,m);
cout<<"Od matricata so elementi: "<<endl; cout<<"Od matricata so elementi: "<<endl;
pecatimatrica(a,n,m); pecatimatrica(a,n,m);
cout<<"Dobienata niza e: "<<endl; cout<<"Dobienata niza e: "<<endl;
pecatiniza(b,n); pecatiniza(b,n);
return 0; return 0;
} }
{ {
float a[10][10], b[10]; float a[10][10], b[10];
int i,j,n,m; int i,j,n,m;
cout<<"Vnesi red na matricata: "<<endl; cout<<"Vnesi red na matricata: "<<endl;
cin>>n>>m; cin>>n>>m;
cout<<"Vnesete elementi na matrica: "<<endl; cout<<"Vnesete elementi na matrica: "<<endl;
citajmatrica(a,n,m); citajmatrica(a,n,m);
proizvodredici (a,b,n,m); proizvodkoloni (a,b,n,m);
cout<<"Od matricata so elementi: "<<endl; cout<<"Od matricata so elementi: "<<endl;
pecatimatrica(a,n,m); pecatimatrica(a,n,m);
cout<<"Dobienata niza e: "<<endl; cout<<"Dobienata niza e: "<<endl;
pecatiniza(b,n); pecatiniza(b,n);
return 0; return 0;
}
// proizvod na parni elemtni po redici (+ eden if-uslov, kade se proveruva dali a[i][j])
// матрици
Граф е двојка (V, E) каде V e множество темиња, а E е множество ребра и притоа на секое ребро му е придружен
пар темиња.
Ако на ребрата им се зададе насока, тогаш тие се ориентирани ребра, а графот ориентиран. Ако не им е
зададена насока, тогаш тие се неориентирани, а графот неориентиран.
Ребро со крај и почеток во едно теме се нарекува лупа. Повеќе ребра меѓу две исти темиња се викаат паралелни.
Доколку еден граф нема лупи, т.е. паралелни ребра, тогаш тој е прост.
Степен на теме А е d(А) и означува колку ребра излегуваат од него. Ако имаме лупа, тогаш се брои +2.
Маршрута е конечна низа на темиња и ребра што почнува и завршува со теме. Доколку маршрутата е составена
од различни ребра, тогаш таа се нарекува верига, а маршрутата со различни темиња се нарекува пат. Доколку во
една маршрута првото и последното теме се исти, тогаш станува збор за циклус.
Граф кој има конечен број на темиња се вика конечен, а граф со бесконечен број на темиња се вика бесконечен.
Доколку помеѓу две темиња има повеќе од две ребра – мултиграф. Комплетен или потполн граф е оној кај кој
секои две темиња се поврзани со ребра.
Теме со степен 0 е изолирано теме. Гранката која спојува теме со степен 1 се вика висечка гранка. Доколку сите
темиња имаат еднаков степен – правилен граф. Графот е поврзан ако постои пат помеѓу било кои две различни
темиња.
Степени:
2
1 3
5 6
4
A B C D E
А 0 1 1 0 1
B 1 0 1 1 0
C 1 1 0 0 1
D 0 1 0 0 0
E 1 0 1 0 0
6. програма
#include <iostream>
using namespace std;
void stepenteminja (int a[10], int n, int m, int d[])
{
for (int i=0; i<n; i++)
{
d[i]=0;
for (int j=0; j<m; j++)
{
if (a[i][j]=1)
{
d[i]++;
if (i==j) d[i]++;
}
}
}
#include <iostream>
int main()
{
int a[10][10], n, m, prost, orientiran;
cout<<"Vnesete kolku teminja ima grafot?"<<endl;
cin>>n;
cout<<"Vnesete ja matricata na povrzanost: "<<endl;
CitajMatrica(a,n,m);
prost=ProstGraf(a,n);
if (prost==0)
cout<<"Grafot e prost, odnosno nema lupi."<<endl;
else
cout<<"Grafot ne e prost, odnosno ima lupi."<<endl;
orientiran=OrientiranGraf(a,n);
if(orientiran==0)
cout<<"Grafot e neorientiran."<<endl;
else
cout<<"Grafot e orientiran."<<endl;
return 0;
}
1 2 3 4 5 6
1 0 1 0 0 1 0
2 1 0 1 0 0 1 Степен на:
3 0 1 0 0 1 0 2
4 0 0 0 0 0 0 1
5 1 0 1 0 0 1
6 0 1 0 0 1 0
3
6
d(4)= 0
d(5)= 3
d(6)= 2
А B C D E
A 0 1 1 0 1
B 1 0 0 1 0
C 1 0 0 1 0
D 0 1 1 0 1
E 1 0 0 1 1
A B
E D