[QGHG-it-dev-list] Zadatak 2 - bojenje kompleksa

Dusan Cvijetic dusancvijetic2000 at gmail.com
Mon Feb 21 22:36:22 CET 2022


Pozdrav,

Hvala Vam mnogo, ponovio sam korake koje ste naveli u poruci, i Visual
Studio sada uspeva da izgradi  i izvrši kod, a čak uspeva i da mi farba kod
bez dodatnih koraka. Ipak, ne vidim koja je razlika u odnosu na ono što sam
ja radio (File/New project from existing code), osim što se fajlovi nalaze
na drugom mestu. Nije mi jasno zašto isti kod hoće da izvrši kada se u
projekat unese na jedan način, a baca greške kada se uveze na drugi...

Isprva sam pokušao da ispratim vaše korake bez prethodno kreiranog main.cpp
fajla, i video da tada Visual Studio uopšte ne nudi meni
Debug/Properties/Configuration Properties/C++, pretpostavljam zato što nema
koda na osnovu kog bi zaključio u kom jeziku ću pisati (?).
Pretpostavljajući da će pronaći ispravan kompajler ukoliko direktno u VS
kreiram main funkciju, prekopirao sam sve .hpp i .cpp fajlove u
direktorijum projekta, prethodno napravivši main.cpp u VS uz kopiranje koda
iz originala. Nadao sam se da ću tako izbeći uključivanje dodatnih
direktorijuma, i eventualno namestiti da mi se projekat nalazi u lokalnom
git direktorijumu, što bi mi bilo najzgodnije (ako je ovo iz nekog razloga
loša praksa, napomenite mi, da odmah odustanem). Međutim, kada fajlove
uvezem na ovaj način, ponovo baca iste greške kao i ranije.

Pošto ovakva konfiguracija za sad radi, držaću se nje, ali ako neko ima
ideju šta mi se dešava, bio bih zahvalan na objašnjenju.

Pozdravi,
Dušan

пон, 21. феб 2022. у 18:09 Jaroslav Blagojevic <
jaroslav.blagojevic at gmail.com> је написао/ла:

