Professional Documents
Culture Documents
Lab 1
Lab 1
RAPORT
La Matematica Discreta
A efectuat:
CR-211 Cobzac Daniel
Chişinău -2022
Lucrare de laborator Nr. 1
Tema: Păstrarea grafurilor în memoria calculatorului. Matricea drumurilor.
1. Scopul lucrării:
1. Studierea metodelor de definire a unui graf: matrice de incidenţă, matrice de adiacenţă,
liste;
2. Elaborarea unor proceduri de introducere, extragere şi transformare a diferitor forme de
reprezentare internă a grafurilor cu scoaterea rezultatelor la display şi imprimantă.
3. Elaborarea programelor de determinare a matricei drumurilor într-un graf orientat.
2. Sarcina
1. Cream Variabila de tip integer tab1 caruia ii adaugam elementele matricei de adiacenta, datele le
introducem manual, apoi cream 2 cicluri pentru a arata datele la ecran.
2.
#include <iostream>
#include<stdio.h>
#include<cstdlib>
#include<ctime>
#include<math.h>
int main()
int tab[14][14] = {
{0,1,0,0,0,0,1},
{0,1,0,0,0,0,1},
{1,0,1},
{0,0,1,0,1},
{0,0,0,1,0,1},
{0,0,1,0,1,0,1},
{1,0,1,0,0,0,0,1,1},
{0,0,0,0,0,0,1,0,1}, //8
{0,0,0,0,0,0,1,1,0,1},
{0,0,0,0,0,0,0,0,1,0,1,1,1},
{0,0,0,0,1,0,0,0,0,1,0,1},
{0,0,0,0,0,0,0,0,0,1,1,0,1},
{0,0,0,0,0,0,0,0,0,1,0,1,0,1},
{0,0,0,0,0,0,0,0,1,0,0,0,1}};
int i,j;
for(i=0;i<14;++i)
for(j=0;j<14; ++j)
cout<<tab[i][j]<<'\t';
cout<<endl;
int tab1[21][14] = {
{1,1},
{0,1,1},
{0,0,1,1},
{0,0,0,1,1},//4
{0,0,0,0,1,1},
{0,0,1,0,0,1},
{0,0,1,0,0,0,1},
{0,0,0,0,0,1,1}, //8
{1,0,0,0,0,0,1},
{0,0,0,0,0,0,1,1},
{0,0,0,0,0,0,1,0,1},
{0,0,0,0,0,0,0,1,1},
{0,0,0,0,0,0,0,0,1,1}, // 13
{0,0,0,0,0,0,0,0,0,1,1},
{0,0,0,0,1,0,0,0,0,0,1},
{0,0,0,0,0,0,0,0,0,0,1,1},
{0,0,0,0,0,0,0,0,0,1,0,1}, //17
{0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,0,0,0,0,0,0,0,0,0,0,0,1,1},
{0,0,0,0,0,0,0,0,1,0,0,0,0,1}, // 20
{0,0,0,0,0,0,0,0,0,1,0,0,1,0}};
for(i=0;i<21;++i)
for(j=0;j<14; ++j)
cout<<tab1[i][j]<<'\t';
cout<<endl;
{-1,1},
{0,-1,1},
{0,0,-1,1},
{0,0,0,-1,1},//4
{0,0,0,0,-1,1},
{0,0,1,0,0,-1},
{0,0,-1,0,0,0,1},
{0,0,0,0,0,-1,1}, //8
{-1,0,0,0,0,0,1},
{0,0,0,0,0,0,-1,1},
{0,0,0,0,0,0,-1,0,1},
{0,0,0,0,0,0,0,-1,1},
{0,0,0,0,0,0,0,0,-1,1}, // 13
{0,0,0,0,0,0,0,0,0,-1,1},
{0,0,0,0,-1,0,0,0,0,0,1},
{0,0,0,0,0,0,0,0,0,0,-1,1},
{0,0,0,0,0,0,0,0,0,-1,0,1}, //17
{0,0,0,0,0,0,0,0,0,0,0,-1,1},
{0,0,0,0,0,0,0,0,0,0,0,0,-1,1},
{0,0,0,0,0,0,0,0,-1,0,0,0,0,1}, // 20
{0,0,0,0,0,0,0,0,0,-1,0,0,1,0}};
for(i=0;i<21;++i)
for(j=0;j<14; ++j)
{
cout<<tab2[i][j]<<'\t';
cout<<endl;
int tab3[13][13] = {
{0,1,0,0,0,0,0,1},
{0,0,1,0,0,1,1},
{0,0,0,1,0,1},
{0,0,0,0,1,1},
{0,0,0,0,0,1},
{0,0,0,0,0,0,1},
{0,0,0,0,0,0,0,1,0,1},
{0,0,0,0,0,0,0,0,1}, //8
{0,0,0,0,0,0,0,0,0,1},
{0,0,0,0,0,0,0,0,0,0,1},
{0,0,0,0,0,1,0,0,0,0,0,1},
{0,0,0,0,0,0,0,0,0,0,1,0,1},
{0,0,0,0,0,0,0,0,0,0,1,0,0}};
for(i=0;i<13;++i)
for(j=0;j<13; ++j)
cout<<tab3[i][j]<<'\t';
}
cout<<endl;
tab3[i][j] = 1;
for(i=0;i<13;++i)
for(j=0;j<13; ++j)
cout<<tab3[i][j]<<'\t';
cout<<endl;
3. Intrebari de control
4. Algoritmul lui Roy-Warshall stabilește despre oricare două noduri x y dacă există drum de
la x la y.
Se selecteaza coloana n si randul n, se cauta unitatea pe rand, iar daca la intersectia cu o alta unitate
de pe coloana respectiva e 0 se adauga 1.