You are on page 1of 11

Матрици

include <iostream>

using namespace std;

void CitajMatrica (float a[][10], int n, int m)


{
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
cin>>a[i][j];
}
void PecatiMatrica (float a[][10], int n, int m)
{
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
cout<<a[i][j];
cout<<endl;
}

float Suma(float a[][10], int n, int m)


{
float s=0;
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
s+=a[i][j];
return s;
}

float Proizvod(float a[][10], int n, int m)


{
float p=1;
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
p*=a[i][j];
return p;
}

float min (float a[][10], int n, int m)


{
float min = a[0][0];
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
if (min>a[i][j])
min=a[i][j];
return min;
}
float max (float a[][10], int n, int m)
{
float max = a[0][0];
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
if (max<a[i][j])
max=a[i][j];
return max;
}

float as(float a[][10], int n, int m)


{
float s = 0;
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
s+=a[i][j];
return s/(n*m);
}

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;

void citajMatrica(float a[][10], int n, int m)


{
for (int i=0; i<n; i++)
for(int j=0;j<m;j++)
cin>>a[i][j];
}

void pecatiMatrica(float a[][10], int n, int m)


{
for(int i=0; i<n; i++)
{
for (int j=0;j<m;j++)
cout<<a[i][j];
cout<<endl;
}
}

float Sumaelementi (float a[][10], int n, int m)


{
float s=0;
for (int i=0; i<n; i++)
{
for(int j=0;j<m;j++)
s+=a[i][j];
}
return s;
}

float proizvodelementi (float a[][10], int n, int m)


{
float p=1;
for (int i=0; i<n; i++)
for(int j=0;j<m;j++)
p*=a[i][j];
return p;
}

float aritmetickasredina (float a[][10], int n, int m)


{
float as=0;
for (int i=0; i<n; i++)
for(int j=0;j<m;j++)
as+=a[i][j];
return as/(n*m);
}

float min (float a[][10], int n, int m)


{
float min=a[0][0];
for (int i=0; i<n; i++)
{
for(int j=0;j<m;j++)
{
if (min>a[i][j])
min=a[i][j];
}
}
return min;
}
float max (float a[][10], int n, int m)
{
float max=a[0][0];
for (int i=0; i<n; i++)
{
for(int j=0;j<m;j++)
{
if (max<a[i][j])
max=a[i][j];
}
}
return max;
}

float sumaGD (float a[][10], int n)


{
int sgd=0;
for (int i=0; i<n; i++)
for(int j=0;j<n;j++)
if (i==j)
sgd=+a[i][j];
return sgd;
}

float sumaSD (float a[][10], int n)


{
int ssd=0;
for (int i=0; i<n; i++)
for(int j=0;j<n;j++)
if (i+j==n-1)
ssd=+a[i][j];
return ssd;
}

float sumaGTM (float a[][10], int n)


{
int sgtm=0;
for (int i=0; i<n; i++)
for(int j=0;j<n;j++)
if (i<j)
sgtm=+a[i][j];
return sgtm;
}

float sumaDTM (float a[][10], int n)


{
int sdtm=0;
for (int i=0; i<n; i++)
for(int j=0;j<n;j++)
if (i>j)
sdtm=+a[i][j];
return sdtm;
}

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;
} }

#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]=0; b[j]=0;
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;
}

// proizvod na parni elemtni po redici (+ eden if-uslov, kade se proveruva dali a[i][j])

// матрици

a00 a01 a02


a10 a11 a12
a20 a21 a22
Главна дијагонала – i=j; Споредна дијагонала - i+j=n-1; Горнотриаголна i<j; долнотриаголна i>j;
Графови

Граф е двојка (V, E) каде V e множество темиња, а E е множество ребра и притоа на секое ребро му е придружен
пар темиња.

Ако на ребрата им се зададе насока, тогаш тие се ориентирани ребра, а графот ориентиран. Ако не им е
зададена насока, тогаш тие се неориентирани, а графот неориентиран.

Ребро со крај и почеток во едно теме се нарекува лупа. Повеќе ребра меѓу две исти темиња се викаат паралелни.

Доколку еден граф нема лупи, т.е. паралелни ребра, тогаш тој е прост.

Степен на теме А е d(А) и означува колку ребра излегуваат од него. Ако имаме лупа, тогаш се брои +2.

Маршрута е конечна низа на темиња и ребра што почнува и завршува со теме. Доколку маршрутата е составена
од различни ребра, тогаш таа се нарекува верига, а маршрутата со различни темиња се нарекува пат. Доколку во
една маршрута првото и последното теме се исти, тогаш станува збор за циклус.

Граф кој има конечен број на темиња се вика конечен, а граф со бесконечен број на темиња се вика бесконечен.
Доколку помеѓу две темиња има повеќе од две ребра – мултиграф. Комплетен или потполн граф е оној кај кој
секои две темиња се поврзани со ребра.

Теме со степен 0 е изолирано теме. Гранката која спојува теме со степен 1 се вика висечка гранка. Доколку сите
темиња имаат еднаков степен – правилен граф. Графот е поврзан ако постои пат помеѓу било кои две различни
темиња.
Степени:

2
1 3

5 6
4

1. d(1)=2; d(2)=3; d(3)=3; d(4)=2; d(5)=4; d(6)=2


2. соседни ребра на 12: 14, 23, 26
3. графот е поврзан
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>

using namespace std;

void CitajMatrica (int a[][10], int n, int m)


{
for (int i=0; i<n; i++)
for (int j=0; j<n; j++)
cin>>a[i][j];
}
void BrojacStepeni (int a[][10], int n, int m)
{
int brojac, i, j;
for (int i; i<n; i++)
{
brojac=0;
}
for (int j; j<m; j++)
{
if (i==1) brojac++;
{
if (i==j) brojac++;
}
}
cout<<"d("<<i+1<<")="<<brojac;
}

int OrientiranGraf(int a[][10], int n)


{
int orientiran=0;
for (int i=0; i<n-1; i++)
for(int j=i+1; j<n; j++)
if (a[i][j]!=a[j][i])
{
orientiran=1;
break;
}
return orientiran;
}
int ProstGraf(int a[][10], int n)
{
int prost=0;
for (int i=0; i<n; i++)
{
for (int j=0; j<n; j++)
{
if (i==j)
{
if (a[i][j]!=0)
{
prost=1;
break;
}
}
}
}
return prost;
}

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(1)= 2 (колку ребра излегуваат)


5
d(2)= 3
4
d(3)= 2

d(4)= 0

d(5)= 3

d(6)= 2

соседни темиња на темето 2 се: 1, 3 и 6

соседни ребра на 26: 21, 23, 65

дали графот е поврзан? Не е поврзан

А 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

You might also like