Forum strony www.multipasko.pl [Regulamin]


Dodaj wpis w tym temacie
Spis tematów
Login:

Hasło:
Strona: 1 2 3 4 5 6 7 8 9
Wyślij wiadomość do admina

Przewiń wpisy ↓

SUDOKU

2024-11-20 (21:05)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 7920

14865
wpis nr 1 540 142
[ CZCIONKA MONOSPACE ]


W poprzednim wydruku zabrakło jednej linii:

gwar=5

Sub adresy()

stoper = Timer
gwar = 5
liczb = 42

For l1 = 1 To 38
For l2 = l1 + 1 To 39
For l3 = l2 + 1 To 40
For l4 = l3 + 1 To 41
For l5 = l4 + 1 To 42
adres = kombinuj(liczb, gwar)
If liczb - l1 > 4 Then adres = adres - kombinuj(liczb - l1, 5)
If liczb - l2 > 3 Then adres = adres - kombinuj(liczb - l2, 4)
If liczb - l3 > 2 Then adres = adres - kombinuj(liczb - l3, 3)
If liczb - l4 > 1 Then adres = adres - kombinuj(liczb - l4, 2)
adres = adres - (liczb - l5)

'Cells(1, 22) = adres
Next
Next
Next
Next
Next

czas = Format(Timer - stoper, "00.0000000") & " sek."

Cells(1, 1) = czas

End Sub
2024-11-20 (21:06)

status Jacek_K1961
Data rejestracji: 2017-03-29
Ilość postów: 6390

15220
wpis nr 1 540 143
[ CZCIONKA MONOSPACE ]

Fair_play
Na bieżni byłem godzinę.
Nie chodzi mi o lepszą procedurę. Dzisiaj jej nie wypróbuję, bo jak uruchomiłem VisualBasica to mi w ogóle błędy robi w arkuszu. Nie mogę nawet ze strony lotto skopiować wyników do arkusza bo mi pokazuje cuda. Jak zrestartuję to wtedy dopiero powraca do normy, a jeszcze muszę zrobić wydruk do pliku obu wersji, żeby się upewnić, że wszystkie kombinacje są sprawdzane adres po adresie. Zszokował mnie czas, bo według czata SI odczyt z tablic polega na odczytaniu i przeskakiwaniu najpierw po wierszach a potem po kolumnach dlatego nie spodziewałem się takiej różnicy. Przerobię jeszcze i ten co podałeś dzisiaj i także sprawdzę, to podam czas. To co przerobiłem pokazywało adres od 1 itd. Dlatego szukam ewentualnego błędu w każdej z wersji. Nie chodzi o sekundę w tę czy w drugą stronę.

P.S. Co mam z tym kodem zrobić? Wkleić do arkusza? Ja makra robiłem z 20 lat temu, to już nic z tego nie pamiętam. Ale wtedy to tylko się zapisywało swoje działania i tyle.

--- wpis edytowano 2024-11-20 21:14 ---

2024-11-20 (21:37)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 7920

14865
wpis nr 1 540 149
[ CZCIONKA MONOSPACE ]


W Arkuszu wybierasz "Deweloper"->"Makra"
Wpisz dowolną nazwę makra np "test" i kliknij "Utwórz"
Następnie wklej poniżej tej procedury test moją procedurę,
Ale jeszcze poniżej mojej procedury musisz wkleić funkcję "kombinuj".
Skasuj nagłóek Option Explicit.
Zamknij okno makr.
Teraz w Arkuszu klikasz jeszcze raz "Devwloper"->"makra" zaznaczasz makro "adresy" i klikasz "Uruchom"
W komórce A1 pojawi się czas operacji wyliczania 850 668 adresów.
--------------------------------------------------------------------------------------------------

zdjęcie

zdjęcie
2024-11-20 (22:01)

status Jacek_K1961
Data rejestracji: 2017-03-29
Ilość postów: 6390

15220
wpis nr 1 540 155
[ CZCIONKA MONOSPACE ]

Ja nie mam w ogóle takich przycisków jak developer, makra visual basic. ...a jest tylko makra w widoku, ale developer nie ma. Jutro spróbuję.


