#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; }