Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[c a raczej c++] problem z technika programowania <fir>

0 views
Skip to first unread message

Marcin Ciecwierz

unread,
Aug 12, 2002, 3:20:26 AM8/12/02
to
In article <aj0td9$ek1$1...@news2.tpi.pl>, sie...@wp.pl says...
> Skoro już się rozpisałem....

napisz o tym ksiazke :)

--
Marcin Ciećwierz
gar...@devil.inside.pin.pl
http://www.devil.inside.pin.pl/~gardner

tomasz_k...@poczta.onet.pl

unread,
Aug 12, 2002, 4:11:30 AM8/12/02
to
>
> --
> Filip Sielimowicz
> http://panda.bg.univ.gda.pl/~sielim
>
>

:)

Och te skomplikowanie... Obecnie rogueliki sa proste, mimo, ze i tak duzo
bardziej skomplikowane niz takie np pożal sie Boże Diablo. Ale takie
skompilkowanie to jest to o co mi chodzi - fajnie przy tym uczyć sie
myślenia o obiektach na rougelikowych przykladach bo obiekty sa tak
obrazowe a akcje na nich jeszcze bardziej obrazowe.

Twoją wypowiedz rozumiem tak, że mówisz można robić to w c++ bo c++ robi
to automatycznie, ale ja mógłbym zrobic to ręcznie i za wszystko sam
odpowiedać, też jestem na to gotów

((

mogę tu wstawić wstawkę pro c:

w programistach c mogłaby
obudzic sie duma, coś w tym stylu "dobry kierowca nie używa
automatycznej skrzyni biegów" (to trochę żartem) - nie jest to wcale
tak trudne chyba jak może wydawać sie programistom w c++
Na przykład z tego zo zrozumiałem o vector<int>
wielokrotnie (!) szybciej niż mogę o tym przeczytać, mogę to
wymyślić - zanim mrugniesz okiem

typedef struct {
int ilosc;
int nr[1000]; //UWAGA limit!!
} structListaNumerow;

structListaNumerow V = {0, {}};

V.nr[ilosc]=a; V.ilosc++; // to odpowiada V.push_back(a) czy jak mu tam

if (V.ilosc>0) for (int i=0; i<V.ilosc; i++) {} // do omiata wektor

prosto, szybko i DOKLADNIE WIEM CO SIE DZIEJE

))

:) ale rozwiazania automatyczne też akceptuję - o ile są dobre -
nie wiem na razie jak to jest, nie znam c++, widze, ze tu na liscie
jest wiecej fanow c++
Cieszę się z wszystkich ewentualnych zalet obu jezykow.

fir

--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

tomasz_k...@poczta.onet.pl

unread,
Aug 12, 2002, 5:33:30 AM8/12/02
to
>
>
> f...@NOSPAM.poczta.gazeta.pl wrote:
> > cout << ((s1_ *) Tablica[2])->x;
> ^^^^^^^^
> zapomniałem Ci powiedzieć że to już jest C++ :)
>

wiem :)

DO WSZYSTKICH ZAINTERESOWANYCH:

Doszukałem się w końcu takiego rozwiązania

#include <stdio.h>


struct structhumanoid_specyfic {char *przechowywane_mysli; } hum_doklejka[10];
struct structanimal_specyfic { int a;} animal_doklejka[10];
struct structdragon_specyfic {int d; int f;} dragon_doklejka[10];


struct structpostac {

int pozx;
int pozy;
enum {humanoid, animal, smok} typ;

union { // UNIĘ MOŻNA DAĆ BEZ NAZWY!

structhumanoid_specyfic *hum;
structanimal_specyfic *anim;
structdragon_specyfic *smo;

};

} postac[100];

////////////////////////////////////////////////////////////////////////////


void main() {

// Teraz mogę kazać humanoidowi przechowywać kawalek mojej szalonej filozofii

postac[32].hum->przechowywane_mysli = "Rzeczywistosc jest krolestwem jazni.
Wszechswiat"
" wypelniony jest radoscia, dlatego, ze jest wypelniony mozliwoscia. Musisz po
prostu"
" nauczyc sie podrozowac. Moja jazn podrozuje dzisiaj w rejony jezyka c ";


printf( postac[32].hum->przechowywane_mysli );

// smokom zaś mogę pozwolić "istnieć na różne sposoby"

}

// <Fir> do siebie: To jest właśnie potęga twojej wyobraźni <Fir>, coś
// nieznanego tym przypieprzaczom się bez głowy

