06 April 2014

Algoritmica Grafurilor (Set 1) Programe C Language

/*
1 - 7, 10;
*/

#include "stdio.h"
#include "conio.h"
#include "iostream.h"

  int a[60][60],S=0;
  int i,j,n,m;

void read() // Functia de citire de la tastatura
{
  printf("Nr de linii si coloane: "); scanf("%d",&n);
  for (i=1;i<=n;i++)
    for (j=1;j<=n;j++)
      {
      printf("Legatura intre %d - %d ? ",i,j);
      scanf("%d",&a[i][j]);
      }
}

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

void fread() // 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() // 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 exit(int x) // Exterior
{
  FILE *f=fopen("exit.txt","w");
  printf("\n\n Exit: \n");
  for(j=1;j<=n;j++)
    {
    if(a[x][j]==1 && x!=j)
      {
      printf("\n %d-%d - %d",x,j,a[x][j]);
      fprintf(f,"\n %d-%d - %d",x,j,a[x][j]);
      }
    }
}

void enter(int x) // Interior
{
  FILE *f=fopen("enter.txt","w");
  printf("\n\n Enter: \n");
  for(i=1;i<=n;i++)
    {
    if(a[i][x]==1 && x!=i)
      {
      printf("\n %d-%d - %d",i,x,a[i][x]);
      fprintf(f,"\n %d-%d - %d",i,x,a[i][x]);
      }
    }
}

void grad() // Gradul Minim, Maxim si Mediu
{ int g[100],gr=0,k=1;
  int aux;
  g[k]=0;
  FILE *f=fopen("grad.txt","w");
  for(k=1;k<=n*2;)
  for(i=1;i<=n;i++)
    {
    for(j=1;j<=n;j++)
      {
      g[k]=a[i][j];
      k++;
      }
    }
  for(i=1;i<=n*n;i++)
    gr+=g[i];
printf("\n\nGradul Maxim: %d ",gr);
fprintf(f,"\n\nGradul Maxim: %d ",gr);
  for(i=1;i<=n*n;i++)
    for(j=1;j<=n*n;j++)
      if(g[i]    {
    aux=g[i];
    g[i]=g[j];
    g[j]=aux;
    }
printf("\n\nGradul minim: %d",aux);
fprintf(f,"\n\nGradul minim: %d",aux);
  float med;
  med=(float(gr)/(n*n));
printf("\n\nGradul mediu: %3.2f",med);
fprintf(f,"\n\nGradul mediu: %3.2f",med);

}

void simetric() // Tipul Grafului: Simetric
{ int f,g,k,x=0,s1[100],s2[100],y=0;
  FILE *z=fopen("simetric.txt","w");
// Calculeaza numarul de puncte de deasupra si de sub diagonala
  for(i=1;i    x+=i;
// Deasupra diagonalei principale
  for(k=1;k<=x;)
    for(j=2;j<=n;j++)
      for(i=1;i    {
    s1[k]=a[i][j];
    k++;
    }
// Sub diagonala principala
  for(k=1;k<=x;)
    for(f=2;f<=n;f++)
      for(g=1;g<=f-1;g++)
    {
    s2[k]=a[f][g];
    k++;
    }
// Afisare S1
//  for(k=1;k<=x;k++)
//    printf("%3d",s1[k]);
//  printf("\n");
// Afisare S2
//  for(k=1;k<=x;k++)
//    printf("%3d",s2[k]);
// Comparare
  for(k=1;k<=x;k++)
    if(s1[k]!=s2[k])
      y++;
// Decizia: Simetric
  if(y!=0)
    {
    printf("\n\tNu-i Simetric\n");
    fprintf(z,"\n\tNu-i Simetric\n");
    }
  else
    {
    printf("\n\tSIMETRIC\n");
    fprintf(z,"\n\tSIMETRIC\n");
    }
}

void complet()
{ int x=1;
  FILE *f=fopen("complet.txt","w");
  for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
      if(a[i][j]==0 && i!=j)
    x=0;
  if(x==0)
    {
    printf("\n Nu-i complet \n");
    fprintf(f,"\n Nu-i complet");
    }
  else
    {
    printf("\n Ii Complet \n");
    fprintf(f," Ii Complet \n");
    }
  fclose(f);
}

void tranzitiv()
{ int x=1,k;
  FILE *f=fopen("tranzitiv.txt","w");
  for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
      for(k=1;k<=n;k++)
     if(a[i][j]==1 && a[j][k]==1 && a[i][k]==0)
       x=0;
  if(x==0)
    {
    printf("\n Nu-i tranzitiv \n");
    fprintf(f,"\n Nu-i tranzitiv ");
    }
  else
    {
    printf("\n Ii Tranzitiv \n");
    fprintf(f," Ii Tranzitiv \n");
    }
  fclose(f);
}

void antisimetric() // Tipul Grafului: Simetric
{ int f,g,k,x=1,s1[100],s2[100];
  FILE *z=fopen("antisimetric.txt","w");
  for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
      if(a[i][j]==1 && a[j][i]==1)
    x=0;
// Decizia Finala: Antisimetric
  if(x!=0)
    {
    printf("\n\tNu-i AntiSimetric\n");
    fprintf(z,"\n\tNu-i AntiSimetric\n");
    }
  else
    {
    printf("\n\tANTISIMETRIC\n");
    fprintf(z,"\n\tANTISIMETRIC\n");
    }
}

void regulat() // Gradul Minim, Maxim si Mediu
{ int g[100],k=0,x=0;
  int aux=0;
  g[k]=0;
  FILE *f=fopen("regulat.txt","w");
    for(i=1;i<=n;i++)
      {
      for(j=1;j<=n;j++)
    {
    if(i!=j)
          x+=a[i][j];
    }
    g[k]=x;
    x=0;
    k++;
      }
    k--;
    printf("\nk= %d",k);
  for(i=0;i<=k;i++)
    {
    printf("\n g[%d]= %d",i,g[i]);
    if(g[i]!=k)
      aux++;
    }
  if(aux==0)
    {
    printf("\n\nGraf regulat de grad %d",k);
    fprintf(f,"\n\nGraf regulat de grad %d",k);
    }
  else
    {
    printf("\n\nGraf neregulat");
    fprintf(f,"\n\nGraf Neregulat");
    }
}

void p-graf()
{
//etc...;


}

void main()
{ int x;
  clrscr();
  fread();
  getch();
  clrscr();
//  printf("\nNodul: ");
//  scanf("%d",&x);
  printf("\n");
  print();
  printf("\n");
  fprint();
//  exit(x);
//  enter(x);
//  grad();
//  simetric();
//  complet();
//  tranzitiv();
//  antisimetric();
//  regulat();
  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 ...