Dodaj wpis w tym temacie
Spis tematów | Strona: 1 2 ... 6 7 8 ... 30 31 Wyślij wiadomość do admina |
Przewiń wpisy ↓ | Turbo Pascal dla zielonych |
2010-04-29 (21:43)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 318 073 [ CZCIONKA MONOSPACE ] Krzg , który ? Wiesz , że jeden dotyczy minilotto , drugi lotto , ale cały czas są one przekształcane . Jak już wstawię to z rozszerzeniem exe - plik wykonywalny (czyli program) z końcówką pas to plik który edytujesz przy pomocy FreePascal. samo wczytanie jest już nie takie łatwe i by wczytać trzeba zaliczyć tablice oraz pobieżnie jak jest zbudowany plik txt. Musimy zrobić taki sposób wczytywania , by był prosty, a zarazem uniwersalny. Jak już wcześniej zaznaczyłam , zapisywaliśmy do pliku txt wyniki odzielone przecinkami. Takie wyniki już niezbyt łatwo wczytuje się do tablic. Zapisanie z przecinkami (czy innymi znakami jak :, ;, - , itp) wizualnie (dla oka) ładnie wygląda , lecz program ma do czynienia z liczbami i znakami interpunkcyjnymi , oraz znakami których nie widać . Na końcu kazdej linii jest znak (niewidoczny w notatniku) koniec linii. Na końcu notatnika - pliku txt - jest znak - koniec pliku (też niewidoczny). Łatwo jest wpisać w notatnik (plik txt) różne typy danych - czyli liczby BYTE, liczby Longint, znaki Char czy słowa String , znaki ASCII i inne. Ale jeżeli mamy plik txt z zawartością takiego mixu, to gorzej jest go odczytać. Również by plik txt łatwo było odczytać w Excelu , Calcu i Turbopascalu , oraz by łatwo zdobyć bazę danych (lub łatwo przerobić) w odpowiednim formacie, należy z wielu różnych możliwości wybrać jedną - uniwersalną dla wszystkich programów a zarazem łatwą do wczytywania w Turbopascalu . Myślę o zapisie w pliku txt : writeln(wynik,licznik,#9,a,#9,b......,#9,f); liczby są odzielone Tabulatorem, co nie stanowi problemu dla łatwego wczytywania w TP , Excelu i Calcu, jest dość dobrze widoczne dla OKA w notatniku oraz stosunkowo prosto można z strony Multipasko - wyniki - wyniki excel zrobić plik txt z wynikami wszystkich gier w formie : liczba , tabulator, liczba....... |
2010-04-29 (22:00)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 318 088 [ CZCIONKA MONOSPACE ] http://www.wrzuc.to/qv3jFuydwS.wt Minilotto , zapis na dysk C do pliku \"Wyniki MiniLotto.txt\" http://www.wrzuc.to/lagu4aboL.wt minilotto.pas - do edycji przy pomocy FreePascal |
2010-04-29 (22:32)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 318 110 [ CZCIONKA MONOSPACE ] Po pobraniu pliku pas. najlepiej \"włożyć go\" do katalogu FPC , bo po uruchomieniu (otworzeniu go) przez FreePascala , zostaną utworzone dodatkowe pliki i zrobi się Wam mały bałagan. Jak już osiągniemy jakąś wersję finalną to może wtedy umieszczę plik pas. raz jeszcze dla MiniLotto, czy Lotto. Chodzi szczególnie w tych w/w programikach o sposób zapsisu w pliku txt. Na razie jest zamiast przecinka między licznikiem i liczbami znak #9 tzn tabulator. |
2010-05-01 (23:17)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 319 061 [ CZCIONKA MONOSPACE ] Wyniki na stronie multipasko otwieramy w excelu (calcu) i możemy skopiować wszystkie kolumny do notatnika , lub też usunąć kolumny z datą i pierwszy wiersz i dopiero skopiować do notatnika . Tak będą wyglądały w notatniku : ![]() Dla nas przydatne są właśnie te drugie . |
2010-05-01 (23:33)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 319 066 [ CZCIONKA MONOSPACE ] Poleceniem read(wyniki,dana) pobieramy z pliku \"wyniki\" a z tą nazwą jest skojarzony plik z wynikami gry (assign) , który w poleceniu assign jest określony gdzie znajduje się u nas na dysku. Ja dałam sobie go na dysk G. Czyli najpierw zapisuje sobie w excelu(calcu) wyniki ze strony pasko, następnie otwieram je i usuwam kolumny z datami i pierwszy wiersz a to co zostaje zaznaczam i kopiuje do notatnika , zamykam notatnik i nazywam go np :Wyniki MiniLotto (czy dla gry Lotto- inna nazwa) Notatnik -plik tekstowy - umieszczam na G i poleceniem assign(wyniki,\'G:\\Wynki MiniLotto\'); Aby przeczytać taki notatnik wykorzystuje pętle Repeat która sprawdza \"czy skończyła się linijka w notatniku\" . Czyli polecenie read(wyniki,dana) wczytuje pierwszą liczbę (daną) następuje sprawdzenie czy są następne liczby w tej linijce , czy jest koniec linijki. Oraz drugą pętle (a pierwsza jest zagnieżdżona w tej drugiej) - która sprawdza czy jest koniec pliku, a zarazem koniec wczytywania danych. ![]() Jest to nie łatwe , ale może uda się zrozumieć, śledząc screny. |
2010-05-01 (23:37)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 319 067 [ CZCIONKA MONOSPACE ] Zawsze po odczytaniu jednej liczby z pliku zwiększa się X o jeden . Zawsze po przeczytaniu całej linii w pliku zwiększa się Y o jeden. zawsze po przeczytaniu jednaj \"danej\" jest ona poleceniem Tab[x,y]:=dana; zapisywana to tablicy Tab w miejsce oznaczane współrzędnymi X i Y. Następuje przeniesienie a raczej skopiowanie notatnika do tablicy. |
2010-05-02 (00:04)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 319 070 [ CZCIONKA MONOSPACE ] Największe liczby jakie będą w tabeli to około 5 000 bo wynikami są liczby od 1 do 42, czy 49 czy 80 w multi , a ilość już odbytych jak i przyszłych losowań to liczba rzędu kilku tysiecy, Dlatego też można będzie zmienne Y (coś jak przedtem licznik) i dana - zmienić z typu longint (duże liczby) na mniejsze . Nie można ich zmienić na Byte bo to tylko od 0-do 255 ale na Word 0d 0 do 65tysięcy. Dlatego też tablica ma wymiar 6x10 000 , bo w miniloto mamy 5-losowanych i szósta to numer losowania oraz miejsce na 10 000 wyników. Można jeszcze najpierw sprawdzić ile znaków jest w pliku (jedna komenda) i mając tą wiedzę program ustawi rozmiar tablicy , ale na tym etapie za bardzo by to skomplikowało nam naukę. Należy zauważyć że są to liczby całkowite (Byte, Word, Longint) i ładnie wyświetlają się na ekranie - podobnie jak w kalkulatorze (tym który macie w systemie XP, Vista itd). Ale jak wynikiem jest bardzo duża , albo mała liczba - to jest zapis taki trochę dziwny np 123 do potegi 123 daje zapis: 1,14....e +257 Podobnie liczby typu Real są wyświetlane w taki sposób , ale czasem będą konieczne. Np gdy będziemy gdzieś coś dzielić lub po prostu używać liczb niecałkowitych. |
2010-05-02 (00:32)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 319 074 [ CZCIONKA MONOSPACE ] Tutaj \"wczytanie\" dla Lotto , tablica 1..7 , 1..10000 (7x10 000) typu Word. zmienna Y i dana - również typu Word. ![]() mając już wczytane wyniki do tablicy , można dalej coś z nimi robić a wynik tej pracy zapisać w notatniku (pliku txt) . Należy zwracać uwagę na to by nazwa pliku tekstowego była odpowiednia dla odpowiedniej gry i wcześniej podała nazwę pliku z którego czytam wyniki losowania jako \"wyniki minilotto) , tutaj jest jako \"Dane Lotto\" , ważne by w programie była nazwa która kojarzy plik tekstowy ten w którym są pobrane i przerobione wyniki ze strony multipasko . Jak My je nazwiemy to indywidualna sprawa. Jeśli ktoś nazwie sobie taki notatnik : \"wyniki6z49\" to również w poleceniu assign będzie nazwa \"wyniki6z49\" + miejsce gdzie ten plik się znajduje . |
2010-05-02 (15:47)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 319 298 [ CZCIONKA MONOSPACE ] Może raz jeszcze najważniejsze rzeczy : 1) tworzymy plik tekstowy zawierający wyniki gry (lotto, czy minilotto), bazując na wynikach dostępnych w excelu na stronie pasko. 2)podajmy ścieżkę dostępu do tego pliku w poleceniu asssign. 3)wczytujemy po jednej liczbie z tego pliku do tablicy w programie. Wczytywanie : Po otwarciu pliku reset, kursor w pliku ustawia się na pozycji nr 1 w linii nr 1 czyli na samym początku pliku tekstowego. Poleceniem read (nie readln) czytamy pierwszą liczbę zawartą w pliku tekstowym a kursor przeskakuje aytomatycznie do drugiej liczby. Gdybyśmy zastosowali readln to kursor po przeczytaniu pierwszej liczby ustawił by się nie na drugiej liczbie a przeszedł o linie niżej i nie moglibyśmy czytać drugiej, trzeciej itd. liczby. Po przeczytaniu pierwszej liczby zostaje ona (jest w zmiennej dana) zapisana do tablicy pod adresem x=1 y=1, Na samym poczatku ustawiamy x i y na zero. patrząc od góry jak rozpocznie się program wczytywania od reset(wyniki): y:=0; ustawione jest y na zero. rozpoczyna się pętla w której y zwiększamy +1, za każdym wykonaniem się petli y zwiększa się +1 więc w końcu y \"dojdzie\" do wartości = ilości linii w pliku tekstowym a zarazem ilości losowań zawartych w pliku tekstowym. X ustawiamy nie przed pierwszą pętlą a przed drugą pętla na 0. w drugiej pętli to x zwiększa się +1 bo przesuwamy się po odczytaniu liczby na następną liczbę. tutaj można zastosować również pętle { for x:=1 to 7 do } ponieważ wiemy ile liczb jest w każdym losowaniu (6 liczb + nr losowania dla Lotto) ale pętla repeat .... until eoln jest lepsza tzn uniwersalna . Czyli po pierwszym repeat , y wynosi 1 , a po drugim repeat x wynosi 1 (y nadal 1) , następuje odczytanie pierwszej liczby w pliku i zapisanie jej do tabeli pod adres [1,1] i sprawdzenie czy jest koniec linii (until eoln) jezeli nie ma końca linii , to powrót do X:=X+1 i wtedy x będzie wynosić 2 a Y nadal 1. Ponownie read odczyta drugą liczbę i zostanie ona zapisana pod adresem [2,1] . znów sprawdzamy czy jest koniec linii (until eoln) itd. W grze multi , x będzie zmieniac się od 1 do 20 (20 losowanych ) lub od 1 do 21 (20 losowanych + numer losowania). można zauważyć że numer losowania jest zbędny bo Y które program ustawia jest automatycznie numerem losowania. Chyba że wczytujemy wyniki od losowania nr np 1000 a nie 1 to pierwsze losowanie w tabeli (dla programu pierwsze) jest faktycznie 1000-siecznym. Opisana pętla zmienia x o jeden i odczytuje kolejne liczby z jednej linii , sprawdzając kiedy nastąpi koniec linii w pliku. Jeśli nastąpi koniec linii to już nie powtórzy się pętla a zakończy i wtedy mamy powrót do pierwszej petli. W pierwszej pętli następuje sprawdzenie czy jest koniec pliku (until eof) i jeśli tak to koniec wczytywania. czytana została tylko jedna linia i Y zawsze było równe 1. Jeśli nie ma końca to powrót do Y:=Y+1 X := 0 i wchodzimy do drugiej pętli po raz drugi. Gdy wchodzimy po raz drugi do drugiej pętli to Y = 2 a X znów zwiększa sie co jeden po przeczytaniu kolejnej liczby z linii nr 2 . |
2010-05-02 (16:06)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 319 307 [ CZCIONKA MONOSPACE ] reset (wyniki); y=0 pętla nr 1 y=1 x=0 pętla nr 2 x=1 czytamy pierwszą liczbę z pliku zapisujemy ja w tabeli pod adresem [1,1] sprawdzamy czy jest koniec linii (nie ma ) powrót do początku pierwszej pętli gdzie x=2 czytamy drugą liczbę z pliku zapisujemy drugą liczbę w tabeli pod adresem[2,1] sprawdzamy czy jest koniec linii (nie ma) powrót do początku drugiej pętli gdzie x=3 itd. aż do x=7 czytamy siódmą liczbę w piku zapisujemy siodmą liczbę w tabeli pod adresem[7,1] sprawdzamy czy jest koniec linii (JEST KONIEC LINII) wychodzimy z drugiej pętli (KOŃCZYMY JĄ) sprawdzamy w pierwszej pętli koniec pliku (nie ma) wracamy do y:y+1 tzn caly czas do tej pory y było = 1 więc teraz będzie =2 x ustawiamy na zero wchodzimy w drugą pętle (po raz drugi) i : czytamy pierwszą liczbę z pliku zapisujemy ja w tabeli pod adresem [1,2] {y teraz =2} sprawdzamy czy jest koniec linii (nie ma ) itd aż do konca linii. Gdy ponownie będzie koniec linii to : zapisujemy siodmą liczbę w tabeli pod adresem[7,2] sprawdzamy czy jest koniec linii (JEST KONIEC LINII) wychodzimy z drugiej pętli (KOŃCZYMY JĄ) sprawdzamy w pierwszej pętli koniec pliku (nie ma) wracamy do y:y+1 tzn do tej pory y było = 2 więc teraz będzie =3 x ustawiamy na zero wchodzimy w drugą pętle (po raz trzeci) i : itd. aż y będzie = ilości losowań zawartych w pliku tekstowym a raczej aż trafimy na znak końca pliku - tzn , że już więcej nic w nim nie ma i wszystkie linie są przeczytane a jest ich tyle ile pokaże Y. |
2010-05-02 (16:20)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 319 316 [ CZCIONKA MONOSPACE ] for a:=1 to 38 do begin for b:=a+1 to 39 do begin for c:=b+1 to 40 do begin for d:=c+1 to 41 do begin for e:=d+1 to 42 do begin coś tam end; end; end; end; end; działa tak samo jak : repeat y;=y+1; x:=0; repeat x:=x+1; read(wyniki,dana); Tab[x,y]:=dana; until eoln (wyniki); until eof (wyniki); Wyżej jest aż pięć pętli zagnieżdżonych . Jedna się rozpoczyna , następnie druga,trzecia , czwarta i dopiero piąta wykona się raz cała. Jak się wykona cała piąta petla (for e...) to ......, a najlepiej widać będzie na przykładzie licznika - konstrukcji licznika : ![]() |
2010-05-02 (16:24)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 319 319 [ CZCIONKA MONOSPACE ] Patrząc na ostanie kółeczka z cyferkami to ona kręci się najszybciej i jeśli wykona jeden pełny obrót to taj jak pętla e wykona się jeden raz. Wówczas następne kołeczko przeskoczy o jedną cyferkę , to tak jak w pętli d nastąpi zmiana jeden cyferki. Wykonanie się wszystkich pętli for to obrót wszystkich kółek w liczniku, przy czym kółko z lewej wykona jeden obrót, następne 10 obrotów , następne 100 itd. U nas w pętlach for mamy nie 10 cyferek jak ma licznik od 0 do 9 , a np od 1 do 38 |
2010-05-02 (17:14)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 319 336 [ CZCIONKA MONOSPACE ] W uzupełnieniu do sprawdzania warunku w pętli repeat - until. Until sprawdza czy wartość jest Prawdą , czyli prawdą jest że np : a=100 - wtedy gdy zmienna a będzie równa 100 eof(wyniki)- prawdą jest gdy funkcja odczyta koniec pliku a<0 - prawdą jest gdy a jest liczbą ujemną Po przerywniku z licznikiem energii , dalsza część przykładowego programu . Mamy wczytane wyniki np Lotto (6 liczb i nr losowania) i coś trzeba prostego dalej z tymi wynikami zrobić. Np zrobimy programik który zlicza ile razy w ciągu zadanej ilości ostatnich losowań , wystąpiła dana kulka. Wprowadzimy zmienną \"ile\" - która mówi ile ostatnich losowań sprawdzamy. dodatkowe zmienne pomocnicze, a, b, x1,y1 ![]() |
2010-05-02 (20:42)![]() Data rejestracji: 2010-04-28 00:00:00 Ilość postów: 4 ![]() | wpis nr 319 416 [ CZCIONKA MONOSPACE ] W jaki sposób można ściągnąć te pliki? |
2010-05-02 (21:02)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 319 434 [ CZCIONKA MONOSPACE ] Znów mało precyzyjne pytanie. ![]() te pliki, które ? Czy chodzi Ci jak ściągnąć to co jest na screnach ? np programik \"wczytywanie\" ? tego jeszcze nie ma w sieci , są tylko screny jak powstaje . jest umieszczony programik \"minilotto\" - kilka postów wcześniej. |
2010-05-02 (21:36)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 319 456 [ CZCIONKA MONOSPACE ] W dalszej części programiku \"wczytywanie\" mamy : \"sprawdzamy ile razy w ciągu X losowań \" Możemy ustawić sobie na 10 losowań wstecz podając odpowiedź na pytanie : \"Podaj ile losowań wstecz brać pod uwagę\" zmienna \"Ile\" będzie mówić o tym ile losowań badamy. jeżeli wcześniej wczytalismy 4840 losowań to Y = 4840 Podamy liczbę 10 i wówczas powinniśmy sprawdzić losowania od \"y-ile\" tzn od 4840-10=4830 do 4840 czyli do \"y\" - ostatniego. Ten warunek jest w funkcji for (zielonej pętli). pętla wykonuje się niestety ale nie 10 razy jakby zapewne większość myślała , a 11 razy - czyli troszkę kłamie o jeden raz ale to na później. Po prostu my wpisujemy 10 i chcemy 10 ostatnich losowań a robi 11 ost.losowań. Dalej (albo wcześniej) jest pętla czerwona for a 1 to 49- po prostu najpierw sprawdzamy liczbę 1 , później liczbę 2 i tak 49 wszystkich kulek. b:=0; - to pomocnicza zmienna która mówi ile razy dana liczba wystąpiła. Jeżeli zaczynamy pierwsza czerwoną pętle to b=0 , natomiast \"A\" to liczba 1 którą będziemy sprawdzać. Sprawdzamy ją funkcjami IF .... i jeżeli \"A\" tzn w tej chwili \"1\" znajduje się w tablicy to zwiększamy \"b\" o jeden (wystąpiła). Y1 zmienia się 11 razy od 4830 do 4840 i w ten sposób sprawdzone jest 11 ostatnich losowań. Zobaczmy co by było gdyby wpisać ; zero w odpowiedzi na pytanie : \"Podaj ile losowań wstecz brać pod uwagę\" Wówczas program nie powinien nic sprawdzać , a jednak sprawdzi jedno ostatnie losowanie. Można to łatwo poprawić i zabezpieczyć się przed wpisaniem liczby zbyt małej (czyli zera) i zbyt dużej (czyli ponad 4839) bo losowań jest tylko 4840 w bazie , inaczej mówiąc losowań jest \"Y\". Ale takie szczegóły może później. Aby nie pisać 6 razy tej samej instrukcji IF ..... można zrobić jeszcze jedną pętle. |
2010-05-02 (21:44)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 319 461 [ CZCIONKA MONOSPACE ] Na samym dole zastąpiłam delay , takim sposobem by zatrzymać program do czasu kiedy sami chcemy go opuścić. Podczas uruchamiania warto okno zmaksymalizować i dopiero wpisać \"t\" a następnie ilość losowań ktore będziemy sprawdzać: ![]() |
2010-05-02 (22:29)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 319 491 [ CZCIONKA MONOSPACE ] X1 i Y1 określają miejsce w tablicy T, która obecnie ma jeden wymiar 1..49 i mieści się tam 49 wyników dla 49 kulek. wyniki te również wyświetlane są na ekranie : ![]() jak i też można je zapisać do pliku tekstowego , wydrukować. Poprawiłam by po wpisaniu 10 faktycznie program sprawdzał 10 losowań. Nie ma tutaj zabezpieczenia przed wpisaniem niewłaściwych liczb ale jest informacja jakie należy wpisać. Zabezpieczenie takie można kiedyś dorobić ale na tym etapie zagmatwało by to troszkę. zamiast 6-ciu instrukcji IF - jest trzecia pętla w której sześć razy będzie wykonana instrukcja IF , za każdym razem dla innego X1 Poprzednio było IF Tab[1,y1] ... IF Tab[7,y1] a teraz IF Tab[x1,y1] i x1 przyjmuje wartość od 2 do 7 . |
2010-05-02 (22:32)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 319 494 [ CZCIONKA MONOSPACE ] Sorry oglądam film i źle napisałam : X1 i Y1 określają miejsce w tablicy T, która obecnie ma jeden wymiar 1..49 X1 i Y1 są przydatne w pętlach . W tablicy T miejsce określa zmienna \'A\" , a wartość do wpisania zmienna \"B\" Przepraszam za pomyłkę. |
2010-05-02 (23:14)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 319 521 [ CZCIONKA MONOSPACE ] A teraz zamienimy petle for y1:=y-ile+1 to y , na pętle repeat przed pętlą y1 przypisujemy y-ile , ale już w pętli zwiększamy y1+1 (o jeden) za każdym wykonaniem się pętli Pierwszy raz zwiększamy +1 mimo że jeszcze pętla się nie wykonała i to daje to samo co poprawka (+1 ) w pętli for - trochę dziwnie to wyglądało ![]() ![]() Jak widać raz pętla for jest lepsza, innym razem Repeat , a jak wyżej napisałam to że y1 zwiększyła się o jeden mimo że pętla się jeszcze nie wykonała jest dla nas skutkiem pożytecznym w tym przypadku. Czasem warto będzie zastosować trzeci rodzaj pętli , ale na razie nie. |
| Dodaj wpis w tym temacie | Spis tematów | Wyniki lotto | Strona: 1 2 ... 6 7 8 ... 30 31 Wyślij wiadomość do admina |