Pytanie techniczne (teraz pow wyswietleniu tekstu wypisuje 'null pointer
assygment' dlaczego?)

<FIr>

The Holy Martian

unread,
Aug 12, 2002, 5:38:17 AM8/12/02
to
Użytkownik <tomasz_k...@poczta.onet.pl>:

> Pytanie techniczne (teraz pow wyswietleniu tekstu wypisuje 'null pointer
> assygment' dlaczego?)

widac kompilator nie ma tyle wyobrazni co Ty i czepia sie jakichs
glupich szczegolow technicznych. olej go! w koncu on jest dla Ciebie
czy Ty dla niego?

pzdr
szeryf

--
Przemysław Kowalczyk | sze...@negativeIQ.pl | gg#2307508 | icq#65884288
--::[ Cytat z Księgi Cytatów Experta :: http://xox.pl/~zamsz/ ]::--
Ale z drugiej strony to jak mowia, kto ma wladze nad usenetem ten ma
wladze na internetem, a kto ma wladze nad internetem ten rzadzi krajem.

tomasz_k...@poczta.onet.pl

unread,
Aug 12, 2002, 6:17:37 AM8/12/02
to
> Użytkownik <tomasz_k...@poczta.onet.pl>:
> > Pytanie techniczne (teraz pow wyswietleniu tekstu wypisuje 'null pointer
> > assygment' dlaczego?)
>
> widac kompilator nie ma tyle wyobrazni co Ty i czepia sie jakichs
> glupich szczegolow technicznych. olej go! w koncu on jest dla Ciebie
> czy Ty dla niego?
>
Czy ktoś jednak wie dlaczego kompilator wyświetla taki błąd, rozwiazanie
byloby idealne gdyby wyeliminować jeszcze tylko tą trudność.

FiR

tomasz_k...@poczta.onet.pl

unread,
Aug 12, 2002, 6:55:01 AM8/12/02
to
> Użytkownik "Wojciech Bojdo/l":
> > Zwolennicy C++ i obiektow pewnie krzykna od razu, ze to bezsens i lepiej
> > robic to w obiektach po sie wszystko samo zrobi...
> > jednak czasami kopiac row szufelka mozemy nauczyc sie czegos nowego
> > lub wykopac dinozaura.
>
> heh, z tym dinozaurem to naprawde dobrze trafiles ((((: takie zabawy
> ze strukturami kojarza mi sie z programami w C, pisanymi w polowie lat
> 70 ubieglego stulecia (((:
>
> pzdr
>    szeryf
>
Ja bym to porównał do jeżdżenia autobusami i chodzenia na pieszo. Różnica
z tego wynikająca jest taka, że ja (podczas takiej przechadzki) jestem po
prostu gdzie indziej (niż pasażerowie autobusu, którzy są w autobusie).

Fir

f...@poczta.gazeta.pl

unread,
Aug 12, 2002, 7:10:32 AM8/12/02
to
si...@interia.pl (Arek G) napisał(a):

> Jeżeli przekonał byś się choć troche do C++:) to mógłbys o zrobić tak:
> Deklarujesz klase bazową, która ma wszystko to co powinna miec, a następnie
> tworzysz nowe specyficzne klasy dziedziczące z bazowej. Teraz możesz
> w tablicy trzymać wskaźniki na klase bazową, a poszczególne elementy
> są alokowane już na odpowiednie klasy pochodne. I masz to wszystko z głowy.
>
> A jak byś chciał mieć to już zupełnie elegancko wo wrzucasz to wszystko
> do vector<> i masz obsługe pamięci z głowy i wszystko jest generyczne
> eleganckie i fajne:)
>
>
i automatyczne - Byc może rzeczywiscie przekonam sie do
tego pomysłu, poczytam o c++,
zobaczymy...

Fir


--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

Arek G

unread,
Aug 12, 2002, 7:25:04 AM8/12/02
to

> mogę tu wstawić wstawkę pro c:
>
> w programistach c mogłaby
> obudzic sie duma, coś w tym stylu "dobry kierowca nie używa
> automatycznej skrzyni biegów" (to trochę żartem) - nie jest to wcale
> tak trudne chyba jak może wydawać sie programistom w c++
> Na przykład z tego zo zrozumiałem o vector<int>
> wielokrotnie (!) szybciej niż mogę o tym przeczytać, mogę to
> wymyślić - zanim mrugniesz okiem
>
> typedef struct {
> int ilosc;
> int nr[1000]; //UWAGA limit!!
> } structListaNumerow;
>
> structListaNumerow V = {0, {}};
>
> V.nr[ilosc]=a; V.ilosc++; // to odpowiada V.push_back(a) czy jak mu tam
>
> if (V.ilosc>0) for (int i=0; i<V.ilosc; i++) {} // do omiata wektor
>
> prosto, szybko i DOKLADNIE WIEM CO SIE DZIEJE
>
> ))
>

Hehe, mylisz się i to bardzo. Twoja struktura ma ten minus że ma
ograniczenie
do 1000 elementów. Owszem możesz dać więcje ale po cholera przydzielać
pamięć na 1000000000 elementów jeżeli potrzebuj w tej chwili 2??

Kolejna sprawa, do vectora<> moge wstawić co tylko chce od inta
poprzez np. obrazek do cholera wie jeszcze czego. Tak więc Twoj
przykład potrafi zrobić ok tego 0.001% co można zrobić z vectorem:)
Tak więc nie jesteś w stanie w przeciągu mrugnięcia okiem zrobić
czegoś podobnego. Dodam, że w c nie jesteś w stanie praktycznie
w ogóle zrobić czegoś takiego jak vector<> (tzn. o podobnych mo-
żliwościach).

"prosto, szybko i DOKLADNIE WIEM CO SIE DZIEJE" to jest bardzo
niebezpieczne stwierdzenie:) Ciekawe gdzie są osoby które pare
lat temu używały takich stwierdzeń i programowały w assemblerze:)


Jednak główna zaletą c++ w stosunku do c to nie to że jest bardziej
elastyczny, czy też można coś zrobić szybciej dzięki lepszym
biblioteką. Ale to że wymusza on zupełnie inny sposób myślenia
dzięki czemu kod staje się bardziej przejrzysty.

Gwarantuje Ci, że za pare miesięcy jak zajrzysz do takiego kodu
to nie będziesz miał pojęcia co tam jest. A jeżeli bedzie to
kod pisany przez grupe maniaków c to już zupelnie współczuje.
A najfajniej jest jak trzeba poprawić coś w kodzi napisanym
przez maniaka c, który nawalił tam tysiące wskaźników do wskąźniów
wskazujących na tablice innych wskaźników które potem są rzutowane
na coś innego i wskazuja na jeszcze coś:))

Pozdrawiam Arek G.


----------------------------------------------------------------------
Codziennie poszukujesz wiadomosci? >>> http://link.interia.pl/f1633


--
Archiwum grupy: http://niusy.onet.pl/pl.comp.lang.c

f...@nospam.poczta.gazeta.pl

unread,
Aug 12, 2002, 7:48:36 AM8/12/02
to
>
> > mogę tu wstawić wstawkę pro c:
> >
> > w programistach c mogłaby
> > obudzic sie duma, coś w tym stylu "dobry kierowca nie używa
> > automatycznej skrzyni biegów" (to trochę żartem) - nie jest to wcale
> > tak trudne chyba jak może wydawać sie programistom w c++
> > Na przykład z tego zo zrozumiałem o vector<int>
> > wielokrotnie (!) szybciej niż mogę o tym przeczytać, mogę to
> > wymyślić - zanim mrugniesz okiem
> >
> > typedef struct {
> > int ilosc;
> > int nr[1000]; //UWAGA limit!!
> > } structListaNumerow;
> >
> > structListaNumerow V = {0, {}};
> >
> > V.nr[ilosc]=a; V.ilosc++; // to odpowiada V.push_back(a) czy jak mu tam
> >
> > if (V.ilosc>0) for (int i=0; i<V.ilosc; i++) {} // do omiata wektor
> >
> > prosto, szybko i DOKLADNIE WIEM CO SIE DZIEJE
> >
> > ))
> >
>
> Hehe, mylisz się i to bardzo. Twoja struktura ma ten minus że ma
> ograniczenie
> do 1000 elementów. Owszem możesz dać więcje ale po cholera przydzielać
> pamięć na 1000000000 elementów jeżeli potrzebuj w tej chwili 2??

