Sunteți pe pagina 1din 9

Ministerul Educaţiei,Culturii si Cercetarii al Republicii Moldova

Universitatea Tehnica a Moldovei

Departamentul Informatica si Ingineria Sistemelor

RAPORT
Lucrare de laborator nr. 1
La Matematica Discretă
Pe tema: Păstrarea grafurilor in memoria calculatorului.

A efectuat: A.Ciumac
st. gr. AI-181

A verificat:
1. Scopul lucrării:
1. Studierea metodelor de definire a unui graf : matricea de incidență, matricea de
adiacență, liste.
2. Elaborarea unor proceduri de introducere , extragere si transformare a diferitelor
forme de reprezentare internă a grafurilor cu scoaterea rezultatelor la display si
imprimantă.

2. Sarcina de bază:
1. Elaborați procedura de introducere a unui graf în memoria calculatorului în formă
de matrice de incidență, de matrice de adiacență și listă de adiacență cu posibilități de
analiză a certitudinii.
2. Elaborați proceduri de transformare dintr-o formă de reprezentare in alta.
3. Folosind procedurile enumerate , elaborați programul care vă permite:
* introducerea grafului reprezentat sub oricare forma din cele trei forme cu
posibilități de corecție a datelor.
* păstrarea grafului în memoria externă în formă de lista de adiacență.
* extragerea informației într-una dintre cele trei forme la imprimantă și display.

