Sei sulla pagina 1di 16

#include <stdio.

h>

#include <stdlib.h>

#include <conio.h>

#include<string.h>

#include<windows.h>

void setcolor(unsigned short color){

HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleTextAttribute(hcon,color);

int optiune,pl,i,k,n,m,y=0,x,j,p,a[50][50],v[50][50],virf[50][50],b,u,z,q,t,c[50],viz[50];

void nod(){

printf(" Numarul de virfuri: ");

scanf(" %d",&n);

void citirelista(){

for(x=0;x<=n;x++){

printf(" %d: ",x);

for(y=0;y<=n+1;y++){

scanf("%d",&y);

if(y==0){break;}

if(x==y){

a[x][y]=2;}

else{a[x][y]=1;}

}
}

void citirema(){

for (x=0;x<=n;x++){

for (y=0;y<=n;y++){

printf(" %d->%d = ",x,y);

scanf("%d",&a[x][y]);

void mat_ad(){

setcolor(12);

printf(" Matricea de adiacenta\n\n");

for (i=0;i<n+1;i++){

setcolor(12);

printf("\t[X%d]",i);

for (i=0;i<n+1;i++)

{ printf("\t");

printf("\n");

for(i=0;i<=n;i++){

setcolor(12);

printf("[X%d]\t",i);

for(j=0;j<=n;j++){

setcolor(14);

printf(" %d\t",a[i][j]);
}

printf("\n");

printf("\n");

void mat_in(){

printf(" Matricea de incidenta\n\n");

for (i=0;i<n+1;i++){

setcolor(12);

printf("\t[X%d]",i);

for (i=0;i<n+1;i++){

printf("\t");

y=0;

memset(v, 0, sizeof(int)*50*50);

for (i=0; i<=n; i++){

for (j=0; j<=n; j++){

if (a[i][j]==1)

//memset(v[y], 0, 50);

v[y][i]=-1;

v[y][j]=1;

y++;

}
else if (a[i][j]==2)

v[y][i]=2;

y++;

printf("\n");

for(i=0;i<y;i++){

setcolor(12);

printf("[U%d]\t",i+1);

for(j=0;j<=n;j++){

setcolor(14);

printf(" %d\t",v[i][j]);

printf("\n");

printf("\n");

void lista_in(){

setcolor(12);

printf(" Lista de incidenta:\n\n");

for (i=0; i<=n; i++){

for (i=0; i<=n; i++)

{ setcolor(12);

printf(" %d: ", i);


setcolor(14);

for (j=0; j<=n+1; j++)

if (a[i][j]==1)

{ setcolor(14);

printf(" %d,", j);

if (a[i][j]==2)

{ setcolor(14);

printf(" %d,", j);

printf(" -1\n\n");

return;

void addvirf(){

k=1;

puts(" Varful a fost adaugat cu succes!\n");

n++;

for (i=1;i<n-1;i++){

for (j=1;j<n-1;j++){

virf[i][j]=a[i][j];

for (i=1;i<n-1;i++){
for (j=1;j<n-1;j++){

a[i][j]=virf[i][j];

void addarc(){

printf(" Introduceti virful initial: ");

scanf("%d",&x);

printf(" Introduceti virful final : ");

scanf("%d",&y);

if(x<=n&&y<=n){

a[x][y]=1;

if(x==y){

a[x][y]=2;

v[y][i]=2;

y++;

void delarc(){

a[x][y] = 0;

return;

for (i=0;i<m;i++) {

for (i=0;i<m;i++){

a[x][y]=a[x+1][y+1];

v[y][i]=v[y+1][i+1];
v[y][j]=v[y+1][j+1];

x=x-1;

y=y-1;

i=i-1;

j=j-1;

void delvirf(){

for (i=0;i<n;i++) {

for (j=0;j<n;j++){

a[j][p]=0;

a[i][p]=0;

a[p][j]=0;

void latime(){

int i,p,v,ii=1,jj=1;

c[1]=pl;

viz[pl]=1;

p=u=1;

while(p<=u){

v=c[p];

p++;

jj=1;

for(i=1;i<=n;i++){
if(a[v][i]==1 && viz[i]==0)

{u++;

c[u]=i;

viz[i]=1;}

void afisare_latime(){

setcolor(12);

printf(" Graful parcurs in latime: ");

for(i=1;i<=u;i++){

setcolor(14);

printf("%d ",c[i]);

printf("\n");

void adincime2(int pl){

if (viz[pl]){

return;

printf("%d ",pl);

viz[pl]=1;

int j;

for(j=1;j<=n;j++){

if((a[pl][j]==1)){

adincime2(j);
}

void adincime(int p){

memset(viz, 0, sizeof(viz));

adincime2(p);

int main(){

optiune=0;

int c=0;

setcolor(15);

printf("\

ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n\

º º\n\

º Ministerul Educatiei al Republicii Moldova º\n\

º º\n\

º Universitatea Tehnica a Moldovei º\n\

º º\n\

º Catedra ATI º\n\

º º\n\

º º\n\

º º\n\

º º\n\

º Lucrare de la borator Nr.3 º\n\

º º\n\
º la Matematica discreta º\n\

º º\n\

º º\n\

º TEMA: º\n\

º º\n\

º Pastrarea grafurilor im memoria calculatorului. º\n\

º Algoritmii de cautare in adincime si latime a unui graf. º\n\

º º\n\

º º\n\

º º\n\

º º\n\

º º\n\

º A efectuat : st.gr. CR-182 º\n\

º Vrednic Cristi º\n\

º º\n\

º A verificat: lector superior º\n\

º Bagrin Veronica º\n\

º º\n\

º º\n\

º º\n\

º º\n\

º Chisinau 2019 º\n\

º º\n\

ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n",185);

setcolor(3);

printf(" Doriti sa afisati MENU programului?\n Daca 'Da' tastati '1', daca 'Nu' tastati orice tasta: ");

scanf("%d",&c);
if(c==1){

do{

system("CLS");

setcolor(9);

printf("\

MENU PROGRAMULUI º\n\

º\n\

INTRODUCEREA GRAFULUI º\n\

º\n\

1. Numarul de virfuri. º\n\

2. Prin lista de adiacenta. º\n\

3. Prin matricea de adiacenta. º\n\

º\n\

AFISAREA GRAFULUI º\n\

º\n\

4. Matricea de adiacenta. º\n\

5. Matricea de incidenta. º\n\

6. Lista de incidenta. º\n\

7. Toate. º\n\

º\n\

MODIFICAREA GRAFULUI º\n\

º\n\

8. Adaugarea unui virf. º\n\

9. Adaugarea unui arc. º\n\

10. Stergerea unui arc. º\n\

11. Sergerea unui virf. º\n\

º\n\
PARCURGEREA GRAFULUI º\n\

º\n\

12. Parcurgerea in latime. º\n\

13. Parcurgerea in adincime. º\n\

º\n\

IESIRE DIN PROGRAM º\n\

º\n\

0. Iesire. º\n\

\n",185);

setcolor(3);

printf("\n Alegeti optiunea: ");

scanf("%d",&optiune);

switch (optiune){

case 1: {nod();

setcolor(15);

system("PAUSE");

break;

case 2: {citirelista();

setcolor(15);

system("PAUSE");

break;

case 3: {citirema();

setcolor(15);

system("PAUSE");

break;
}

case 4: {mat_ad();

setcolor(15);

system("PAUSE");

break;

case 5: {mat_in();

setcolor(15);

system("PAUSE");

break;

case 6: {lista_in();

setcolor(15);

system("PAUSE");

break;

case 7: {

mat_ad();

mat_in();

lista_in();

setcolor(15);

system("PAUSE");

break;

case 8: {addvirf();

setcolor(15);

system("PAUSE");
break;

case 9: {addarc();

setcolor(15);

system("PAUSE");

break;

case 10: {

printf(" Introduceti arcul de sters\n");

printf(" Originea: ");

scanf("%d",&x);

printf(" Extremitatea: ");

scanf("%d",&y);

delarc();

puts(" Arcul a fost sters!");

setcolor(15);

system("PAUSE");

break;

case 11: {

printf(" Introduceti virful de sters\n");

printf(" Virful: ");

int x=n;

scanf("%d",&p);

delvirf();

n=x;

puts(" Virful a fost sters!");


setcolor(15);

system("PAUSE");

break;

case 12: {

for(i=1;i<=n;i++)viz[i]=0;

printf(" Dati nodul de plecare: ");

scanf("%d",&pl);

latime();

afisare_latime();

setcolor(15);

system("PAUSE");

break;

case 13: {

for(i=1;i<=n;i++)viz[i]=0;

printf(" Dati nodul de plecare: ");

scanf("%d",&pl);

setcolor(12);

printf(" Graful parcurs in adincime: ");

setcolor(14);

adincime(pl);

printf("\n");

setcolor(15);

system("PAUSE");

break;

}
case 0:{

printf(" Daca doriti sa iesiti tastati ENTER\n");

return 0;

default:{

printf(" Optiunea nu exista!\n");

setcolor(15);

system("PAUSE");

break;

while(optiune!=0);

getch();

return 0;

else{return 0;}

Potrebbero piacerti anche