Mam pewność, że w swoim zastosowaniu V nigdy nie przekroczy 1000
nie potrzebuje tracic czasu na sprawdzanie tego.


>
> Kolejna sprawa, do vectora<> moge wstawić co tylko chce od inta
> poprzez np. obrazek do cholera wie jeszcze czego. Tak więc Twoj
> przykład potrafi zrobić ok tego 0.001% co można zrobić z vectorem:)

Jasne tylko to jest to 0,001 którego potrzebuję, niczego wiecej
nie chce i nie chce tego obslugiwac

(a akurat mam takie zastosowanie tego, szukam przedmiotów znajdujacych
sie na mapie we współrzędnych x, y; funkcja ma zwracac wskaznik
do listy inna ma wyswietlic spis z tej listy; wszystko to b. proste
tablica i int wskazujacy jej zapelnienie zebrane wspolna nazwa)


> Tak więc nie jesteś w stanie w przeciągu mrugnięcia okiem zrobić
> czegoś podobnego. Dodam, że w c nie jesteś w stanie praktycznie
> w ogóle zrobić czegoś takiego jak vector<> (tzn. o podobnych mo-
> żliwościach).
>
> "prosto, szybko i DOKLADNIE WIEM CO SIE DZIEJE" to jest bardzo
> niebezpieczne stwierdzenie:) Ciekawe gdzie są osoby które pare
> lat temu używały takich stwierdzeń i programowały w assemblerze:)
>
>
> Jednak główna zaletą c++ w stosunku do c to nie to że jest bardziej
> elastyczny, czy też można coś zrobić szybciej dzięki lepszym
> biblioteką. Ale to że wymusza on zupełnie inny sposób myślenia
> dzięki czemu kod staje się bardziej przejrzysty.
>
> Gwarantuje Ci, że za pare miesięcy jak zajrzysz do takiego kodu
> to nie będziesz miał pojęcia co tam jest. A jeżeli bedzie to
> kod pisany przez grupe maniaków c to już zupelnie współczuje.
> A najfajniej jest jak trzeba poprawić coś w kodzi napisanym
> przez maniaka c, który nawalił tam tysiące wskaźników do wskąźniów
> wskazujących na tablice innych wskaźników które potem są rzutowane
> na coś innego i wskazuja na jeszcze coś:))
>
> Pozdrawiam Arek G.
>

Być może ale w c to nie jest wcale tak nieprzejrzyste, mam tablice
trzech podstawowych dla swojego programu struktur, opisujacej
postac, opisujacej przedmiot, opisujacej pole "kafelek" mapy
i sama mape[][] z numerami pol

'interfejsy' tych tablic wygladaja tak:

postac[i].nazwa
przedmiot[k].wlasciciel;
pole[j].jest_przezroczyste

To jakby wszystkie dane, którymi sie zajmuje

akcjom, funkcjom które na tym operuja tez nadaje czytelne nazwy

wszystko to jest zupelnie przejrzyste

<FiR>

Lucifer

unread,
Aug 12, 2002, 8:36:08 AM8/12/02
to
f...@NOSPAM.poczta.gazeta.pl wrote:

>>>if (V.ilosc>0) for (int i=0; i<V.ilosc; i++) {} // do omiata wektor

Po co ten if?

>>>prosto, szybko i DOKLADNIE WIEM CO SIE DZIEJE

Chwilowo.. powodzenia w grzebaniu w tym za jakiś czas ;)

> Mam pewność, że w swoim zastosowaniu V nigdy nie przekroczy 1000
> nie potrzebuje tracic czasu na sprawdzanie tego.

Jasne jak słońce, zapewne autor funkcji gets też miewał tego typu pewności.

>>Kolejna sprawa, do vectora<> moge wstawić co tylko chce od inta
>>poprzez np. obrazek do cholera wie jeszcze czego. Tak więc Twoj
>>przykład potrafi zrobić ok tego 0.001% co można zrobić z vectorem:)

Masz szablonik, w sumie niewiele ponad tablice z C, działa na tej samej
zasadzie.

>>Tak więc nie jesteś w stanie w przeciągu mrugnięcia okiem zrobić
>>czegoś podobnego. Dodam, że w c nie jesteś w stanie praktycznie
>>w ogóle zrobić czegoś takiego jak vector<> (tzn. o podobnych mo-
>>żliwościach).

Na chama, z jakimiś rzutowaniami zrobiłby to.