3. Listing-ul programului in C:
#include"stdlib.h"
#include"iostream.h"
#include"conio.h"
#include"math.h"
#include"fstream.h"
main()
{
system("cls");
ofstream out("textzz.txt");
float A[20][20];
int AA[20];
int BB[20];
int z,t,i,j,n,p=0,b,o,k,r,s,k1,r1,nm,w,po,pp,d,ee=0;
cout<<"\n\n\t\t Lucrare de laborator nr.1 la Matematica discreta";
cout<<"\n Dam numarul de varfuri: n= ";
out<<"\n Dam numarul de varfuri: n= ";
cin>>n;
out<<n;
n=n+1;
cout<<"\n Introducem legaturile \n";
out<<"\n Introducem legaturile \n";
for(i=1;i<n;i++){
for(j=1;j<n;j++) {
cout<<"x"<<i<<"x"<<j<<" "; /*indicator optic*/
out<<"x"<<i<<"x"<<j<<" ";
cin>>A[i][j];
out<<A[i][j]; }}
eticheta:
n=n+ee;
ee=0;
cout<<"\n meniu";
out<<"\n meniu";
cout<<"\n 1: Matriciea de incidenta";
out<<"\n 1: Matriciea de incidenta";
out<<"\n 2: Matriciea de adiacenta";
cout<<"\n 2: Matriciea de adiacenta";
out<<"\n 3: Lista de adiacenta";
cout<<"\n 3: Lista de adiacenta";
out<<"\n 4: Modificarea legaturilor intre virfuri";
cout<<"\n 4: Modificarea legaturilor intre virfuri";
out<<"\n 5: Adaugarea unui varf si a tuturor laturilor comun cu el";
cout<<"\n 5: Adaugarea unui varf si a tuturor laturilor comun cu el";
out<<"\n 6: Evitarea unui varf";
cout<<"\n 6: Evitarea unui varf";
cout<<"\n 7: Iesire";
out<<"\n 7: Iesire";
out<<"\n Alegeti optiunea convenabila si tastati enter:";
cout<<"\n Alegeti optiunea convenabila si tastati enter:\n";
cin>>nm;
out<<nm;
switch(nm) {case 1 : { cout<<"\n\n Afisarea matricei de incidenta:\n";
out<<"\n\n Afisarea matricei de incidenta\n";
cout<<" º"; /* element pentru regularea matriciei
desenate*/
out<<" º";
for(r=1;r<n;r++){
cout<<"x"<<r<<" º"; /*pu. a ne arata cu care varf este
legatura*/
out<<"x"<<r<<" º";}
for(i=1;i<n;i++){
cout<<"\n";
out<<"\n";
cout<<"ÍÍÎÍ"; /*a indrepta desenu*/
out<<"ÍÍÎÍ";
for(k=1;k<n;k++){
cout<<"ÍÍÎÍ"; /*pentru a desena kletka*/
out<<"ÍÍÎÍ";}
cout<<"\nx"<<i<<"º"; /*elementu de la kare
porneste*/
out<<"\nx"<<i<<"º";
for(j=1;j<n;j++){
cout<<A[i][j]<<" º" ;
out<<A[i][j]<<" º" ;}}
cout<<"\ndaca doriti sa schimbati varianta alesa tastati
tasta 0";
out<<"\ndaca doriti sa schimbati varianta alesa tastati
tasta 0 ";
cin>>w;
out<<w;
if(w==1){
return 0;}
if(w!=1){system("cls");
goto eticheta;}}

case 3 : {cout<<"\n\n\nlist!";
out<<"\n\n\nlist!";
for(i=1;i<n;i++){
out<<"\nx"<<i<<" º"; /*trasarea liniea ce desparte varful
principal de sec.*/
cout<<"\nx"<<i<<" º";
for(j=1;j<n;j++){
if(A[i][j]!=0){
out<<j<<" " ;
cout<<j<<" " ;}}
out<<"0";
cout<<"0";}
out<<"\ndaca doriti sa schimbati varianta alesa tastati tasta 0";
cout<<"\ndaca doriti sa schimbati varianta alesa tastati tasta 0";
cin>>w;
out<<w;
if(w==1){
return 0;}
if(w!=1){system("cls");
goto eticheta;}
}
case 2 :{ cout<<"\n\Afisam matricea de adiacenta:\n";
out<<"\n\Afisam matricea de adiacenta:\n";
k=0;
p=0;
for(i=1;i<n;i++){
for(j=1;j<n;j++){
if(A[i][j]!=0){
k++;
AA[k]=i;
BB[k]=j;
p++;}} }
cout<<" "<<"º";
out<<" "<<"º";
k=0;
for(o=1;o<n;o++){
cout<<" x"<<o<<"º";
out<<" x"<<o<<"º";}
for(s=1;s<p+1;s++){
k++;
cout<<"\n";
out<<"\n";
for(o=1;o<n+1;o++){
cout<<"ÍÍÎÍ";
out<<"ÍÍÎÍ";}
cout<<"\nu"<<s<<"º ";
out<<"\nu"<<s<<"º ";
b=0;
k1=AA[k];
r1=BB[k];
for(o=1;o<n;o++){
if(k1==r1){if(k1==o){b=2;}if(k1!=o){b=0;}}
if(k1!=r1){if(k1==o){b=-1;}if(k1!=o){b=0;}if(r1==o){b=1;}}
if(b<0) {
cout<< b<<"º ";
out<< b<<"º ";}
if(b>=0){
cout<<" "<<b<<"º ";
out<<" "<<b<<"º ";}}}
cout<<"\ndaca doriti sa schimbati varianta alesa tastati tasta 0";
out<<"\ndaca doriti sa schimbati varianta alesa tastati tasta 0";
cin>>w;
out<<w;
if(w==1){
return 0;}
if(w!=1){
system("cls");
goto eticheta;}}
case 4: {cout<<"\n alegeti virfurile intre care doriti sa faceti
modifikari\n";
cin>>po;
cin>>pp;
i=po;
j=pp;
cout<<"dam noua valoare legaturii ";
cout<<"x"<<i<<"x"<<j;
cin>>A[i][j];
system("cls");
goto eticheta;}
case 5: {for(i=n;i<n+1;i++){
for(j=1;j<n+1;j++) {
cout<<"x"<<i<<"x"<<j<<" "; /*indikator optik*/
cin>>A[i][j];}}
for(i=1;i<n;i++){
for(j=n;j<n+1;j++) {
cout<<"x"<<i<<"x"<<j<<" "; /*indikator optik*/
cin>>A[i][j];}}
ee=1;
goto eticheta; }
case 7: {cout<<"Sunteti sigur ca doriti sa iesiti? Daca da, tastati 1.";
cin>>w;
if(w==1){
return 0;}
if(w!=0){
system("cls");
goto eticheta;} }
case 6: { cout<<" Pe care varf doriti sa-l evitati?";
cin>>d;
i=d;
for(j=1;j<n;j++) {
A[i][j]=NULL;}
j=d;
for(i=1;i<n;i++);
{
A[i][j]=NULL;}
goto eticheta; }
default: {system("cls");
cout<<"Alegeti optiunea corecta";
goto eticheta;
}}
out.close();

return 0;
}
4. Afisare la ecran:
5. Concluzie:
Prin intermediul acestei lucrari de laborator, am reusit sa elaborez un program in
compilatorul C++, prin care am introdus un graf in memoria calculatorului in forma de
matrice de incidenta si de adiacenta,lista de adiacenta. Acest program contine si functii
de transformare dintr-o forma de reprezentare a grafului in alta si de afisare la display
a tuturor functiilor sale prin intermediul unui meniu de navigare.

