Jastrząb
-
Postów
57 -
Dołączył
-
Ostatnia wizyta
Odpowiedzi opublikowane przez Jastrząb
-
-
Na 90% oba sposoby (w tym konkretny przypadku) po skompilowaniu będą wyglądały w ten sam sposób (mam na myśli wynikowy kod maszynowy) - a to z prostego względu, tablice w sposobie 1 będą zajmowały ciągły obszar pamięci (stos) - tak samo jak w sposobie 2.
Napisałeś że to program w c++, a jedyne z czego skorzystałes to strumienie i deklaracja zmiennych w środku funkcji.
Osobiści wole "garbate" nazwy funkcji i zmiennych (podkreślniki używam w innych przypadkach np. w nazwach stałych),
czyli napisałbym np. void WprowadzMacierz(int**, int, int);
i z tego co obserwuje to jest to bardziej popularna praktyka - ale każdy pisze tak jak lubi (no chyba że pracuje w zespole :) ) - chciałem pokazać tylko inny sposób nazewnictwa
Macierze mają stały rozmiar, przez co ograniczasz użytkownika do macierzy maksymalnie 10 x 10, użyłbym alokacji dynamicznej (new [] i delete [])
(kmac) && (wmac) - miałeś chyba na myśli (kmac > 0) && (wmac > 0) - (kmac) zwróci true dla każdej wartości różnej od 0 (dla ujemnych również)
Parametr int macierz[][10] zamieniłbym na int** macierz
macC jest niepotrzebnie zerowana
Jeżeli nie zależy Ci na zwróconej wartości podczas inkrementacji/dekrementacji "++"/"--", a jedynie dbasz o zmiane wartości zmiennej to zalecałbym stosowanie symbolu przed nazwa zmiennej (++zmienna), będzie szybcie (tutaj nie będzie widać różnicy, ale przy dużych obiektach i wielu operacjach da się to odczuć) - ! pamiętaj że zwrócone wartości się różnią i nie wszędzie da się to zastosować
Działanie na macierzach napisałbym w formie klasy - jest to dużo czytelniejsza i wygodniejsza(pod każdym względem) forma
-
Może jest ambitny - to dobrze.
Pozatym, jeżeli chciałby dostać się do aplikacji to pewnie użyłby debuggera bez chwalenia się tym publicznie.
Ale chyba już wystarczy tego offtopa
-
Jeżeli na tym polega "hakierstwo" to 80% programistów "hakierami" jest.... c (ddk nie wspiera c++) i asm'a x86 większość programistów zna, więc napisanie programu trybu jądra nie powinno stanowić większego problemu, a hook? - jeden call lub dwa skoki z przywróceniem paru instrukcji - "hakierstwo na światową skale"jastrząb: jeszcze mu napisz jak zrobić wstrzyk do kernela albo hook's_hooka - polska szkoła hackerów czy co?
-
Zależy na jakim etapie chcesz to monitorować i czy chcesz/możesz dokonywać modyfikacji plików tej gry.
Tak na szybko co mi przychodzi do głowy to:
Loader - sprawdzenie hasha i upewnienie się że gra odpala się przez loader
Filtrowanie modułów procesu
Filtrowanie wątków procesu
Podpięcie swojego procesu jako debugger - /edit/ jedynie jeżeli chcesz komuś utrudnić "rozpracowywanie gry"
Hook na OpenProcess i/lub WriteProcessMemory
Oczywiście nie ma możliwości 100% ochrony, pozostaje jedynie kwestia pewnego utrudnienia/zniechęcenia lub przeciwnie zachęcenia jeżei ktoś lubi się w to bawić.
Aha zakładam że mówimy o środowisku windows.
-
Jako 3 parametr w make_heap() użyj std::greater<typ_sortowany>()
-
1. opis poszczegolnych wierszy jest zlaczeniem 2 kolumn z bazy - imie + nazwisko do 1 kolumny wiec sprawdzanie odpada bo nic nie znajdzie (chyba ze ktos ma pomysl zeby zrobic zeby bral np pare pierwszych znakow jednak w gruncie rzeczy takie rozwiazanie odpada).
Nie jestem pewien czy dobrze zrozumialem ale masz w bazie 2 kolumny (Imie, Nazwisko) a w programi masz je polaczone (1 kolumna - "Imie i Nazwisko")
Jezeli tak to spokojnie mozesz wysylac zapytania do bazy
SELECT count(*) FROM(SELECT RTRIM(Imie) + ' ' + RTRIM(Nazwisko) AS 'ImieNazwisko' FROM tabela)QWHERE Q.ImieNazwisko = 'Jan Kowalski'
-
try {//tutaj uzyj new}catch (const std::bad_alloc& e) {printf("\nException: bad_alloc");} -
po pobraniu porcji danych sprawdzaj stan strumienia przy uzyciu cin.good() lub cin.fail() (sa tez inne metody, ale te sa tutaj na miejscu), pierwsza z nich zwraca true gdy wszystko jest ok, druga gdy ustawiony jest bit bad lub fail. Po obsluzeniu bledu uzyj cin.clear() w celu zresetowania bitów stanu
//...cin >> zmienna;if (!cin.good()) {printf("\nBlad");cin.clear();}//... -
Polska scena lezy - ok 5 aktywnych klanow
Scena swiatowa sie trzyma dobrze, spokojnie mozna zagrac klanowki 5v5 po 19, pozatym ostatnio wzroslo zainteresowania z powodu turnieju na esl'u
Linki do listy druzyn bioracych w nich udzial zamieszczam ponizej
http://www.esl.eu/eu/wic/wc/5on5/pro_signu...base/members/*/
http://www.esl.eu/eu/wic/wc/5on5/fun_signu...base/members/*/
Jezeli interesuje Cie gra tylko na publicu (nie polecam) to tez nie ma problemu z serwerami, problem za to jest z poziomem gry na nich
Spolecznosc jest dobrze nastawiona - nie ma chamstwa znanego z publicow CoD4 i CoHa (widzialem pare demek z nieciakawymi komentarzami) - wyjatki oczywiscie sie zdarzaja
Btw ilosc rozgrywanych meczy dziennie mozna sledzic na stronie http://wictracker.com/24/ - notowane sa tutaj tylko mecze rankingowe, ok drugie tyle rozgrywane jest jako nierankingowe mecze na serwerach prywatnych lub tzw match mode
btw
w przeciagu miesiaca wychodzi dodatek i bedzie mozliwosc kupna podstawki z dodatkiem w zestawie
btw2
jezeli chcesz pograc duzo klanowek to z polskich klanow polecam klan g3686, wczesniej znany jako mushroomhead - obecnie graja tam gracze z mush i 2a
-
Jedyne polskie forum WiCa ktore jeszcze istnieje to wic.gram.pl, ale chyba nikt tam nie zaglada
Jezeli chodzi o jakas gre, to pisze sie na 4v4 i 5v5 :) - moj nick to Jastrzab lub obecnie czesciej uzywany °Hawk°
-
Steam'a nie mam, w WiCa gram bardzo czesto - nick w grze mam taki sam jak tutaj ;)Ja znów odpaliłem Wica i szukam chętnych do gry. Jak coś jestem na steamie. Klucz już dawno oddalem:-)
-
Mam mała prosbe o 2 klucze trial, chcialbym wciagnac pare osob na multi ale potrzebuje dla nich zachety :)
Jezeli ktos takowe posiada to prosilbym o PM
Dziekuje
Btw Massive zostalo wykupione przez Ubisoft razem z prawami do World in Conflict wiec dodatek powinien wyjsc na poczatku przyszlego roku
-
powinno byc chyba tak:
random(prawy-lewy+1)+lewy;
-
jezeli bedie tak ze:
lewy = 5
prawy = 11
to
(lewy+prawy)/2 <> random(lewy+prawy)
poniewaz
w pierwszym wypadku wynikeim bedzie 8 a w drugim jakas liczba od 0 do 15 wlacznie
-
Witam
Mam takie pytanko, aby powyzszy kod quick sorta zmienic na quick sorta przez element losowy to wystarczy tylko zmienic podzial:= tab_sort[(Lewy + Prawy)div 2]; na Podzial:= tab_sort(random(lewy + prawy))?? bo dziala mi to dla tablicy do 5tys puzniej posortowanie trwa wieki. Musze posortowac tym tablice 250tys, a gdy ja zapuscilem to po 2 godzinach nadal program sortowal.
jezeli dasz random(lewy+prawy) to zosatnie wylosowana liczba z zakresu od 0 do (lewy+prawy-1), wiec jezeli lewy wynosi 5 to moze trafic na liczbe x ktora nie spelnia warunku lewy<x<prawy
btw
jezeli stosujesz funkcje random to w programie musisz takze zastosowac procedure randomize (najlepiej ja dac w onCreate formy)
-
napisz w czym problem, nie mam teraz zbytnio czasu, jedyne co zaowazylem to to ze mozesz zaoszczedzic troche pamieci stosujac przekazanie paremetru do procedury przez adres
Procedure quicksort(var Lewy, Prawy: integer);
-
sciagne sobie Delphi Personal to sprawdze ten algorytm co dalem, lecz niestety przy moim laczu zdaze chyba dopiero na poniedzialek/wtorek. Ponizej zamieszczam kod do genereacji ciag rowniez pisany z glowy
for i:=0 to (ilosc_el div 2) do Tab[i]:=i; Tab[ilosc_el] := (ilosc_el div 2)+1; for j:=ilosc_el-1 downto (ilosc_el div 2)+1 do Tab[j]:=Tab[j+1]+1;
-
a teraz?
-
a w ktorej linijce jest blad?
Blad moze byc w pobraniu zmiennej przez funckej bo juz nie jestm pewny jak przekazywalo sie tablice w delphi
---edit---
nie jestem pewny ale tablica ktora przekazujesz musi byc zmienna globalna, a jak nie to pokaz cale zrodlo
---edit2---
poprawilem kod gdyz mial pare bledow, przekopij go jeszzce raz
-
na szybko napialem funkcje, wiec moze zawierac bledy. Nie mam jej jak przetestowac bo narazie nie dysonuje srodowiskiem. Wszytsko pisane z glowy.
function sortuj(var tabliczka : array of integer):boolean; //tabliczka to tablica do wysortowaniavar temp : array of integer; i, k : integer; pozycja : integer;begin pozycja:= 0; SetLength(temp, 1); for i:= Low(tabliczka) to High(tabliczka) do //sporzadzenie pomocniczej tablicy begin if Length(temp) < tabliczka[i]+1 then begin SetLength(temp, tabliczka[i]+1); tabliczka[i] := 1; end else Inc(temp[tabliczka[i]]); end; for i :=0 to High(temp) do //wysortowanie begin if temp[i] > 0 then for k:= 1 to temp[i] do begin tabliczka[Low(tabliczka) + pozycja] := temp[i]; Inc(pozycja); end; end; if pozycja+1 = length(tabliczka) then //True jezeli sie wszystko wysortowalo Result:=True else Resul:=False;end;
-
nie mam teraz zbytnio czasu na szczegoly ale takie szybkie pytania
co to jest ilosc_el
a z timerme to zorb tak ze ustaw interval na 500
pod przycisk daj uruchomienie procedury sortujacej, oraz uruchomienie timera
w prcedurze sortujacej daj jakas zmienna boolean ktora informuje o tym ze sortowanie sie skonczylo
a w ontimer
if koniec then Timer.Active:= false; //koniec to zmienna informujaca o koncu sortowania
aha w ontimer musisz dac jeszcze zmienna integer ktora zlizca wystapienie tej procedury i na koniec mnozysz ilosc wystapien przez interval, dzielisz przez 1000 i masz czas w sekundach
ps
dlugo nic nie pialem to moga byc bledy a pisalem to z glowy
-
jezeli chodzi o zegar to uzyj timera z odpowiednim intervalem, a sortowalbym przy uzyciu algorytmu opartego na metodzie dziel i zwyciezaj
-
Jezeli ma byc to tez widoczne dla uzytkownika a program ma byc graficzny to zamiast richedita uzywaj memo mysle ze bedzie to szybsze niz stringgrid ale nie spodziewaj sie ze wypelnisz to w pare sekund
-
Jackuzy aby tak to podpiac nalezy miec jeszzce jakis dodatkowy kontroler, czy wustarcza sama matryca? Pozatym jaka glebie koloru mozna osiagnac, i czy kolory sa takie jak powinny byc, czy sa jakies przebarwienia tak jak na Twoich fotkach

śledzenie kursora ASP
w Programowanie
Opublikowano
ASP.NET jest odpowiedzialne za tworzenie strony po stronie serwera więc technologia ta nie będzie tutaj zbytnio pomocna. Aby uzyskać powyższy efekt należy napisać skrypty JS które będą uruchamiane podczas ruchu myszy oraz kliknięcia.