>>"prosto, szybko i DOKLADNIE WIEM CO SIE DZIEJE" to jest bardzo
>>niebezpieczne stwierdzenie:) Ciekawe gdzie są osoby które pare
>>lat temu używały takich stwierdzeń i programowały w assemblerze:)

Zgadza się, tylko w C++ też niebardzo można tak mówić, bo łatwo napisać
molocha naszprycowanego STLem.

>>Jednak główna zaletą c++ w stosunku do c to nie to że jest bardziej
>>elastyczny, czy też można coś zrobić szybciej dzięki lepszym
>>biblioteką. Ale to że wymusza on zupełnie inny sposób myślenia
>>dzięki czemu kod staje się bardziej przejrzysty.

Za mało przejrzysty, za dużo zgodności z C.

> Być może ale w c to nie jest wcale tak nieprzejrzyste, mam tablice
> trzech podstawowych dla swojego programu struktur, opisujacej
> postac, opisujacej przedmiot, opisujacej pole "kafelek" mapy
> i sama mape[][] z numerami pol
>
> 'interfejsy' tych tablic wygladaja tak:
>
> postac[i].nazwa
> przedmiot[k].wlasciciel;
> pole[j].jest_przezroczyste
>
> To jakby wszystkie dane, którymi sie zajmuje

Za każdym razem kiedy używasz literki i, k, j musisz teoretycznie
sprawdzić czy nie przekroczyłeś zakresu.

> akcjom, funkcjom które na tym operuja tez nadaje czytelne nazwy

Czytelne nazwy to nie wszystko.

> wszystko to jest zupelnie przejrzyste

Jasne.. Jak sie zabieram do czytania dokumentacji jakichś starawych
bibliotek napisanych w C kilka(naście) lat temu, albo poprostu grzebie
czasem w jakichś źródełkach w nadziei na znalezienie _Wiedzy_ to odrazu
czuje niemoc twórczą i ogólne zwątpienie.
Najciekawszy jest OpenGL - niby prosta (w sensie prosta struktura)
bilioteka, szkoda tylko, że każda głupia funkcja przyjmuje liczby
poprzykrywne define'ami, a kompilator nie raczy powiadomić o ich błędnym
dobieraniu. Jeszcze lepsze jest gołe GTK+, wogóle nie wiem pod jaki styl
to podpiąć.
Kiedyś toczyłem zaciekłe boje z socketami w C i C++, najciekawsze jest
to, że w większość dokumnetacji jaką znalazłem przykłady były w tym
najbardziej porypanym C (funkcje zaczynają się od stada zmiennych, potem
nadawanie im wartości, potem wywoływanie kolejnych funkcji z kosmicznymi
rzutowaniami, jak to jest czytelne to jestem skończonym debilem).
Zajarzyłem o co w socketach chodzi dopiero w OCamlu (kompilator dzięki
statycznemu typowaniu nie pozwala na klasyczne byczki C - błędne
argumenty, pomylone typy, nie było też rozwlekłego syfiastego kodu).

--
Lucifer

Arek G

unread,
Aug 12, 2002, 8:30:59 AM8/12/02
to
> > >
> >
> > Hehe, mylisz się i to bardzo. Twoja struktura ma ten minus że ma
> > ograniczenie
> > do 1000 elementów. Owszem możesz dać więcje ale po cholera przydzielać
> > pamięć na 1000000000 elementów jeżeli potrzebuj w tej chwili 2??
>
> Mam pewność, że w swoim zastosowaniu V nigdy nie przekroczy 1000
> nie potrzebuje tracic czasu na sprawdzanie tego.
>

To co teraz powiedziałeś, to daleko posunięta krótkowzroczność:(

>
> >
> > Kolejna sprawa, do vectora<> moge wstawić co tylko chce od inta
> > poprzez np. obrazek do cholera wie jeszcze czego. Tak więc Twoj
> > przykład potrafi zrobić ok tego 0.001% co można zrobić z vectorem:)
>
> Jasne tylko to jest to 0,001 którego potrzebuję, niczego wiecej
> nie chce i nie chce tego obslugiwac
>

To samo co powyżej.


> > Gwarantuje Ci, że za pare miesięcy jak zajrzysz do takiego kodu
> > to nie będziesz miał pojęcia co tam jest. A jeżeli bedzie to
> > kod pisany przez grupe maniaków c to już zupelnie współczuje.
> > A najfajniej jest jak trzeba poprawić coś w kodzi napisanym
> > przez maniaka c, który nawalił tam tysiące wskaźników do wskąźniów
> > wskazujących na tablice innych wskaźników które potem są rzutowane
> > na coś innego i wskazuja na jeszcze coś:))
> >
> > Pozdrawiam Arek G.
> >
>
> Być może ale w c to nie jest wcale tak nieprzejrzyste, mam tablice
> trzech podstawowych dla swojego programu struktur, opisujacej
> postac, opisujacej przedmiot, opisujacej pole "kafelek" mapy
> i sama mape[][] z numerami pol
>
>
>

Może źle Cie rozumiem, ale najwyraźniej nie masz doświadczenia z
bardziej rozbudowanymi aplikacjami, pisanymi przez różnych ludzi
o róznych przyzwyczajeniach (świadczą o tym Twoje powyższe argu-
menty)

Faktycznie do malych i prostch programików c może być. A jezeli
dalej nie chcesz wychodzić, no to faktycznie c.

f...@nospam.poczta.gazeta.pl

unread,
Aug 12, 2002, 9:02:44 AM8/12/02
to
>
> Może źle Cie rozumiem, ale najwyraźniej nie masz doświadczenia z
> bardziej rozbudowanymi aplikacjami, pisanymi przez różnych ludzi

Oczywiście, boże uchowaj mnie od konieczności rozumienia czyjegoś kodu

