Kashub's Code Barn - "graf eulerowski"

podświetlone jako actionscript (dodał(a) Aww @ 2014-04-11 16:40:53)

Twoja wyszukiwarka
Podświetl ten kod w:
Ostatnio dodane:
Losowe wpisy:
#include<stdio.h>
#define MAX 99
void eulera(int c, int *su, int *tx){
  int jest=1, koniec=0, x=2, k, alfa=0;
  while(koniec != 1){
    if(*(tx+jest*MAX+x) != 0) {
      for(k=1; k<=c; k++){
	if(*(tx+jest*MAX+k) != 0){
	  if(alfa > *(su+k)){
	  x=alfa; }
	else {
	  x=k;
	  alfa=*(su+k);
	}
   }
	else { x=x;
	  k++; }
      }
    }
  else {
      if(jest > c){
	koniec=1;
	printf("KONIEC\n");
      }
      else {
      if(x==c){ 
x=0; jest++;
	koniec=1;
	printf("NIE MA DALSZEGO PRZEJSCIA\n");
}
      else {
x++;
}
    }
    }
    if(*(tx+jest*MAX+x) != 0){   
      printf(" %d - %d : ok \n", jest, x);
      *(tx+jest*MAX+x) = 0;
      *(tx+x*MAX+jest) = 0;
      *(su+jest) = *(su+jest) - 1;
	   jest=x;
	   x=1;
	   alfa=0;
    }
  }
 }
void zerowanie(int *tab, int *sumaa){
  int i,y;
  for(i=0; i<99; i++){
    *(sumaa+i) = 0;
    for(y=0; y<99; y++){
      *(tab+i*10+y)=0;
      }
  }
}
int max(int x, int *y){
  int i, maxi;
  maxi= *(y+1);
  for(i=2; i<=x; i++){
    if(*(y+i) > maxi){     /* Wyszukanie najwiekszego stopnia wierzcholka */
      maxi=*(y+i); }       /* Stopien grafu */
    else
      { maxi=maxi;
      }
  }
  return maxi;
}
main(){
int t[MAX][MAX];
int suma[MAX];
  int i, punkty, y, a, s, po;
  int *tab;
  int *sumaa;
  tab = &t[0][0];
  sumaa = &suma[0];
  zerowanie(tab, sumaa);
  printf("Ile graf posiada wierzchokow ?\n");
  scanf("%d", &punkty);
  for(i=1; i<=punkty; i++){
    printf("0 = EOF || Wierzcholek %d laczy sie z : \n", i);
    for(y=1; y<=90; y++){;      
      scanf("%d", &po);
      if(po==0) { y=92; }
      else {
	t[i][po]=1;
      t[po][i]=1;
      if(i==po){
	printf("Blad? M[i,j] / i = j = 1 !");
	goto exi; }
      }
    }
  }
  printf("\n\nMacierz:\n\n");
  for(a=1; a<=punkty; a++){
    printf("|");
    for(s=1; s<=punkty; s++){
      suma[a]=suma[a]+t[a][s]; 
      printf("%d ", *(tab+a*MAX+s));  /* drukuj macierz*/
      if(s==punkty){ printf("|\n"); }
    }
  }
  printf("\n");
  for(i=1; i<=punkty; i++){
    printf("Stopien wierzcholka %d = %d  \n", i, *(sumaa+i)); 
  }
  printf("\nStopien Grafu = %d\n\n", max(punkty, sumaa));
 
  eulera(punkty, sumaa, tab);
printf("\n\n");
  for(a=1; a<=punkty; a++){
    printf("| ");
    for(s=1; s<=punkty; s++){
suma[90]=suma[90]+t[a][s];
      printf("%d ", *(tab+a*MAX+s));  /* drukuj macierz*/
      if(s==punkty){ printf("|\n"); }
    }
  }
  if(suma[90] == 0) {
    printf("\nGRAF JEST EULEROWSKI\n");
  }
  else {
  printf("\nGRAF NIE JEST EULEROWSKI\n");
  }
 exi:
getchar();
return 0;
}
| Opony letnie | | Sklep z artykułami dla zwierząt | | Skróć link | | Jak przenieść bloga | | Załóż za darmo bloga | | Kody programów | | Skracacz adresów | | Gnieżdżewo | | Opisy GG |