zdjęcie

zdjęcie
2024-11-20 (22:05)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 7920

14865
wpis nr 1 540 156
[ CZCIONKA MONOSPACE ]


Karta Deweloper nie jest domyślnie wyświetlana, ale można ją dodać do wstążki.
Na karcie Plik przejdź do pozycji Opcje > Dostosowywanie Wstążki.
W obszarze Dostosowywanie Wstążki oraz Karty główne zaznacz pole wyboru Deweloper.
2024-11-20 (22:08)

status Jacek_K1961
Data rejestracji: 2017-03-29
Ilość postów: 6390

15220
wpis nr 1 540 159
[ CZCIONKA MONOSPACE ]

Już mam. Dzięki. Jutro się pobawię.

zdjęcie

--- wpis edytowano 2024-11-20 22:09 ---

2024-11-20 (22:46)

status Jacek_K1961
Data rejestracji: 2017-03-29
Ilość postów: 6390

15220
wpis nr 1 540 171
[ CZCIONKA MONOSPACE ]

Fair_play
Ten kod działa dobrze, bo podał wszystkie kombinacje w takim samym porządku jak według mojej iteracji, czyli zaczął od 1,2,3,4,5 to indeks=1 i skończył na 38,39,40,41,42 z indeksem 850668, czyli wszystko ok. Mnie nie była potrzebna iteracja, którą dodałeś, bo ja chciałem porównać obie wersje z taką samą.
... a tę linię cyt. "adres_start = kombinuj(liczb, gwar)" wstawiłem na początku, by jej nie powtarzać przy każdej kombinacji 1,2,3,4,5 potem 1,2,3,4,6 itd.

gwar = 5 : liczb = 42
adres = adres_start
If liczb - A1 > 4 Then adres = adres - kombinuj(liczb - A1, 5)
If liczb - B2 > 3 Then adres = adres - kombinuj(liczb - B2, 4)
If liczb - C3 > 2 Then adres = adres - kombinuj(liczb - C3, 3)
If liczb - D4 > 1 Then adres = adres - kombinuj(liczb - D4, 2)
adres = adres - (liczb - E5)

Function kombinuj(n, k)
licznik = 1
mianownik = 1
For I = 1 To k
licznik = licznik * (n + 1 - I)
mianownik = mianownik * I
Next
kombinuj = licznik / mianownik

End Function
2024-11-20 (22:52)

status Jacek_K1961
Data rejestracji: 2017-03-29
Ilość postów: 6390

15220
wpis nr 1 540 173
[ CZCIONKA MONOSPACE ]

Fair_play
Zmienna "adres_start" to wartość 850668 i nie jest zmieniana.
Było dobrze, bo mnie chodziło o sam kod do indeksu:

zdjęcie

--- wpis edytowano 2024-11-20 22:56 ---

2024-11-20 (23:07)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 7920

14865
wpis nr 1 540 175
[ CZCIONKA MONOSPACE ]

Na prawdę nie wiem co chcesz porównywać, przecież zwiększasz tylko E5, a co z A1,B2,C3,D4?
Bo liczysz tylko 38 adresów.
I co Ci zajęło 3,7 sekundy?

--- wpis edytowano 2024-11-20 23:10 ---

2024-11-20 (23:13)

status Jacek_K1961
Data rejestracji: 2017-03-29
Ilość postów: 6390

15220
wpis nr 1 540 176
[ CZCIONKA MONOSPACE ]

W VisualBasic dla czytelności kodu mogę ukryć cały ciąg np. pętle For/Next czy Do/Loop (tylko widać nagłówek) i to schowałem dlatego nie widać tych A1, B2, C3, D4. Obliczenie wszystkich indeksów (czyli 850668). Czy moją metodą jest szybciej, czy tą podaną przez Ciebie.

--- wpis edytowano 2024-11-20 23:17 ---

2024-11-20 (23:16)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 7920

14865
wpis nr 1 540 177
[ CZCIONKA MONOSPACE ]


Z ich prezentacją w arkuszu czy bez?
2024-11-20 (23:20)

