Mam za malo miejsca na takie zabawy, nvm,
Co do tego cwelika norberta, hugo ci w oko yaboo piszdo masonska
Wersja do druku
paru bajtów nie masz?
a personalne pojazdy bez powodów na publicznym forum to sobie daruj bo zalatuje gimbazą ;p wołam @zakius ; niech ogarnie
No nie mam, w tym sęk. Bede musiał jakiegos externala napisać.
Co do tematu, Yaboomaster to pi*da masońska, kazdy o tym wie. Spytaj bikstope, xyllo albo czepka.
Yaboo traktowal ludzi jak gowno, wiem bo sam mnie uczyl. Jakos na przestrzeni lat bardziej go nie lubilem.
Tak sobie poprostu zaczalem temat o nim, bo patrze Killavus, gość z epoki gdy trolle wygladaly jak gowno, zaczne malym zarcikiem.
Mode nie bij, plis
To lekka modyfikacja mojego pomysłu. Nie obliczasz pozycji ręcznie, tj. dodając do adresu początkowego tablicy odpowiednią wartość, tylko pozwalasz C zrobić to za Ciebie.
to wartość wskazująca na pozycję (adres), lecz nie zawierająca żadnej informacji o typie. Aby wziąć z tablicy pod wskaźnikiem np. 4-tą liczbę (bo tylko TY wiesz w przypadkuKod:void*
, że trzymasz tam liczby), trzebaby do adresu początkowego dodaćKod:void*
.Kod:(4 - 1) * sizeof(int)
Prosimy więc system operacyjny o danie nam kawałka pamięci za pomocą funkcji malloc. Funkcja ta po uzyskaniu tej pamięci od systemu operacyjnego zwraca adres do początku tej pamięci. Więc tutaj:Kod:tab = 0x...00 (adres w pamięci)
(popatrzmy na kolejne bajty od tego adresu)
0 1 2 3 4 5 6 7
x x x x y y y y
x x x x to bajty pierwszej liczby w tablicy
y y y y to bajty drugiej liczby w tablicy
i tak dalej
W polu piksele masz adres do początku tej pamięci. Wiesz, że to spójny kawałek mającyKod:obraz->piksele = malloc(obraz->wym_x * obraz->wym_y * sizeof(int));
bajtów.Kod:obraz->wym_x * obraz->wym_y * sizeof(int)
Dodaniesprawia, że masz informację o tym, co przechowujesz w tym zwartym kawałku pamięci - są to inty. Stąd też C będzie potrafiło się przesuwać po 'pełnej długości typu' zamiast pojedynczych bajtów jak to w przypadkuKod:int*
.Kod:void*
Definiujemy tutajKod:int (*piksele)[obraz->wym_x];
wskaźników do miejsc w naszej tablicy - dokładnie tyle ile mamy 'wierszy' w tablicy dwuwymiarowej. To co jest interesujące to to przypisanie:Kod:obraz->wym_x
[code]
piksele = (int(*)([obraz->wym_x])) które inicjalizuje wszystkie wskaźniki na raz wartościami przesuniętymi o kolejne wielokrotności obraz->wym_x... zakładam, że tak skonstruowana jest semantyka C w tym wypadku.
Mam nadzieję, że nie zasłoniłem Ci obrazu, tylko raczej rozjaśniłem ;).
@up:
Szybko przestaję nienawidzić ludzi - zazwyczaj zapominam. W dodatku jestem na to zbyt leniwy - dużo energii idzie na denerwowanie się ;).
Pozdrawiam
Killavus
@up
<3<3<3
Wielkie dzięki, teraz w końcu ogarnąłem co on miał na myśli. No i tym sposobem zyskałem świadomość tego co ja w ogóle dokładnie robię, a bez tego w C ani rusz. Świetne wytłumaczenie ;)
Patrzcie na to, przez Norberta bęcki dostaje chociaż tamten dawno w grobie xD
No cóż panowie, wesołych świąt, oby przyszły rok był obfitszy w działające kody.
Nawzajem
// panie, luźna rozmowa nie znaczy, że można sobie na takie rzeczy pozwalać
o jak śmiechłem xD
https://i.imgur.com/KMM8q.jpg
dana jest tablica slownik zawierajaca pewien zbior wyrazow oraz lancuch tekst zawierajacy zdania z tymi wyrazami
napisac funkcje ktora wylicza w ilu zdaniach tekstu wystepuje kazdy z wyrazow z osobna
do napisania w ansi c; w jaki sposób można najłatwiej porównywać wyrazy ze słownika z tymi umieszczonymi w zdaniu? nie mogę wykorzystywać żadnych funkcji z biblioteki <string.h>
napisz sobie najpierw funkcje ktora zlicza ilosc tych wyrazow w lancuchu znakow (pobiera 1 wyraz a lancuch mozesz dac jako zmienna globalna i zwraca int)
potem wsadz to do fora po tej tablicy wyrazow
jak bedziesz mial dalej problem to pisz, gotowego kodu nie dostaniesz.
@Pietro18:
Na początek to:
http://math.uni.lodz.pl/~kubinski/wspw/naiwny.pdf
Ulepszeniem (małym) jest to:
http://pl.wikipedia.org/wiki/Algorytm_Karpa-Rabina
Dużym ulepszeniem (i pięknym algorytmem) jest ten. Warto go zrozumieć, chociaż może się to okazać trudne:
http://pl.wikipedia.org/wiki/Algoryt...Morrisa-Pratta
Najpiękniejszym (i trudnym w implementacji - ale ja raz zaimplementowałem i byłem z siebie bardzo dumny ;P) i najwydajniejszym jest ten:
http://pl.wikipedia.org/wiki/Algorytm_Aho-Corasick
W zależności od tego jak bardzo chcesz się postarać i nauczyć, wybierz od najłatwiejszego do najtrudniejszego. Ten ostatni jest dosyć hardkorowy (wykorzystuje ten sam pomysł co algorytm KMP, z tym że operuje na strukturze danych - drzewa TRIE. Bardzo ciekawa rzecz!), ale potrafi szukać wielu (kilka tysięcy) wzorców w bardzo długim (milion+) tekście bardzo szybko.
Powodzenia!
Pozdrawiam
Killavus
zwrotka:Kod:#include <stdio.h>
void func(char tab[])
{
printf("wielkosc w funkcji %d \n",sizeof(tab));
};
int main(void) {
char tab[] = "dupa";
printf("wielkosc bez funkcji %d \n",sizeof(tab));
func(tab);
return 0;
}
wielkosc bez funkcji 5
wielkosc w funkcji 4
wtf? :>
Nie pamiętam dokładnie jak to jest (C uczylem sie tylko w szkole, na odpierdol), ale w tym momencie chyba przekazałeś nie całą tablicę char, tylko pierwszy element, albo adres pierwszego elementu. @Kusterek ;
Poczytaj o referencjach w tablicach, dosyć powszechny problem.
sizeof char array zwraca ci długość ciągu a sizeof w funkcji zwraca rozmiar zaalokowanego obszaru pamięci, który zawiera jeszcze nulla (? tak myślę)
A ja z tego co pamiętam z wykładu, istnieje konwencja w C, że zawsze alokowane jest jedno dodatkowe miejsce tuż za ostatnim elementem tablicy a przy referencji to miejsce jest już pomijane.
Ale potrzebny jest @szulak ;
#EDIT
Algorytm Kusterka-Koksora
http://wklej.org/id/1578898/