/* (C) David Vajda * 2025-08-08 * Circuit Parallel/Seriell excersize */ #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 16 int main (void) { char *resistorval [] = {"10 Ohm", "12 Ohm", "15 Ohm", "18 Ohm", "22 Ohm", "27 Ohm", "33 Ohm", "39 Ohm", "47 Ohm", "56 Ohm", "68 Ohm", "82 Ohm", "100 Ohm", "120 Ohm", "150 Ohm", "180 Ohm", "220 Ohm", "270 Ohm", "330 Ohm", "390 Ohm", "470 Ohm", "560 Ohm", "680 Ohm", "820 Ohm"}; 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; int a, b; for (i = 0; i < 2048; i++) { tmp = valences [a = (rand () % N)]; valences [a] = valences [b = (rand () % N)]; valences [b] = tmp; } int borders [] = {4, 8, 10, 16}; int valenceval [] = {3, 4, 6, 2}; int valencesfinal [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++) for (j = 0; j < N; j++) if (adj_M [i][j] != 0) adj_M[i][j] = 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]--; for (j = i + 1; (j < N) && (valencesfinal [j] == 0); j++); if ((valencesfinal [j] != 0) && (j != N)){ valencesfinal [j] = valencesfinal [j]-1; sum = sum + valencesfinal [j]; adj_M [i][j] = adj_M [j][i] = rcount++; } sum = sum + valencesfinal[i]; } } printf ("folgende Knoten verbinden die Widerstaende (o. a. elektrische Bauelemente):\n\n"); for (i = 0; i < N -1; i++) printf ("X%i, ", i); printf ("X%i\n\n", N-1); printf ("Die Knoten sind durch folgende, folgende eleketrische Komponenten z.B. Widerstaende verbunden\n"); for (i = 0; i < N; i++) { for (j = i+1; j < N; j++) if (adj_M [i][j] != 0) printf ("R%i von X%i nach X%i\n", adj_M[i][j], i, j); } printf ("\ndie widerstaende haben jeweils folgende werte\n\n"); for (i = 0; i < N -1; i++) printf ("R%i: %s, ", i, resistorval [rand () % 26]); printf ("R%i: %s, \n\n", N-1, resistorval [rand () % 26]); return 0; }