> o róznych przyzwyczajeniach (świadczą o tym Twoje powyższe argu-
> menty)
>
> Faktycznie do malych i prostch programików c może być. A jezeli
> dalej nie chcesz wychodzić, no to faktycznie c.
>
> Pozdrawiam Arek G.
>
>

Lucifer

unread,
Aug 12, 2002, 9:07:37 AM8/12/02
to
f...@NOSPAM.poczta.gazeta.pl wrote:
>>Może źle Cie rozumiem, ale najwyraźniej nie masz doświadczenia z
>>bardziej rozbudowanymi aplikacjami, pisanymi przez różnych ludzi
>
>
> Oczywiście, boże uchowaj mnie od konieczności rozumienia czyjegoś kodu

Przy odrobinie szczęścia Bóg Cie oleje.

--
Lucifer

f...@nospam.poczta.gazeta.pl

unread,
Aug 12, 2002, 9:34:12 AM8/12/02
to
> >>Może źle Cie rozumiem, ale najwyraźniej nie masz doświadczenia z
> >>bardziej rozbudowanymi aplikacjami, pisanymi przez różnych ludzi
> >
> >
> > Oczywiście, boże uchowaj mnie od konieczności rozumienia czyjegoś kodu
>
> Przy odrobinie szczęścia Bóg Cie oleje.
>

Dziwną frazę wytworzyłeś Lucifer: że przy odrobinie szczęścia 'cię oleje'
jakby troche obraźliwe, przez to 'oleje' i sugerowanie że nie wiem
co jest dla mnie szczęściem jakbym był głupi jak owca; w tym samym
'Cię' napisane z dużej litery - chyba ponadprzeciętna grzeczność;
do tego jeszcze w tym samym podniosłe 'Bóg' zestawione 'Bóg cię oleje'

--
:-/

:-)

> --
> Lucifer

Targacz

unread,
Aug 12, 2002, 9:51:28 AM8/12/02
to

f...@NOSPAM.poczta.gazeta.pl wrote:
>
> > >>Może źle Cie rozumiem, ale najwyraźniej nie masz doświadczenia z
> > >>bardziej rozbudowanymi aplikacjami, pisanymi przez różnych ludzi
> > >
> > >
> > > Oczywiście, boże uchowaj mnie od konieczności rozumienia czyjegoś kodu
> >
> > Przy odrobinie szczęścia Bóg Cie oleje.
> >
>
> Dziwną frazę wytworzyłeś Lucifer: że przy odrobinie szczęścia 'cię oleje'
> jakby troche obraźliwe, przez to 'oleje' i sugerowanie że nie wiem
> co jest dla mnie szczęściem jakbym był głupi jak owca; w tym samym
> 'Cię' napisane z dużej litery - chyba ponadprzeciętna grzeczność;
> do tego jeszcze w tym samym podniosłe 'Bóg' zestawione 'Bóg cię oleje'
>
> --
> :-/
>
> :-)
>
> > --
> > Lucifer
> >

Zacytuję Chimerycznego Lokatora(bez żadnej złośliwości):
"Przenieście bluzgi na priv, proszę Was."

Targacz

Lucifer

unread,
Aug 12, 2002, 10:27:47 AM8/12/02
to
f...@NOSPAM.poczta.gazeta.pl wrote:
>>>>Może źle Cie rozumiem, ale najwyraźniej nie masz doświadczenia z
>>>>bardziej rozbudowanymi aplikacjami, pisanymi przez różnych ludzi
>>>
>>>
>>>Oczywiście, boże uchowaj mnie od konieczności rozumienia czyjegoś kodu
>>
>>Przy odrobinie szczęścia Bóg Cie oleje.
>>
>
>
> Dziwną frazę wytworzyłeś Lucifer: że przy odrobinie szczęścia 'cię oleje'
> jakby troche obraźliwe, przez to 'oleje' i sugerowanie że nie wiem
> co jest dla mnie szczęściem jakbym był głupi jak owca; w tym samym
> 'Cię' napisane z dużej litery - chyba ponadprzeciętna grzeczność;
> do tego jeszcze w tym samym podniosłe 'Bóg' zestawione 'Bóg cię oleje'

Tu nie ma nic obraźliwego, poprostu bardzo wątpię, żebyś nigdy nie
musiał poprawiać czyjejś pracy.

--
Lucifer

f...@poczta.gazeta.pl

unread,
Aug 12, 2002, 11:00:01 AM8/12/02
to
Lucifer <lucifer_nie...@linux.black.pl> napisał(a):

Pewnie. Wcale nie odebrałem tego jako obraźliwe
- wogole nie wiem o czym targacz mówi.

Targacz: rzuć okiem na mój przykalad z polem w strukturze które jest
unią wskaźników do struktur. Co na to powiesz? Dlaczego to generuje
błąd?

<Fr>

Targacz

unread,
Aug 12, 2002, 11:42:11 AM8/12/02
to

tomasz_k...@poczta.onet.pl wrote:
>
> > Użytkownik <tomasz_k...@poczta.onet.pl>:
> > > Pytanie techniczne (teraz pow wyswietleniu tekstu wypisuje 'null pointer
> > > assygment' dlaczego?)
> >
> > widac kompilator nie ma tyle wyobrazni co Ty i czepia sie jakichs
> > glupich szczegolow technicznych. olej go! w koncu on jest dla Ciebie
> > czy Ty dla niego?
> >
> Czy ktoś jednak wie dlaczego kompilator wyświetla taki błąd,

Nie kompilator. To błąd RunTime.

> rozwiazanie
> byloby idealne gdyby wyeliminować jeszcze tylko tą trudność.

musisz allokowac pamięć dla postac[32].hum, przecież to wskaźnik!

postac[32].hum=(structhumanoid_specyfic*)malloc(sizeof(structhumanoid_specyfic));
//...
free(postac[32].hum);

Targacz

Chimeryczny Lokator

unread,
Aug 12, 2002, 3:19:58 PM8/12/02
to
Użytkownik "Targacz" <tar...@NOSPAM.o2.pl> napisał w wiadomości
news:3D57BD60...@NOSPAM.o2.pl...

> Zacytuję Chimerycznego Lokatora(bez żadnej złośliwości):
> "Przenieście bluzgi na priv, proszę Was."

Panie! Panie!
Tak bez pytania ?! :-)

