-
red2000
Witam!
Zabralem sie z ciekawosci za programowanie i troche mnie wciagnelo.
Niestety nie jestem w stanie uzyc znalezionych w sieci informacji/przykladow do swoich potrzeb.
Ponizej (przystosowana do wyrwania z kontekstu) czesc wiekszego kodu w Java, na ktorej niestety utknalem:
int n = 6;/ / Zbior liczb, z ktorych generowane beda kombinacje;
int PozycjaOrg = 1;/ /Pozycja jednej kombinacji liczb w tablicy. Z wartoscia 1 okresla jednoczesnie miejsce pierwszej kombinacji i puli/zbioru liczb z ktorych generowane sa nastepne kombinacje.
int Pozycja = 2;/ / Pozycja generowanej kombinacji liczb w tablicy.
long IloscKombinacji = 15;
int k = 4;/ / Liczba elementow w generowanej kombinacji.
int i = 1;
int j = 0;
int p = k;
int [][] Tablica = { {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
{1, 2, 3, 4, 5, 6} };
while (p>=1) {
if (Tablica[Pozycja][k] == n) {
p = p - 1;
j = 0;
} else { p=k; }
j++;
if (p>=1) {
Pozycja++;
for(i=k; i>=p; i--) {
if (i==k) {
for (int Przepisanie = 1; Przepisanie <= p - 1; Przepisanie++) {
Tablica[Pozycja][Przepisanie] = Tablica[Pozycja - 1][Przepisanie];
} }
Tablica[Pozycja] = Tablica[PozycjaOrg][i + j];
} } } } }
Zadaniem powyzszego ma byc wygenerowanie wszystkich k-elementowych kombinacji ze zbioru n-elementowego podanego w poczatkowej czesci wielowymiarowej tablicy i zapisywaniu tych kombinacji w kolejnych wymiarach tablicy.
Program przebiega prawidlowo do 5-tej kombinacji ale od 6-tej zapetla sie na zlych wynikach i generuje na przemian dwie bledne kombinacje.
Bardzo prosze o pomoc w znalezieniu bledow i/lub ewentualne sugestie jak rozwiazac problem.
Pozdrawiam
-
KosciaK
Do samego kodu i Twojego problemu niestety nie jestem w stanie się odnieść bo trochę ciężko go ogarnąć....
Kilka rad na przyszłość:
1. Najlepiej wkleić kod na przykład tutaj: http://rafb.net/paste/ i podać linka - wtedy każdy na spokojnie może przejrzeć sobie ładnie sformatowany i pokolorowany kod
2. Dobrze jest wklejać kod, który się skompiluje - łatwiej wtedy coś z tym zrobić i poprawiać
3. W Javie warto stosować się do ogólnie przyjętych konwencji pisania kodu ( http://java.sun.com/docs/codeconv/)... W skrócie:
a) nazywanie zmiennych za pomocą pojedynczych liter to ZŁY pomysł. Sam za tydzień spojrzysz do swojego kodu i nie będziesz wiedział co i jak
b) nazwy zmiennych, metod zaczynamy z małych liter, jeśli składa się z wielu słów to z dużej litery jest drugie słowo np: nazwaZmiennej
c) w pętli for chyba jednak poręczniej zastosować "i", "j" "k" jako nazwę zmieniającej się w pętli zmiennej. A jeśli nie poręczniej to i tak większość tak stosuje
d) zdecyduj się czy używasz formy "zmienna = zmienna + 1;" czy "zmienna++;"
A co do samego problemu. Weź sobie kartkę papieru, ołówek, gumkę i rozrysuj sobie algorytm, według którego działasz w formie schematu blokowego.
-
red2000
Bardzo dziekuje za cenne uwagi, dzieki nim szybciej sie ucze.
Na poczatek ad. 1: http://rafb.net/p/1skQu292.html
Nad reszta bede pracowal sukcesywnie :o) -
red2000
Ciągle, jednak liczę na pomoc w postaci kodu do opisanego wcześniej generowania kombinacji. Może Ktoś już ma gotowca(?) Cokolwiek, pls... -
-
george
>red2000 napisał
>Bardzo dziekuje za cenne uwagi, dzieki nim szybciej sie
>ucze.
>Na poczatek ad. 1: http://rafb.net/p/1skQu292.html
>Nad reszta bede pracowal sukcesywnie :o)
404 Not Found -
red2000
No właśnie, niestety wygląda na to, że po określonym czasie (tu chyba 24h) kod automatycznie znika z serwisu :o( -
Maciek Makowski
Mozna na przyklad tak: http://rafb.net/p/uTUS2K95.html -
Maciek Makowski
Ale lepiej w Pythonie: [(e1, e2, e3) for e1 in range(5) for e2 in range(5) for e3 in range(5) if e1 < e2 and e2 < e3] -
red2000
-
Maciek Makowski
-
red2000
-
red2000
- Przeglądaj grona w kategorii Internet i Komputery
- Przeglądaj grona w okolicy Warszawa
- Załóż własne grono tematyczne
- Zostań moderatorem
Podobne Tematy
|
|
Wszystko co związane z programowaniem w Java (J2EE, JSP, JDBC, itd) test
Miejsca grona (1)
-
Kino Luna ul. Marszałkowska, Warszawa
www.kinoluna.pl kino.luna@maxfilm.com.pl 22 621 78 28
- Dodaj miejsce