status Jacek_K1961
Data rejestracji: 2017-03-29
Ilość postów: 6390

15220
wpis nr 1 540 178
[ CZCIONKA MONOSPACE ]

Bez prezentacji, miał tylko obliczyć nr indeksu i następnego i następnego. Z zapisem do pliku txt to w ogóle mnie czas nie interesował. To zrobiłem tylko po to by się przekonać, czy wszystko było. Jest ok.

--- wpis edytowano 2024-11-20 23:22 ---

2024-11-20 (23:21)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 7920

14865
wpis nr 1 540 179
[ CZCIONKA MONOSPACE ]


kurcze, jak trudno się z Tobą dogadać
2024-11-20 (23:24)

status Jacek_K1961
Data rejestracji: 2017-03-29
Ilość postów: 6390

15220
wpis nr 1 540 180
[ CZCIONKA MONOSPACE ]

Ja już myślę czy się da jeszcze to poprawić i może przez to, że myślami jestem dalej. Dalsze Wasze kombinowanie jak coś znaleźć, czy porównać to już inna bajka. Mnie chodziło o szybkość dotarcia do danych z tablicy 850668 możliwości. Szukanie i porównywanie to pieśń przyszłości. Tego nawet nie zacząłem. Coś tam dla 28 liczb zrobiłem na gwałt i to taką prowizorkę. Najbardziej mnie zdziwiło, bo na logikę czy będzie coś szukane pętlami czy dochodzenie wierszem a później kolumną wydawało się tożsame, a jednak.

--- wpis edytowano 2024-11-20 23:32 ---

2024-11-20 (23:33)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 7920

14865
wpis nr 1 540 181
[ CZCIONKA MONOSPACE ]


Moja procedura oblicza wszystkie adresy w 2,1 sekundy.
Twojej nie znam więc nie mogę jej u siebie porównać.
Ty masz obie więc porównaj.
A tak na marginesie to jeśli nie miałeś Developera i Makro to jak ta Twoja procedura działa?
2024-11-20 (23:38)

status Jacek_K1961
Data rejestracji: 2017-03-29
Ilość postów: 6390

15220
wpis nr 1 540 182
[ CZCIONKA MONOSPACE ]

Ja piszę w programie VisualBasic, NIE tym dla aplikacji czyli NIE tym - VBA. To program do pisania swoich aplikacji, nie związanych z Excelem, czy Wordem. VisualBasic to coś jak pisanie programów w np. języku C++.

--- wpis edytowano 2024-11-20 23:41 ---

2024-11-20 (23:40)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 7920

14865
wpis nr 1 540 183
[ CZCIONKA MONOSPACE ]

No teraz to mnie rozbawileś
VisualBasic w skrócie VBA to Excelowski język pisania makr.

"To program do pisania swoich aplikacji, nie związanych z Excelem..."
A te swoje tabele gdzie masz, nie w Excelu?

--- wpis edytowano 2024-11-20 23:42 ---

2024-11-20 (23:42)

status Jacek_K1961
Data rejestracji: 2017-03-29
Ilość postów: 6390

15220
wpis nr 1 540 184
[ CZCIONKA MONOSPACE ]

No właśnie piszę, że NIE VBA, tylko samo VB. To program do pisania samodzielnych aplikacji, tyle, że w innym języku niż np. C. Tabele tworzy sam komputer w tym języku. W excelu też mam jak je tworzyłem - ich schemat. Jak się dowiedziałem to potem przeniesienie w kod to już drugi etap. Wynik działania programu mojego porównuję zawsze z arkuszem. Widok tabel do niczego mi nie jest potrzebny. To komputer je potrzebuje. Ja tylko mu podaję że np. do 42 liczb.

--- wpis edytowano 2024-11-20 23:50 ---

2024-11-20 (23:45)

status fair_play
Data rejestracji: 2016-05-12
Ilość postów: 7920

14865
wpis nr 1 540 185
[ CZCIONKA MONOSPACE ]


OK, pasuję na dziś.
| Dodaj wpis w tym temacie | Spis tematów | Wyniki lottoStrona: 1 2 3 4 5 6 7 8 9
Wyślij wiadomość do admina