Pozdrawiam!
Marcin

Arek G

unread,
Aug 12, 2002, 6:11:23 PM8/12/02
to

> > Może źle Cie rozumiem, ale najwyraźniej nie masz doświadczenia z
> > bardziej rozbudowanymi aplikacjami, pisanymi przez różnych ludzi
>
> Oczywiście, boże uchowaj mnie od konieczności rozumienia czyjegoś kodu
>

A to przepraszam, faktycznie źle Cie rozumiem myślałem, że jesteś
programistą. Jezeli nie to jesteś zupełnie usprawiedliwiony.


----------------------------------------------------------------------
Zawsze mozesz do mnie wrócić... >>> http://link.interia.pl/f1636

Artur Siekielski

unread,
Aug 12, 2002, 4:32:06 PM8/12/02
to
Monday, 12 Aug, Lucifer:

> Zgadza się, tylko w C++ też niebardzo można tak mówić, bo łatwo napisać
> molocha naszprycowanego STLem.

Co to jest "moloch naszprycowany STLem"? Jeżeli STLa jest dużo i jest
świadomie wykorzystywany, to program jest łatwo rozszerzalny, ma jasną
strukurę, jest wydajny. Sam mam z nim jak najlepsze doświadczenia... Może
poza przesadnym stosowaniem obiektów funkcyjnych - mimo wszystko łatwiej jest
napisać zwykłą pętlę 'for' niż tworzyć tworzyć nową klasę, rzadko kiedy można
wykorzystać więcej niż raz taki funktor (do tego dochodzi brak wsparcia języka
do tworzenia lokalnych struktur, nie mówiąc o dostępie do lokalnego
środowiska). No i brak kontroli "konceptów" wbudowanych w język (tzn.
określenia, że dany typ wspiera jakieś operacje, jak np. przypisanie) - czego
efektem kilobajtowe komuniakty błędów - w końcu kompilator zastępuje tylko
bezmyślnie parametry szablonu. Przydałby się jakiś inteligentniejszy model
polimorfizmu czasu kompilacji... (wystarczy spojrzeć na Haskella i jego "type
classes").

Targacz

unread,
Aug 12, 2002, 6:37:16 PM8/12/02
to

f...@poczta.gazeta.pl wrote:
>
> > Tu nie ma nic obraźliwego, poprostu bardzo wątpię, żebyś nigdy nie
> > musiał poprawiać czyjejś pracy.
> >
>

> Pewnie. Wcale nie odebrałem tego jako obraźliwe
> - wogole nie wiem o czym targacz mówi.

<TO>
>... i sugerowanie że nie wiem


> co jest dla mnie szczęściem jakbym był głupi jak owca; w tym samym
> 'Cię' napisane z dużej litery - chyba ponadprzeciętna grzeczność;

> do tego jeszcze w tym samym podniosłe 'Bóg'...
</TO>

To zabrzmało jak ironia, ale jak zwykle mi się zdawało...
Następnym razem nie będę się wtrącał.

> Targacz: rzuć okiem na mój przykalad z polem w strukturze które jest
> unią wskaźników do struktur. Co na to powiesz? Dlaczego to generuje
> błąd?

Targacz

Kamil Burzynski

unread,
Aug 13, 2002, 2:06:18 AM8/13/02
to

"Artur Siekielski" <grue...@go2.pl> wrote in message news:slrnalg25g....@muyc.omput.er...

> strukurę, jest wydajny. Sam mam z nim jak najlepsze doświadczenia... Może
> poza przesadnym stosowaniem obiektów funkcyjnych - mimo wszystko łatwiej jest
> napisać zwykłą pętlę 'for' niż tworzyć tworzyć nową klasę, rzadko kiedy można
> wykorzystać więcej niż raz taki funktor (do tego dochodzi brak wsparcia języka
> do tworzenia lokalnych struktur, nie mówiąc o dostępie do lokalnego
> środowiska). No i brak kontroli "konceptów" wbudowanych w język (tzn.

Obadaj Boost, tam nie ma problemu z funktorami :)

--
Best regards from
Kamil Burzynski
Senior Design Engineer
Advanced Digital Broadcast Poland, LTD.
- -
"Yes, I'm criminal. My crime is that of curiosity."


Artur Siekielski

unread,
Aug 13, 2002, 12:08:25 PM8/13/02
to
Tuesday, 13 Aug, Kamil Burzynski:

>> strukurę, jest wydajny. Sam mam z nim jak najlepsze doświadczenia... Może
>> poza przesadnym stosowaniem obiektów funkcyjnych - mimo wszystko łatwiej jest
>> napisać zwykłą pętlę 'for' niż tworzyć tworzyć nową klasę, rzadko kiedy można
>> wykorzystać więcej niż raz taki funktor (do tego dochodzi brak wsparcia języka
>> do tworzenia lokalnych struktur, nie mówiąc o dostępie do lokalnego
>> środowiska). No i brak kontroli "konceptów" wbudowanych w język (tzn.
> Obadaj Boost, tam nie ma problemu z funktorami :)

Problemy, o których mówię (brak closures, lokalnych funktorów, lambda wyrażeń
(Boost.Lambda to zdecydowanie nie to)) pozostają.

Khorne

unread,
Aug 13, 2002, 12:24:24 PM8/13/02
to
On the subject of 'Re: [c a raczej c++] problem z technika programowania <fir>', Artur Siekielski wrote such a fscking thing:

> Co to jest "moloch naszprycowany STLem"?
To mój obecny projekt. Właśnie "Moloch" się nazywa. I owszem, jest
naszprycowany STLem, ale nie bardzo.

> środowiska). No i brak kontroli "konceptów" wbudowanych w język (tzn.
> określenia, że dany typ wspiera jakieś operacje, jak np. przypisanie) - czego
> efektem kilobajtowe komuniakty błędów - w końcu kompilator zastępuje tylko
> bezmyślnie parametry szablonu. Przydałby się jakiś inteligentniejszy model
> polimorfizmu czasu kompilacji..

