Il calcolo combinatorio potrebbe essere d'aiuto:
codice:#include <stdio.h> typedef struct tagTriangle { unsigned int a; unsigned int b; unsigned int c; } Triangle; void InitTriangleArray(int *p) { p[0] = 0; p[1] = 2; p[2] = 4; p[3] = 0; p[4] = 1; p[5] = 2; p[6] = 2; p[7] = 4; p[8] = 3; p[9] = 4; p[10] = 5; p[11] = 0; } int Adiacenti(Triangle *p1, Triangle *p2) { int k = 0; if ( (p1->a == p2->a) ) k++; if ( (p1->a == p2->b) ) k++; if ( (p1->a == p2->c) ) k++; if ( (p1->b == p2->a) ) k++; if ( (p1->b == p2->b) ) k++; if ( (p1->b == p2->c) ) k++; if ( (p1->c == p2->a) ) k++; if ( (p1->c == p2->b) ) k++; if ( (p1->c == p2->c) ) k++; return k >= 2 ? 1 : 0; } int main() { int k, y; Triangle T1, T2; unsigned int DimArray; unsigned int triangles[12]; DimArray = (sizeof(triangles) / sizeof(triangles[0])); InitTriangleArray(triangles); k = 0; y = k + 3; while ( 1 ) { if ( k == DimArray - 3 ) break; T1.a = triangles[k]; T1.b = triangles[k+1]; T1.c = triangles[k+2]; while ( 1 ) { if ( y == DimArray ) break; T2.a = triangles[y]; T2.b = triangles[y+1]; T2.c = triangles[y+2]; if ( Adiacenti(&T1, &T2) ) { printf("I triangoli (%d,%d,%d) e (%d,%d,%d) sono adiacenti\n", T1.a, T1.b, T1.c, T2.a, T2.b, T2.c); } else { printf("I triangoli (%d,%d,%d) e (%d,%d,%d) non sono adiacenti\n", T1.a, T1.b, T1.c, T2.a, T2.b, T2.c); } y += 3; } k += 3; y = k + 3; } return 0; }![]()

Rispondi quotando