S-ar putea să vă placă și

  • Laborator 2 3 SDA
    Laborator 2 3 SDA
    Document18 pagini
    Laborator 2 3 SDA
    Andrian Ciumac
    Încă nu există evaluări
  • Prog. C++. Lab Nr. 1
    Prog. C++. Lab Nr. 1
    Document30 pagini
    Prog. C++. Lab Nr. 1
    Unknown Person
    Încă nu există evaluări
  • Labhh 7
    Labhh 7
    Document4 pagini
    Labhh 7
    Mihai Rusu
    Încă nu există evaluări
  • Prog. C++. Lab Nr. 7
    Prog. C++. Lab Nr. 7
    Document10 pagini
    Prog. C++. Lab Nr. 7
    Andrian Ciumac
    Încă nu există evaluări
  • Prog. C++. Lab Nr. 2
    Prog. C++. Lab Nr. 2
    Document27 pagini
    Prog. C++. Lab Nr. 2
    Andrian Ciumac
    Încă nu există evaluări
  • PLotnic Curricula POO
    PLotnic Curricula POO
    Document9 pagini
    PLotnic Curricula POO
    Victor Postica
    Încă nu există evaluări
  • PLotnic Curricula POO
    PLotnic Curricula POO
    Document9 pagini
    PLotnic Curricula POO
    Victor Postica
    Încă nu există evaluări
  • Lab 6
    Lab 6
    Document5 pagini
    Lab 6
    Andrian Ciumac
    Încă nu există evaluări
  • Lab 3
    Lab 3
    Document13 pagini
    Lab 3
    Витёк Мужичёк
    100% (1)
  • Programare C++ Laborator 4 Indrumar UTM
    Programare C++ Laborator 4 Indrumar UTM
    Document7 pagini
    Programare C++ Laborator 4 Indrumar UTM
    UrsuOctavian
    Încă nu există evaluări
  • Sarcina Lab2
    Sarcina Lab2
    Document10 pagini
    Sarcina Lab2
    Nickolae Enachi
    Încă nu există evaluări
  • Programare C++ Laborator 4 Indrumar UTM
    Programare C++ Laborator 4 Indrumar UTM
    Document7 pagini
    Programare C++ Laborator 4 Indrumar UTM
    UrsuOctavian
    Încă nu există evaluări
  • Lab 6
    Lab 6
    Document5 pagini
    Lab 6
    Andrian Ciumac
    Încă nu există evaluări
  • Lab 6
    Lab 6
    Document5 pagini
    Lab 6
    Andrian Ciumac
    Încă nu există evaluări
  • Raport: Lucrare de Laborator nr.1
    Raport: Lucrare de Laborator nr.1
    Document6 pagini
    Raport: Lucrare de Laborator nr.1
    TI UTM
    Încă nu există evaluări
  • Programare C++ Laborator 5 Indrumar UTM
    Programare C++ Laborator 5 Indrumar UTM
    Document12 pagini
    Programare C++ Laborator 5 Indrumar UTM
    UrsuOctavian
    Încă nu există evaluări
  • raport 5 мукшпф
    raport 5 мукшпф
    Document8 pagini
    raport 5 мукшпф
    Andrian Ciumac
    Încă nu există evaluări
  • Raport-1 Fizica
    Raport-1 Fizica
    Document5 pagini
    Raport-1 Fizica
    Andrian Ciumac
    Încă nu există evaluări
  • Laborator 1 Sda
    Laborator 1 Sda
    Document11 pagini
    Laborator 1 Sda
    Cucu Eugen
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document30 pagini
    Lab 1
    Ionsam14
    Încă nu există evaluări
  • Laborator 1 Sda
    Laborator 1 Sda
    Document11 pagini
    Laborator 1 Sda
    Cucu Eugen
    Încă nu există evaluări
  • Referat L10 X
    Referat L10 X
    Document8 pagini
    Referat L10 X
    Andrian Ciumac
    Încă nu există evaluări
  • 26 Laborator Fizica
    26 Laborator Fizica
    Document4 pagini
    26 Laborator Fizica
    Andrian Ciumac
    Încă nu există evaluări
  • Laborator 1 Sda
    Laborator 1 Sda
    Document11 pagini
    Laborator 1 Sda
    Cucu Eugen
    Încă nu există evaluări
  • Laborator 1 Sda
    Laborator 1 Sda
    Document11 pagini
    Laborator 1 Sda
    Cucu Eugen
    Încă nu există evaluări
  • 12 Laborator Fizica
    12 Laborator Fizica
    Document4 pagini
    12 Laborator Fizica
    Constantin Musteata
    Încă nu există evaluări
  • Referat L10 X
    Referat L10 X
    Document8 pagini
    Referat L10 X
    Andrian Ciumac
    Încă nu există evaluări
  • Laborator 1 Sda
    Laborator 1 Sda
    Document11 pagini
    Laborator 1 Sda
    Cucu Eugen
    Încă nu există evaluări
  • Referat L10 X
    Referat L10 X
    Document8 pagini
    Referat L10 X
    Andrian Ciumac
    Încă nu există evaluări