Dodaj wpis w tym temacie
Spis tematów | Strona: 1 2 3 ... 18 19 Wyślij wiadomość do admina |
Przewiń wpisy ↓ | C++ od niechcenia |
2018-05-02 (23:20) sindbad Data rejestracji: 2008-10-13 00:00:00 Ilość postów: 20519 | wpis nr 1 165 825 [ CZCIONKA MONOSPACE ] Widzę, że nie zamknąłem pliku - plik.close(); plik<< endl;//cout << endl; } plik.close(); } cout<<"Koniec"; getch(); |
2018-05-03 (14:45) kleszek Data rejestracji: 2006-05-27 00:00:00 Ilość postów: 4903 | wpis nr 1 165 933 [ CZCIONKA MONOSPACE ] Kod poprawiony, choć bez tego "Koniec" plik też był generowany. Chociaż kompletnie się nie znam na C++ to domyślam się, że procedura tworzenia zestawów zaczyna się od instrukcji int main (). Są tam też instrukcje, które znam z VBA ( if, while, for ), więc pewne rzeczy można się domyślać co wykonują. Generator na pewno mi się przyda, choćby po to aby porównać sobie wyniki wygenerowane Mersenne Twister z ISAAC-em. Dziękuję sindbad ! |
2018-05-03 (18:04) sindbad Data rejestracji: 2008-10-13 00:00:00 Ilość postów: 20519 | wpis nr 1 165 954 [ CZCIONKA MONOSPACE ] Hej! int main() { int li[81]; // tablica liczb int a,b,c,i,j,n,x; UprzypadkowijMT(); cout << "Generator Mersenne Twister (MT)" << endl << endl; cout << "Od liczby: "; cin >> a; cout << "Do liczby: "; cin >> b; cout << "Liczb: "; cin >> c; cout << "Losowania: "; cin >> n; cout << endl << endl; fstream plik( "plik.txt", ios::out ); if( plik.good() ) { // plik otwarty for(i = 1; i<= n; i++) // pętla losowań (zakładów) { // początek zakładów for(j=1; j<=80; j++) li[j] = 0; // zerowanie tablicy dla zakładu for(j=1; j<=c; j++) // pętla zakładu { // początek zakładu do { // pętla liczby x = (a + (MersenneTwister() % (b - a + 1))); // losowanie liczby } while (li[x] > 0); // jeśli powtórka to losuj ponownie li[x]=1;// nowa liczba wstawiona do tablicy jako jej indeks z wartością 1 } // koniec zakładu for(j=1; j<=80; j++) // pętla tablicy liczb if(li[j]==1) // jeśli w tablicy pod indeksem j jest 1 to liczba = j { plik << j << " "; // drukowany zakład do pliku liczba po liczbie z separatorem " " (spacja) } plik<< endl;// przejście do nowej linii w pliku } // koniec zakładów plik.close();// zamknięcie pliku } // plik zamknięty cout<<"Koniec"; getch(); // czeka na dowolny klawisz (zatrzymanie) return 0; } --- wpis edytowano 2018-05-03 18:08 --- |
2018-05-03 (18:11) sindbad Data rejestracji: 2008-10-13 00:00:00 Ilość postów: 20519 | wpis nr 1 165 955 [ CZCIONKA MONOSPACE ] Muszę się porozglądać za czymś lepszym, ale co można znaleźć na starego xp. Visual Studio? |
2018-05-03 (20:07) kleszek Data rejestracji: 2006-05-27 00:00:00 Ilość postów: 4903 | wpis nr 1 165 975 [ CZCIONKA MONOSPACE ] sindbad, Twoje komentarze pozwalają zrozumieć co poszczególne linie kodu robią w programie. Domyślam się, że linia : x = (a + (MersenneTwister() % (b - a + 1))); // losowanie liczby odpowiada za, tak jak to jest napisane w komentarzu, generowanie kolejnych liczb w zakładzie. Przypuszczam, że gdybym chciał mieć liczby nie w kolejności uporządkowanej, tak jak robi to program, to musiałbym ( chyba ) zmienic coś w tej linii. Oczywiście wyniki niesortowane nie są mi do niczego potrzebne. Pytam tak od niechcenia w celach poznawczo-edukacyjnych. Pozdrawiam! |
2018-05-03 (21:37) sindbad Data rejestracji: 2008-10-13 00:00:00 Ilość postów: 20519 | wpis nr 1 166 005 [ CZCIONKA MONOSPACE ] x = (a + (MersenneTwister() % (b - a + 1))); Ta linia odpowiada wyłącznie za wylosowanie jednej liczy, której wartość jest w zmiennej x. Za formatowanie odpowiada ten człon: for(j=1; j<=80; j++) // pętla tablicy liczb if(li[j]==1) // jeśli w tablicy pod indeksem j jest 1 to liczba = j { plik << j << " "; // drukowany zakład do pliku liczba po liczbie z separatorem " " (spacja) } Dla liczb niesortowanych: plik << x << " "; --- wpis edytowano 2018-05-03 21:40 --- |
2018-05-03 (22:08) kleszek Data rejestracji: 2006-05-27 00:00:00 Ilość postów: 4903 | wpis nr 1 166 018 [ CZCIONKA MONOSPACE ] >>> plik << x << " "; <<< Rozumiem, że aby uzyskać zestawy z liczbami niesortowanymi, muszę zamienic linię kodu plik << j << " "; na plik << x << " "; Pewnie ja coś źle robię, bo po takiej zamianie, otrzymuję np. 11 11 11 11 11 11 11 11 17 17 17 17 17 17 17 17 Zostawmy to. Pytanie było z gatunku czysto teoretycznych a podobno ciekawość to pierwszy stopień do piekła Pozdrawiam! |
2018-05-04 (12:33) sindbad Data rejestracji: 2008-10-13 00:00:00 Ilość postów: 20519 | wpis nr 1 166 095 [ CZCIONKA MONOSPACE ] Hej! Zainstalowałem sobie Borland C++ Builder 6 Personal. Borland najlepiej mi pasuje. Som jakieś pomysły Lecę do pracy fizycznej. |
2018-05-04 (22:28) kleszek Data rejestracji: 2006-05-27 00:00:00 Ilość postów: 4903 | wpis nr 1 166 217 [ CZCIONKA MONOSPACE ] Widzę, że tematyka programowania nie wzbudziła większego zainteresowania na forum. Szkoda, bo samodzielne skompilowanie kodu daje dużą satysfakcję z utworzenia "własnego programu". Więc żeby więcej nie męczyć sindbada, mam ostatnie pytanie odnośnie generatora. Wiem już (wyczytałem w internecie), że instrukcja cin >> a; jest poleceniem służącym do pobierania z klawiatury liczb. Jak zrobić aby zmienne a, b, c, n były wpisane na stałe w programie ? Pozwoliło by to tworzyć akurat potrzebne generatory bez konieczności wpisywania z klawiatury parametrów tworzenia zestawów. I czy dało by się zrobić, aby po uruchomieniu takiego pliku .exe, "z automatu" był tworzony plik .txt ? |
2018-05-04 (23:34) sindbad Data rejestracji: 2008-10-13 00:00:00 Ilość postów: 20519 | wpis nr 1 166 223 [ CZCIONKA MONOSPACE ] kleszek, można śmiało pytać i drążyć temat aż się zrozumie, co jest grane. Ja również uczę się programowania, bo jak to powiedział mój dobry znajomy "zatrzymałem się na pętli for" he! Usuwamy zmienne a,b,c,n Zamiast zmiennych definiujemy stałe: const int a = 1; // Od liczby const int b = 80; // Do liczby const int c = 20; // Liczb const int n = 100000; // Losowania Usuwamy linie z cin>> --- wpis edytowano 2018-05-04 23:51 --- |
2018-05-04 (23:53) sindbad Data rejestracji: 2008-10-13 00:00:00 Ilość postów: 20519 | wpis nr 1 166 225 [ CZCIONKA MONOSPACE ] Teraz uruchamiasz exe i masz plik Wersja sortowane: int main() { int li[81]; UprzypadkowijMT(); int i,j,x; const int a = 1; // Od liczby const int b = 80; // Do liczby const int c = 20; // Liczb const int n = 1000; // Losowania fstream plik( "plik.txt", ios::out ); if( plik.good() ) { for(i = 1; i<= n; i++){ for(j=1; j<=80; j++) li[j] = 0; for(j=1; j<=c; j++){ do { x = (a + (MersenneTwister() % (b - a + 1))); } while (li[x] > 0); li[x]=1; } for(j=1; j<=80; j++) if(li[j]==1) plik << j << " "; plik<< endl; } plik.close(); } return 0; } Wersja niesortowane: int main() { int li[81]; UprzypadkowijMT(); int i,j,x; const int a = 1; // Od liczby const int b = 80; // Do liczby const int c = 20; // Liczb const int n = 1000; // Losowania fstream plik( "plik.txt", ios::out ); if( plik.good() ) { for(i = 1; i<= n; i++){ for(j=1; j<=80; j++) li[j] = 0; for(j=1; j<=c; j++){ do { x = (a + (MersenneTwister() % (b - a + 1))); } while (li[x] > 0); li[x]=1; plik << x << " "; } plik<< endl; } plik.close(); } return 0; } --- wpis edytowano 2018-05-05 00:00 --- |
2018-05-05 (00:24) Pęsko Data rejestracji: 2003-08-15 00:00:00 Ilość postów: 1683 | wpis nr 1 166 226 [ CZCIONKA MONOSPACE ] kleszek C++ polecam kilka chwil poświęcić na ten kurs w tym wydaniu: http://miroslawzelent.pl/kurs-c++/ |
2018-05-05 (10:42) kleszek Data rejestracji: 2006-05-27 00:00:00 Ilość postów: 4903 | wpis nr 1 166 279 [ CZCIONKA MONOSPACE ] Sindbad, pięknie dziękuje za kody. Samodzielna kompilacja kodu do pliku .exe daje naprawdę dużo frajdy Pęsko, przystępnie wytłumaczony dla "zielonych" kurs od podstaw. Wiem, że programistą nie zostanę, ale przynajmniej patrząc na kod będę "mniej-więcej" rozumiał co dana linia kodu robi w programie. Jeszcze raz dziękuję ! Pozdrawiam! |
2018-05-06 (20:19) sindbad Data rejestracji: 2008-10-13 00:00:00 Ilość postów: 20519 | wpis nr 1 166 537 [ CZCIONKA MONOSPACE ] Witam. Odczytanie pliku losowań MM ze strony multipasko.pl //--------------------------------------------------------- #include<iostream> #include<wininet.h> // Wymaga instalacji no! using namespace std; int WEB_GET_DATA(char* WEB_URL) { HINTERNET WEB_CONNECT = InternetOpen("Default_User_Agent", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if (!WEB_CONNECT) { cout << "Connection Failed or Syntax error" << endl; return 0; } HINTERNET WEB_ADDRESS = InternetOpenUrl(WEB_CONNECT, WEB_URL, NULL, 0, INTERNET_FLAG_KEEP_CONNECTION, 0); if (!WEB_ADDRESS) { cout << "ERROR..." << endl; InternetCloseHandle(WEB_CONNECT); return 0; } DWORD DATA_SIZE = 4096; char *_DATA_RECIEVED = new char[DATA_SIZE]; DWORD NO_BYTES_READ = 0; do { if (InternetReadFile(WEB_ADDRESS, _DATA_RECIEVED, DATA_SIZE, &NO_BYTES_READ)) { if (NO_BYTES_READ == 0) break; cout << string(_DATA_RECIEVED, NO_BYTES_READ); } else { if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) { cout << "Read error" << endl; break; } delete[] _DATA_RECIEVED; DATA_SIZE += 4096; _DATA_RECIEVED = new char[DATA_SIZE]; } } while (true); InternetCloseHandle(WEB_ADDRESS); InternetCloseHandle(WEB_CONNECT); return 0; } int main(){ WEB_GET_DATA("http://www.multipasko.pl/wyniki-csv.php?f=multimulti-sortowane"); return 0; } //------------------------------------------------------ Powodzenia |
2018-05-07 (09:33) kleszek Data rejestracji: 2006-05-27 00:00:00 Ilość postów: 4903 | wpis nr 1 166 632 [ CZCIONKA MONOSPACE ] sindbad, napisałeś cyt. "#include<wininet.h> // Wymaga instalacji no! Gdzie to coś należy zainstalować ? W CodeBlocks ? w windowsie ? i skąd to pobrać ?.Sorry, za takie "dziecinne" pytania. Nigdy dotąd nie miałem do czynienia z programowaniem, a takie programy skompilowane "własnoręcznie" z Twoich kodów na pewno przydadzą się wszystkm zainteresowanym tematem gier lotto. |
2018-05-07 (20:40) sindbad Data rejestracji: 2008-10-13 00:00:00 Ilość postów: 20519 | wpis nr 1 166 725 [ CZCIONKA MONOSPACE ] Hej! W CodeBlocks podajemy ścieżkę do pliku i po zawodach. Plik jest w katalogu lib: CodeBlocks\MinGW\lib. Wczytaj projekt i tak jak na obrazkach. Otwórz i kilka potwierdzeń OK. |
2018-05-07 (22:27) kleszek Data rejestracji: 2006-05-27 00:00:00 Ilość postów: 4903 | wpis nr 1 166 750 [ CZCIONKA MONOSPACE ] No i z Twoją pomocą sindbad sie udało Wyniki MM zostały pobrane do okienka . To chyba właśnie ten kod miał robić. |
2018-05-08 (11:21) kleszek Data rejestracji: 2006-05-27 00:00:00 Ilość postów: 4903 | wpis nr 1 166 801 [ CZCIONKA MONOSPACE ] sindbad, to znowu ja Domyślam się, że kod pobierający wyniki losowań, pobiera je do pamięci RAM. Plik .exe po uruchomieniu i pobraniu wyników znika, co uniemożliwia np. metodą kopiuj-wklej pobrania wyników z okienka konsoli. Domyślam się, że trzeba gdzieś wstawić do kodu polecene getch();. Próbowałem je wstawiac przed linią kodu return 0; ale wyskakują błędy, więc coś robię źle. I druga kwestia. Chciałbym wrócić do Twojego kodu wyszukującego wszystkie szóstki lotto. Skąd program wie, że ma losować akurat szóstki. Rozumiem, że bool tab[13983817];// Tablica szóstek liczba 13983817 to zbiór wszystkich kombinacji 6z49 +1. Czyli wynika to wprost, niejako "z automatu" z liczby wpisanej do bool tab[] ? Czy jakbym chciał sobie wyliczyć wszystkie piątki z 49, to bool tab powinna wyglądać tak: bool tab[1906884]; ? A gdybym chiał sobie wyliczyć ile trzeba losowań, żeby trafić wszystkie czwórki, gdy jest losowane 6 liczb z 49 ? |
2018-05-08 (16:34) sindbad Data rejestracji: 2008-10-13 00:00:00 Ilość postów: 20519 | wpis nr 1 166 854 [ CZCIONKA MONOSPACE ] Dla funkcji getch() dokańczamy bibliotekę conio Wystarczy wpisać: #include <conio.h> Losowania będziemy zapisywać w pliku tekstowym. Generator losował kody kombinacji 6/49 i może to robić dla dowolnej kombinacji. Np. 2/3 = 3 a 2/7 = 21 to 2/3/7 = 7 kombinacji i na tyle ustawiamy generator sprawdzając rozkład trafienia 2/3/7 --- wpis edytowano 2018-05-08 16:51 --- |
2018-05-08 (17:36) sindbad Data rejestracji: 2008-10-13 00:00:00 Ilość postów: 20519 | wpis nr 1 166 857 [ CZCIONKA MONOSPACE ] Plik z losowaniami do pliku tekstowego. #include<iostream> #include<wininet.h> #include <conio.h> // dodano dla zatrzymania #include <fstream> // dodano dla pliku using namespace std; int WEB_GET_DATA(char* WEB_URL) { HINTERNET WEB_CONNECT = InternetOpen("Default_User_Agent", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if (!WEB_CONNECT) { cout << "Connection Failed or Syntax error" << endl; return 0; } HINTERNET WEB_ADDRESS = InternetOpenUrl(WEB_CONNECT, WEB_URL, NULL, 0, INTERNET_FLAG_KEEP_CONNECTION, 0); if (!WEB_ADDRESS) { cout << "ERROR..." << endl; InternetCloseHandle(WEB_CONNECT); return 0; } DWORD DATA_SIZE = 4096; char *_DATA_RECIEVED = new char[DATA_SIZE]; DWORD NO_BYTES_READ = 0; fstream plik( "Losowania.txt", ios::out ); // dodano dla pliku if( plik.good() ) { // dodano dla pliku do { if (InternetReadFile(WEB_ADDRESS, _DATA_RECIEVED, DATA_SIZE, &NO_BYTES_READ)) { if (NO_BYTES_READ == 0) break; //cout << string(_DATA_RECIEVED, NO_BYTES_READ); // usunięto z konsoli plik << string(_DATA_RECIEVED, NO_BYTES_READ) << endl; // dodano pla pliku } else { if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) { cout << "Read error" << endl; break; } delete[] _DATA_RECIEVED; DATA_SIZE += 4096; _DATA_RECIEVED = new char[DATA_SIZE]; } } while (true); } // dodano dla pliku InternetCloseHandle(WEB_ADDRESS); InternetCloseHandle(WEB_CONNECT); plik.close();// dodano dla pliku return 0; } int main(){ WEB_GET_DATA("http://www.multipasko.pl/wyniki-csv.php?f=multimulti-sortowane"); // getch(); dodano i wyłączono dla automatyki exe return 0; } |
| Dodaj wpis w tym temacie | Spis tematów | Wyniki lotto | Strona: 1 2 3 ... 18 19 Wyślij wiadomość do admina |