Witam,
w aplikacji c# najpierw pobieram z bazy 5 elementów np. marek samochodów. Następnie dla każdego elementu pobieram i przypisuję po 3 kolory. Po takim jednorazowym pobraniu tych danych zapisuję markaId i kolorId do tabeli wykonano po to, by w przyszłości nie produkować tej samej marki w tym samym kolorze.
Innymi słowy:
Mogę wyprodukować jednorazowo 5 samochodów w 3 kolorach. Jeśli nie ma dostępnego koloru (po każdym wyprodukowaniu koloru zmniejszam ilość dostępnych sztuk danej farby) to szuka kolejnego koloru w którym mogę wyprodukować (o ile wcześniej w nim nie wyprodukowałem)
W tabeli to wygląda tak:
+---------+----------+
| markaId | marka |
+---------+----------+
| 1 | example1 |
+---------+----------+
| 2 | example2 |
+---------+----------+
| 3 | example3 |
+---------+----------+
+---------+-----------+---------------+
| kolorId | kolor | pozostałoFarb |
+---------+-----------+---------------+
| 1 | zielony | 1 |
+---------+-----------+---------------+
| 2 | niebieski | 0 |
+---------+-----------+---------------+
| 3 | czarny | 8 |
+---------+-----------+---------------+
+------------+---------+---------+
| wykonanoId | markaId | kolorId |
+------------+---------+---------+
| 1 | 1 | 2 |
+------------+---------+---------+
| 2 | 17 | 1 |
+------------+---------+---------+
| 3 | 4 | 2 |
+------------+---------+---------+
Jak pisałem, każdej marce odpowiadają 3 kolory. Po pobraniu danych chciałbym się teraz poruszać pętlą po wszystkich markach i kolorach, ale w taki sposób, że najpierw przelecę przez wszystkie kolory. Innymi słowy: zamiast produkować fiata na raz w 3 kolorach produkuję w jednym kolorze. W kolejnym przejściu pętli w kolejnym kolorze itd.
Czyli:
mając:
Example1 - zielony, niebieski, czarny
Example2 - niebieski, czarny, fioletowy
Example3 - niebieski, czarny, fioletowy
Example4 - czarny, fioletowy, pomarańczony
Example5 - pomarańczony, szary, biały
Przejadę przez to pętlą tak:
Example1 - zielony
Example2 - niebieski
Example3 - niebieski
Example4 - czarny
Example5 - pomarańczowy
Example1 - niebieski
Example2 - czarny
Example3 - czarny
Example4 - fioletowy
Example5 - szary
Example1 - czarny
Example2 - fioletowy
Example3 - fioletowy
Example4 - pomarańczowy
Example5 - biały
Obecnie w aplikacji rozwiązałem to tak, że mam 2 tablice.
Marki[x,y]
x - idMarki
y- Marka
[0,0] - IdMarki
[0,1] - Marka
[1,0] - IdMarki
[1,1] - Marka
[2,0] - IdMarki
[2,1] - Marka
Kolory
[a,b,c]
a - indeks samochodu w pętli
b - indeks koloru w pętli
c - IdKoloru/kolor
[0,0,0] - zielony
[0,0,1] - 1
[0,1,0] - niebieski
[0,1,1] - 0
[0,2,0] - niebieski
[0,2,1] - 0
Teraz tworzę pętlę w taki sposób:
For x As Integer = 0 To 2 'Pierwszy kolor dla pięciu samochodów
For i as Integer = 0 To 4 'Dla kolejnych samochodów
produkuj(i,x,0)
zanotujZeJuzWyprodukowano(i,x,1)
Next
Next
I ogólnie to działa tak jak powinno. Najpierw zostaje wyprodukowanych 5 samochodów w pierwszym kolorze który im dopasowało. Potem w drugim kolorze a potem w trzecim. Po każdym wyprodukowaniu zmniejszam ilość posiadanych farb i jakoś to działa.
Chciałbym teraz dodać więcej informacji do bazy, a niestety takie działanie na wielowymiarowych tablicach jest dość uciążliwe w kodowaniu. Domyślam się, że istnieją lepsze sposoby na rozgryzienie tego. Wydaje mi się, że problemem może być to w jakiej kolejności mają być produkowane te samochody.
Proszę w takim razie o pomoc/rady.