Co fakt to fakt :(

--
[/ Khorne <khornie@-poczta.onet.pl> : Everyone can observe survivors, but \]
[: Linux BOfH registered as 246296 : only wise can learn from them. :]
[\ ICQ #117289698 -=*http://leto.anet5.pl.eu.org*=- /]

Arek G

unread,
Aug 9, 2002, 7:45:07 AM8/9/02
to

> > Zamiast alokowac tablice struktur zaalokuj tablice wskaznikow
> do struktur.
> > postac_ *postac[1000];
> >
> wyglada obiecujaco jesli bedzie dzialac
>
> ale
>
> jesli chce zrobic tablice z wskaznikow do roznych typow
>
> struct s1_ {int x; int y;} s1;
> struct s2_ {char a; int y;} s2;
>
> to jak to zrobic?
>
> bo moge zrobic albo tablice wskaznikow do s1_ albo tab. wsk. do s2_
> a - jak mowie - chce spiac wspolnym indeksem nieco różne struktury
>
>

Jeżeli przekonał byś się choć troche do C++:) to mógłbys o zrobić tak:
Deklarujesz klase bazową, która ma wszystko to co powinna miec, a następnie
tworzysz nowe specyficzne klasy dziedziczące z bazowej. Teraz możesz
w tablicy trzymać wskaźniki na klase bazową, a poszczególne elementy
są alokowane już na odpowiednie klasy pochodne. I masz to wszystko z głowy.

A jak byś chciał mieć to już zupełnie elegancko wo wrzucasz to wszystko
do vector<> i masz obsługe pamięci z głowy i wszystko jest generyczne
eleganckie i fajne:)


Życze milej zabawy Arek G.


----------------------------------------------------------------------
Zgodz sie, co Ci szkodzi? ;-) >>> http://link.interia.pl/f1634

tomasz_k...@poczta.onet.pl

unread,
Aug 14, 2002, 9:16:01 AM8/14/02
to

Przeoczyłem, że należy zainicjowac wskaźnik np.

postac[32].hum=&hum_doklejka[3];

To wszystko. Podsumowujac - problem z doklejaniem struktur do struktur
zostal pozytywnie rozwiazany. Ale mam juz nastepny.

Fir


--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl

maHo

unread,
Aug 14, 2002, 11:37:08 AM8/14/02
to
On Fri, 09 Aug 2002 08:14:40 +0000, tomasz_kaminski_ wrote:

> No i oczywiscie moje pytanie: jak to zrobic? albo jak to zrobić lepiej?
>
> Fir
>
uzyj do tego vectora (#include <vector>).

maHo


tomasz_k...@poczta.onet.pl

unread,
Aug 14, 2002, 9:52:10 AM8/14/02
to
> f...@NOSPAM.poczta.gazeta.pl wrote:
>
> >>>if (V.ilosc>0) for (int i=0; i<V.ilosc; i++) {}  // do omiata wektor
>
> Po co ten if?
>
Właśnie, ten if jest niepotrzebny, tym lepiej.

Marcin 'Qrczak' Kowalczyk

unread,
Aug 15, 2002, 4:14:26 PM8/15/02
to
9 Aug 2002 13:45:07 +0200, Arek G <si...@interia.pl> pisze:

> A jak byś chciał mieć to już zupełnie elegancko wo wrzucasz to wszystko
> do vector<> i masz obsługe pamięci z głowy

No, połowicznie: obiekty za tymi wskaźnikami trzeba jawnie zwalniać
(a przez wartość nie można wsadzać do vectora, jeśli mają różne typy).

--
__("< Marcin Kowalczyk
\__/ qrc...@knm.org.pl
^^ http://qrnik.knm.org.pl/~qrczak/

ajkos

unread,
Aug 16, 2002, 6:56:59 PM8/16/02
to
<tomasz_k...@poczta.onet.pl> wrote in message:
...

>bo moge zrobic albo tablice wskaznikow do s1_ albo tab. wsk. do s2_
>a - jak mowie - chce spiac wspolnym indeksem nieco różne struktury

oto przetestowany/dzialajacy/kompletny przyklad:

#include <stdio.h>
enum Typ { ta, tb };
struct A { int l; };
struct B { double l; };
union U { struct A a; struct B b; };
struct T { int *t; union U *u; };

int main(void)
{
struct A a = { 0 };
struct B b = { 0.0 };
union U x = (union U) a;
union U y = (union U) b;
union U u[3] = { x, y, x };
int typ[3] = { ta, tb, ta };
struct T t = { typ, u };


int i;
for (i=0; i<3; i++)
{ if (t.t[i] == ta)
t.u[i].a.l = i;
if (t.t[i] == tb)
t.u[i].b.l = i+.1;
}
for (i=0; i<3; i++)
{ if (t.t[i] == ta)
printf("struktura A, i = %d\n",t.u[i].a.l);
if (t.t[i] == tb)
printf("struktura B, d = %f\n",t.u[i].b.l);
}

return 0;
}

wynik dzialania:
-----------------------
struktura A, i = 0
struktura B, d = 1.100000
struktura A, i = 2

ps. w ten/podobny sposob imho (nie testowalem) mozna implementowac podobne
przypadki w c++,
np. _tablice czegokolwiek_ sa mozliwe do zaimplementowania :DDD
aha: kompilator DJGPP, Win98se


pozdrowienia
ajkos

Piotr Chruscielewski

unread,
Aug 17, 2002, 5:49:35 AM8/17/02
to

> ps. w ten/podobny sposob imho (nie testowalem) mozna implementowac podobne
> przypadki w c++,
> np. _tablice czegokolwiek_ sa mozliwe do zaimplementowania :DDD
> aha: kompilator DJGPP, Win98se

hm jesli chodzi o tablice czegokolwiek to mozna to zrobic troche
inaczej, bez uni ktore imho troche zaciemniaja sprawe

chociazby tak
struct data
{
void *data;
short type;
}

i wtedy mozesz spokojnie pod data zaalokowac sobie pamiec pod int, albo
pod char albo pod klase jakas

mozna tez zrobic klase z konstruktorami przyjmujacymi jako parametr albo
int, albo struct s1 albo struct s2

ja osobiscie nie lubie uzywac uni.
aha i do takich rzeczy to chyba mozna uzyc templatesy.. ale nie wiem bo
jakos nigdy ich nie potrzebowalem

Piotrek
pio...@ikaria.pl


Tomasz Zielonka

unread,
Aug 17, 2002, 6:02:12 AM8/17/02
to
Arek G napisał:

>
> Jeżeli przekonał byś się choć troche do C++:) to mógłbys o zrobić tak:
> Deklarujesz klase bazową, która ma wszystko to co powinna miec, a następnie
> tworzysz nowe specyficzne klasy dziedziczące z bazowej. Teraz możesz
> w tablicy trzymać wskaźniki na klase bazową, a poszczególne elementy
> są alokowane już na odpowiednie klasy pochodne. I masz to wszystko z głowy.
>
> A jak byś chciał mieć to już zupełnie elegancko wo wrzucasz to wszystko
> do vector<> i masz obsługe pamięci z głowy i wszystko jest generyczne
> eleganckie i fajne:)

