/* (C) David Vajda * 2025-08-08 * Circuit Parallel/Seriell excersize */ #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 32 #define N_VALENCES2 N #define N_VALENCES3 8 /* 32 - 8 = 24 */ #define N_VALENCES4 12 /* 24/2 = 12 */ #define N_VALENCES6 6 /* 12/2 = 6 */ //int borders [] = {8, 16, 20, 32}; //int valenceval = {3, 4, 6, 2}; int main (void) { printf("(C) David Vajda\n"); printf("2025-08-08\n"); printf("Circuit Parallel/Seriell excersize\n"); /* nicht eigener Teil */ time_t t; struct tm *tm_info; time(&t); tm_info = localtime(&t); char date_string[25]; strftime(date_string, sizeof(date_string), "%Y-%m-%d %H:%M:%S", tm_info); printf("%s\n\n", date_string); /* bis hierhin */ srand (time(NULL)); int i; int j; int tmp; int vertices [N][N]; int valences [N]; for (i = 0; i < N; i++) for (j = 0; j < N; j++) vertices [i][j] = 0; for (i = 0; i < N; i++) valences [i] = i; /* for (i = 0; i < N; i++) for (j = i+1; j < N; j++) if (rand () % 2) { tmp = valences [i]; valences [i] = valences [j]; valences [j] = tmp; } This doesn't work */ int a, b; for (i = 0; i < 2048; i++) { tmp = valences [a = (rand () % N)]; valences [a] = valences [b = (rand () % N)]; valences [b] = tmp; } /* for (i = 0; i < N; i++) for (j = i+1; j < N; j++) if (valences[i] < valences [j]) { tmp = valences [i]; valences [i] = valences [j]; valences [j] = tmp; } */ int borders [] = {8, 16, 20, 32}; int valenceval [] = {3, 4, 6, 2}; int valencesfinal [N]; int val [N]; int adj_M [N][N]; int sum; for (i = 0, j = 0; i < N; i++) { valencesfinal [valences[i]] = valenceval [j]; if (i > borders [j]) j++; } for (i = 0; i < N; i++) printf ("%i, ", valencesfinal[i]); return 0; sum = 1; int rcount=1; int count = 3; while (sum != 0) { sum = 0; for (i = 0; i < N; i++) { if (valencesfinal [i] > 0) { valencesfinal [i] = valencesfinal [i]-1; sum = sum + valencesfinal [i]; for (j = i + 1; j < N; j++) { if (valencesfinal [j] != 0) { valencesfinal [j] = valencesfinal [j]-1; sum = sum + valencesfinal [j]; } } adj_M [i][j] = adj_M [j][i] = rcount; rcount++; printf ("%i, %i, %i, \n", sum, valencesfinal [i], i); } } if (count < 0) break; count--; printf("\n"); } printf ("("); for (i = 0; i < N-1; i++) printf ("%i, ", valencesfinal [i]); printf ("%i)\n"); printf ("folgende Knoten verbinden die Widerstaende (o. a. elektrische Bauelemente):\n\n"); for (i = 0; i < N; i++) printf ("X%i, ", i); printf ("Die Knoten sind durch folgende, folgende eleketrische Komponenten z.B. Widerstaende verbunden\n"); for (i = 0; i < N; i++) { for (j = 0; j < N; j++) if (adj_M [i][j] != 0) printf ("R%i von X%i nach X%i, ", i, j, adj_M[i][j]); printf ("\n"); } return 0; }