06 April 2014

Algoritmica Grafurilor (Set 2) Programe C language

/* Setul 2
   1 -
*/

#include "STDLIB.h"
#include "stdio.h"
#include "conio.h"
#include "iostream.h"
#include "VALUES.H"

  int S=0;
  int i,j,n,m;

void fread(int a[50][50]) // Functia de citire din fisier
{
  FILE *f=fopen("in.txt","r");
  fscanf(f,"%d",&n);
  for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
      fscanf(f,"%d",&a[i][j]);
  fclose(f);
  printf("   S-a citit Fisierul");
  printf("\n\nPress any key to continue...");
}

void fprint(int a[50][50]) // Functia de scriere in fisier
{
  FILE *f=fopen("out.txt","w");
  for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
      fprintf(f,"%3d",a[i][j]);
      fprintf(f,"\n");
}

void print(int a[50][50]) // Functia de afisare pe ecran
{ printf("\n\n\tAFISARE\n\n");
  for(i=1;i<=n;i++)
    {
    printf("\n");
    for(j=1;j<=n;j++)
      printf("%3d",a[i][j]);
    }
}

void vecin(int a[50][50])
{ int v;
  FILE *f=fopen("vecin.txt","w");
  printf("\n\n\tVECIN\n\n");
  printf("\n Varful: ");
  scanf("%d",&v);
  for(i=1;i<=n;i++)
    if(a[v][i]==1 && v!=i)
      {
      printf("\n Vecin: %d",i);
      fprintf(f,"\n Vecin: %d",i);
      }
}
/*
void subgraf(int a[50][50]) //subgraf
{ int b[50][50];
  printf("\n\n\tSUBGRAF\n\n");
  FILE *g=fopen("in2.txt","r");
  fscanf(g,"%d",&m);
  for(i=1;i<=m;i++)
    for(j=1;j<=m;j++)
      fscanf(g,"%d",&b[i][j]);
  fclose(g);
  printf("\n\n   S-a citit Fisierul 2 \n\n");
  printf("\n\nAfisam Matricea 2\n\n");
  print(b);
// INCOMPLET
}
*/

int min(int X,int Y)
{ int MIN;
  if(X    MIN=X;
  else
    MIN=Y;
return MIN;
}



void RW(int a[50][50])
{ int k,i,j;
  for(k=1;k<=n;k++)
    for(i=1;i<=n;i++)
      for(j=1;j<=n;j++)
    if(a[i][j]==0 && i!=k && j!=k)
      a[i][j]=min(a[i][k],a[k][j]);

  print(a);

}

int conex(int a[50][50])
{ int i,j,c=1;
  RW(a);
  for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
      if(a[i][j]==0)
    c=0;
  if(c==1)
    printf("\n\nGraf Conex\n");
  else
    printf("\n\nGraful Nu-i Conex\n");
return c;
}

void mcrit(int a[50][50])
{ int x,y,c;
  printf("\nMuchia dintre: x si y ");
  scanf("%d %d",&x,&y);
  a[x][y]=a[y][x]=0;
  c=conex(a);
  if (c==0)
    printf("\n\nMuchia e Critica\n");
  else
    printf("\n\nMuchia nu-i critica\n");
}

void pcrit(int a[50][50])
{ int k,i,j,v,c;
  printf("\nVarful: ");
  scanf("%d",&v);
  for(i=1;i<=n;i++)
    a[v][i]=a[i][v]=0;
  printf("\n Matricea rezultata:\n");
  print(a);
  for(k=1;k<=n;k++)
    for(i=1;i<=n;i++)
      for(j=1;j<=n;j++)
    if(a[i][j]==0 && i!=k && j!=k && i!=v && j!=v)
      a[i][j]=min(a[i][k],a[k][j]);

  print(a);
  conex(a);


/*
  c=conex(a);
  if(c==1)
    printf("\n\nVarful %d NECritic\n",v);
  else
    printf("\n\nVarful %d Critic\n",v);
*/
}


void main()
{ clrscr();
  int a[50][50];
  fread(a);
  print(a);
//  vecin(a);
//  subgraf(a);
//  RW(a);
//  conex(a);
//  mcrit(a);
  pcrit(a);
getch();
}

CCSuite - CC Monitoring, CC Reports and AliveCheck

CC Monitoring, CC Reports and AliveCheck Create together a powerful application, user friendly, that helps managing, monitoring ...