A hierarchia klas i vector<KlasaBazowa> nie pogryzą się przypadkiem? ;)

Pewnie trzeba będzie zrobić jakiś myk, żeby uniknąć slicing'u, np.
vector< jakis_sprytny_wskaznik<KlasaBazowa> >

pozdrawiam,
tomek

--
.signature: Too many levels of symbolic links

Piotr Grygorczuk

unread,
Aug 17, 2002, 2:10:39 PM8/17/02
to

"Piotr Chruscielewski" <pio...@ikaria.pl> wrote in message
news:3D5E1C2F...@ikaria.pl...

>
> hm jesli chodzi o tablice czegokolwiek to mozna to zrobic troche
> inaczej, bez uni ktore imho troche zaciemniaja sprawe
>
> chociazby tak
> struct data
> {
> void *data;
> short type;
> }
>
> i wtedy mozesz spokojnie pod data zaalokowac sobie pamiec pod int, albo
> pod char albo pod klase jakas
>
> mozna tez zrobic klase z konstruktorami przyjmujacymi jako parametr albo
> int, albo struct s1 albo struct s2

Witam

Byc moze przyklad, ktory podaje nizej nie jest odpowiedni akurat do tego
konkretnego rozwiazania. Czesto uzywam podobnej skladni do pracy z bardziej
zlozonymi strukturami. W taki sposob moge uzyskac cos na wzor dziedziczenia
;-), funkcji virtualnych :-) itp. Oczywiscie funkcjonalnosc taka jest bardzo
ograniczona w porownaniu z c++, ale trzeba sobie jakos zycie ulatwiac.


typedef double (*WartoscFun)(void *_this);
typedef struct
{
WartoscFun Wartosc;
}Tbl;

typedef struct
{
WartoscFun Wartosc;
int i;
}A;
double A_Wartosc(A *_this){return _this->i;}


typedef struct
{
WartoscFun Wartosc;
float f;
}B;
double B_Wartosc(B *_this){return _this->f;}

typedef struct
{
WartoscFun Wartosc;
double d;
}C;
double C_Wartosc(C *_this){return _this->d;}


int main()
{
A a = {(WartoscFun)A_Wartosc,7};
B b = {(WartoscFun)B_Wartosc,.7};
C c = {(WartoscFun)C_Wartosc,.145};
Tbl *tbl[3] = { (Tbl*)&a, (Tbl*)&b, (Tbl*)&c};
int i;

for( i=0; i<3; i++ )

printf("%8.3f\n",tbl[i]->Wartosc(tbl[i]));

return 0;
}

Wynik dzialania:
7.000
0.700
0.145

--
pg


tomasz_k...@poczta.onet.pl

unread,
Aug 19, 2002, 3:27:16 AM8/19/02
to
TNX wszystkim!

ajkos

unread,
Aug 19, 2002, 6:51:56 PM8/19/02
to
"Piotr Grygorczuk" <_grygorpl_@_poczta_._onet_.pl> wrote in message:

hi

>Wynik dzialania:
> 7.000
> 0.700
> 0.145

wlasnie, wynik jest _rozbiezny_ z zamierzeniami, konwersja robi swoje niestety.

pozdro
ajk

ajkos

unread,
Aug 19, 2002, 6:51:56 PM8/19/02
to
Piotr Chruscielewski <pio...@ikaria.pl> wrote in message:

hej

> bez uni ktore imho troche zaciemniaja sprawe

w jaki sposob 'zaciemniaja' ?

>ja osobiscie nie lubie uzywac uni.

nie lubic, to mozna zupy ogorkowej :D

3maj siem
ajk

0 new messages