> Ja sam napravio prazan Visual Studio 2019 projekat, u drugom
> direktorijumu nego download-ovani repozitorijum, samo sa main.cpp fajlom
> kao "source files" (hpp fajlovi kao "include files" i dodao direktorijum sa
> download-ovanim repozitorijumom u
> Dеbug->Properties->Configuration Properties->C++->General->Additional
> Include Directories).
> Taj projekat sam izvršio uspešno, a za potrebe menjanja, pošto nije hteo
> da mi farba kod, sam morao da copy&paste-ujem .hpp fajlove (i cpp fajl na
> kome radim) iz download-ovanog repozitorijuma u direktorijum projekta,
> izmenim .hpp fajlove (dodao sam nastavak '1' na svaki) da ne uključuju
> .cpp, kopiram i .cpp fajl (isto dodajući nastavak '1'), izmenim, testiram i
> copy&paste-ujem promene nazad. Neće da farba kod u .cpp fajlovima, zato što
> ih ne tretira kao include fajlove. Dotle sam stigao. Visual Studio traži da
> mu se svi .cpp fajlovi stave u projekat, a ne da se include-ju .cpp fajlovi
> u okviru jedan drugog. Pretpostavljam da ako to uradimo, da će biti problem
> sa g++-om (da li on podržava projekte?)
>
> Pozdrav,
>
> Jaroslav
>
>
> On Sun, Feb 20, 2022 at 7:13 AM Marko Vojinovic <vmarko at ipb.ac.rs> wrote:
>
>>
>> Pozdrav Dusane,
>>
>> Meni se cini da svi problemi na koje si naisao izgleda dolaze iz neke
>> greske prilikom import-ovanja koda u Visual Studio. Ja ne koristim VS i ne
>> umem da ti pomognem oko toga, ali Jaroslav rece da je uspesno importovao
>> kod u VS, pa verovatno moze on da ti pomogne.
>>
>> Trenutna verzija koda je inace skroz kompletna, sve je definisano,
>> implementirano i radi kako treba --- ja ga u Linux-u prosto kompajliram iz
>> komandne linije, ovako:
>>
>>    g++ main.cpp -o izvrsi-me
>>
>> i onda kad izvrsim fajl "izvrsi-me", dobijem ocekivani output. Kompajler
>> ne prijavljuje nikakve greske, sve prolazi savrseno glatko.
>>
>> > Koliko sam video, greške koje mi kompajler baca se uglavnom odnose na
>> imena koja ne može da identifikuje, a koja dolaze iz standardne biblioteke.
>>
>> Pomoglo bi da nam posaljes te greske (makar prvih nekoliko), da vidimo o
>> cemu se radi.
>>
>> > Video sam da je using namespace std iskorišćen na početku
>> triangulator.hpp fajla, ali me je zanimalo zašto ta komanda ne stoji na
>> početku svakog .hpp fajla? Da li bi to bilo redudantno?
>>
>> Da, bilo bi redundantno. Dizajn je da main.cpp include-uje samo
>> triangulator.hpp, a da ovaj u sebi include-uje sve ostalo sto mu treba. Ne
>> vidim zasto bi zeleo da deklarises namespace std vise puta. Mada mi se cini
>> da cak i ako to uradis, ne bi trebalo da nastane nikakav problem.
>>
>> Bila bi dobra ideja da na papiru nacrtas "drvo include-ova": koren je
>> main.cpp, pogledas koji fajlovi su tu include-ovani, pa se onda spustas po
>> granama tako sto onda otvoris te include-ovane fajlove i vidis sta oni
>> include-uju, itd. Ja sam to bio uradio jednom, i preporucujem i tebi --- to
>> drvo ti pruza vrlo lep uvid u organizaciju koda.
>>
>> > Da li postoji neko pravilo kada treba da uključujem .hpp, a kada .cpp
>> fajlove?
>>
>> Genericki receno, .hpp fajlovi sadrze definicije klasa i deklaracije
>> njihovih metoda i f-ja, a .cpp fajlovi sadrze implementacije tih metoda i
>> f-ja deklarisanih u .hpp fajlovima. Oni su vec namesteni da include-uju
>> jedni druge, prema onom drvetu, ti tu ne bi morao nista dodatno da radis.
>>
>> > Još jedna od praksi koje su nas uvek terali da ispoštujemo je dodavanje
>> zaštite u zaglavlja u vidu #ifndef - #define - #endif strukture
>>
>> Ta praksa je sigurno dobra, ali mi smo #define-ovali konstante samo u
>> constants.hpp fajlu, i nigde drugo. Iz drveta mozes da vidis da je
>> constants.hpp include-ovan samo jedanput (unutar classes.hpp), pa ne bi
>> smela nigde da ti se pojavi dupla definicija tih konstanti. Kasnije cemo
>> verovatno da dodamo #ifndef strukturu u constants.hpp, da budemo u skladu
>> sa praksom, ali to nije sad najhitnija stvar --- kod momentalno radi
>> ispravno i bez toga. :-)
>>
>> > pa bih cenio bilo kakvu pomoć koju možete da mi pružite.
>>
>> Jaroslave, jel' bilo neceg netrivijalnog oko ubacivanja koda u Visual
>> Studio? Jel' imas neki hint za Dusana?
>>
>> :-)
>> Marko
>>
>>
>> Dr. Marko Vojinovic
>> Group for Gravitation, Particles and Fields
>> Institute of Physics
>> University of Belgrade
>> ======================
>> home page: www.markovojinovic.com
>> e-mail:    vmarko at ipb.ac.rs
>>
>>
>>
>> On Sun, 20 Feb 2022, Dusan Cvijetic wrote:
>>
>> > Pozdrav,
>> >
>> > Počeo sam da radim drugi zadatak kao što smo pričali, i imam problem sa
>> pokretanjem koda. Nisam ništa menjao u fajlovima, samo sam napravio
>> projekat u Visual Studio-u 2019
>> > (File/New/Project from existing code, sa svim default opcijama), i kada
>> pokušam da ga pokrenem, kompajler mi baci gomilu grešaka. Da li je u ovom
>> trenutku generalno nemoguće pokrenuti
>> > main.cpp, ili ja pravim neku grešku?
>> >
>> > Koliko sam video, greške koje mi kompajler baca se uglavnom odnose na
>> imena koja ne može da identifikuje, a koja dolaze iz standardne biblioteke.
>> Video sam da je using namespace std
>> > iskorišćen na početku triangulator.hpp fajla, ali me je zanimalo zašto
>> ta komanda ne stoji na početku svakog .hpp fajla? Da li bi to bilo
>> redudantno?
>> >
>> > Kada smo na fakultetu radili C++, uvek smo #include direktive koristili
>> da uvezemo neke header-e u trenutni fajl, no video sam da se u kodu ovde
>> nekada uključuju .hpp, a nekada .cpp
>> > fajlovi. Da li postoji neko pravilo kada treba da uključujem .hpp, a
>> kada .cpp fajlove?
>> >
>> > Još jedna od praksi koje su nas uvek terali da ispoštujemo je dodavanje
>> zaštite u zaglavlja u vidu #ifndef - #define - #endif strukture (tražili su
>> nam da ne koristimo #pragma once jer
>> > zavisi od kompajlera) kako bismo izbegli višestruku definiciju pri
>> uključivanju zaglavlja. Da li mi koristimo neku drugu zaštitu za zaglavlja?
>> Dosta grešaka koje mi je kompajler bacio
>> > je bilo zbog redefinicije promenljivih, pa pretpostavljam da je to zbog
>> odsustva zaštite zaglavlja.
>> >
>> > Na par mesta su se pojavila imena koja ranije nisu definisana.
>> Pretpostavljam da je to zato što još uvek nemamo ceo kod, pa nisu sve
>> funkcije i promenljive uvedene, no hteo sam ovde da
>> > spomenem i te greške za slučaj da su problem samo kod mene.
>> >
>> > Na kraju sam pokušao da izmenim kod na mestima koje sam gore spominjao,
>> samo da vidim mogu li ga naterati da se pokrene, i iako je kompajler
>> prestao da se javlja, linker je počeo da mi
>> > baca greške. Pretpostavljam da postoji neko sistematičnije rešenje za
>> moje probleme (do sada mi se linker javljao samo kada ne startujem projekat
>> u VS kako treba), pa bih cenio bilo
>> > kakvu pomoć koju možete da mi pružite.
>> >
>> > Pozdravi,
>> > Dušan
>> >
>> >
>> > пет, 11. феб 2022. у 22:34 Marko Vojinovic <vmarko at ipb.ac.rs> је
>> написао/ла:
>> >
>> >       Upoznati se sa osnovnom klasom Color i njenim child-klasama kroz
>> problem dodeljivanja boje UniqueIDColor datom delu simplicijalnog
>> kompleksa, odnosno celom kompleksu:
>> >
>> >          bool UniqueIDColor::colorize_all_simplices( SimpComp* G , int
>> level );
>> >          bool UniqueIDColor::colorize_entire_complex( SimpComp* G );
>> >
>> >          Input: pointer na simplicijalni kompleks, nivo "k" za
>> k-simplekse koje treba obojiti.
>> >          Output: true ako je uspesno izvrseno bojenje, false ako je
>> doslo do neke greske.
>> >
>> >       F-ja colorize_all_simplices() treba da prodje kroz sve simplekse
>> iz G.elements[level] (ili se pise G->elements[level]?), i svakom od njih da
>> dodeli instancu boje klase
>> >       UniqueIDColor. F-ja colorize_entire_complex() treba da izvrsi
>> prethodnu f-ju za sve vrednosti 0 <= level <= D. Nakon toga, zakomentariti
>> kod koji dodeljuje ovu boju u seed
>> >       f-ji seed_single_triangle() (boju boundary ne dirati, ona treba
>> da ostane u seed f-ji), i umesto toga u main() f-ji eksplicitno pozvati
>> colorize_entire_complex() da oboji
>> >       kompleks za trougao, odmah nakon sto se ovaj instancira.
>> >
>> >
>> >       :-)
>> >       Marko
>> >
>> >
>> >       Dr. Marko Vojinovic
>> >       Group for Gravitation, Particles and Fields
>> >       Institute of Physics
>> >       University of Belgrade
>> >       ======================
>> >       home page: www.markovojinovic.com
>> >       e-mail:    vmarko at ipb.ac.rs
>> >
>> >
>> >       --
>> >       QGHG-it-dev-list mailing list
>> >       QGHG-it-dev-list at ipb.ac.rs
>> >       http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
>> >
>> >
>> >--
>> QGHG-it-dev-list mailing list
>> QGHG-it-dev-list at ipb.ac.rs
>> http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
>>
> --
> QGHG-it-dev-list mailing list
> QGHG-it-dev-list at ipb.ac.rs
> http://mail.ipb.ac.rs/mailman/listinfo/qghg-it-dev-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ipb.ac.rs/pipermail/qghg-it-dev-list/attachments/20220221/eaf0279e/attachment-0001.htm>


More information about the QGHG-it-dev-list mailing list