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

Dusan Cvijetic dusancvijetic2000 at gmail.com
Mon Feb 21 14:32:41 CET 2022


Pozdrav,

g++ je uspeo da ga kompajlira, i uspeo sam da namestim da Visual Studio
Code koristi g++ kompajler za rad, tako da ću za sada da radim sa tom
konfiguracijom. Pošto sam već dosta vremena izgubio na ovo, baciću se na
pisanje koda, a nadam se da ću u nekom trenutku da osposobim Visual Studio.

Hvala Vam na pomoći!

Pozdravi,
Dušan

пон, 21. феб 2022. у 05:53 Marko Vojinovic <vmarko at ipb.ac.rs> је написао/ла:

>
> Pozdrav Dusane,
>
> Ovako, prvo i najvaznije --- za C++ kod ne treba da upotrebljavas C
> kompajler, nego C++ kompajler. Procitaj pazljivo moj i Nenadov e-mail ---
> ako uradis:
>
>    g++ main.cpp -o izvrsi-me
>
> sve bi trebalo da radi kako treba, dok ako uradis:
>
>    gcc main.cpp -o izvrsi-me
>
> ne treba da se cudis da ce da ti prijavi gomilu gresaka. I kod mene
> kompajliranje gcc-om prijavljuje sve te greske, manje-vise identicne kao
> kod tebe. U uputstvu za gcc pise izmedju ostalog sledece:
>
> ======
> Compiling C++ Programs
>
> C++ source files conventionally use one of the suffixes .C, .cc, .cpp,
> .CPP, .c++, .cp, or .cxx; C++ header files often use .hh, .hpp, .H, or (for
> shared template code) .tcc; and preprocessed C++ files use the suffix .ii.
> GCC recognizes files with these names and compiles them as C++ programs
> even if you call the compiler the same way as for compiling C programs
> (usually with the name gcc).
>
> However, the use of gcc does not add the C++ library.  g++ is a program
> that calls GCC and automatically specifies linking against the C++ library.
> ======
>
> Obrati paznju na poslednju recenicu --- ako pokusas da kompajliras kod sa
> gcc, on nece da ulinkuje standardnu C++ biblioteku, i za ocekivati je da
> prijavi brdo gresaka. Ali ako kompajliras kod sa g++, onda ce C++
> biblioteka da bude automatski ulinkovana, i sve bi trebalo da prodje kako
> treba.
>
> Moj predlog je da uradis sledece --- sve sto si menjao i editovao u kodu
> skloni u neki drugi direktorijum da ti ne smeta, a glavni git direktorijum
> ocisti i uradi jedan git pull, da imas identicnu verziju koda koja je
> trenutno u repository-ju. Onda probaj da kompajliras kod iz komandne linije
> kao sto smo Nenad i ja napisali --- samo pazi da koristis g++ a ne gcc. I
> onda vidi da li ti tada prijavljuje bilo kakve greske. Kad to budes uradio
> javi kako je proslo, pa cemo onda da gledamo dalje.
>
> Sto se tice gresaka koje je izbacio Visual Studio, moj utisak je da su i
> one vezane za odsustvo standardne C++ biblioteke, izgledaju mi kvalitativno
> slicno kao greske koje prijavljuje gcc. Ali nemam instalaciju VS da probam,
> pa to ne mogu da reprodukujem.
>
> Verzija kompajlera koju imam ovde je (GCC) 8.5.0 20210514 (znaci sredina
> prosle godine). To jeste novije od tvoje verzije, ali cisto sumnjam da tu
> ima neke supstancijalne razlike --- nas kod ne koristi nikakve novotarije i
> neke ultra-nove opcije kompajlera, pa bi i tvoja verzija g++ trebalo da
> radi jednako dobro kao i moja.
>
> I za kraj --- kad hoces da pokupis prijavljene greske u fajl, imaj na umu
> da gcc i g++ ne ispisuju greske na stdout nego na stderr (sto je i
> logicno). Pa posto je file-descriptor za stderr "2", redirect u fajl se
> radi ovako:
>
>    gcc main.cpp -o izvrsi-me 2> greske.txt
>
> i isto za g++, ako ti bude nesto prijavio. Ne znam da li ove redirekcije
> rade i pod Windows-om (pod Linux-om je to standard), ali svejedno probaj,
> mozda ce da radi.
>
> :-)
> 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,
> >
> > Prethodna poruka se zaglavila zbog veličine, pa je šaljem ponovo ispod,
> s tom razlikom što se sada svi fajlovi koje spominjem nalaze na
> > linku:
> https://studentetfbgacrs-my.sharepoint.com/:f:/g/personal/cd190071d_student_etf_bg_ac_rs/EgrQ3kxftYdGv8RepyWHlyUBqRut7KlmIBah1WJ8MFij_g?e=xBd97t,
> kako bih smanjio veličinu samog
> > mejla.
> >
> > Pozdravi,
> > Dušan
> >
> >
> > ---------- STARA PORUKA ----------
> >
> > Pozdrav,
> >
> > Šaljem u prilogu kod u kome sam ispravio sve stvari koje sam spomenuo
> (morao sam da dodam #include constants u color.hpp, svuda sam na početak
> stavio using namespace std; svuda sam
> > stavio #ifndef-#define-#endif zaštitu, i morao sam još dodatno da
> zakomentarišem sve pozive log_report funkcije u seed.cpp pošto je nije
> prepoznavao). Takođe, u zipovanom fajlu se
> > nalazi nova .csv tabela sa izveštajem o greškama koje mi prijavljuje sa
> novim kodom. Sada su to isključivo greške koje mi baca linker. Svi ovi
> fajlovi su u zad_2_nove_greske.rar.
> >
> > Pored toga, šaljem i output_prepravljeno.txt, u kome se nalazi izlaz
> konzole za komandu gcc main.cpp -o izvrsi-me > output.txt. Da napomenem
> samo, nije hteo ništa da mi upiše u
> > output.txt sam (ni sa >, ni sa >>), pa sam ručno prekopirao sadržaj
> konzole.
> >
> > U fajlu output_staro.txt se nalazi izlaz za istu komandu, samo sam je tu
> pozvao za originalan kod sa github-a. Imao sam isti problem pri ispisu,
> takođe je ručno kopirano.
> >
> > Poslednja napomena, verzija gcc-a je  gcc (MinGW.org GCC-6.3.0-1) 6.3.0.
> >
> > Nadam se da ovo pruža više detalja.
> >
> > Nisam želeo da pushujem ovako haotičan kod da ne bi došlo do zabune,
> javite ako ipak treba to da uradim.
> >
> > Pozdravi,
> > Dušan
> >
> > нед, 20. феб 2022. у 22:16 Dusan Cvijetic <dusancvijetic2000 at gmail.com>
> је написао/ла:
> >       Pozdrav,
> >
> > Šaljem u prilogu kod u kome sam ispravio sve stvari koje sam spomenuo
> (morao sam da dodam #include constants u color.hpp, svuda sam na početak
> stavio using namespace std; svuda
> > sam stavio #ifndef-#define-#endif zaštitu, i morao sam još dodatno da
> zakomentarišem sve pozive log_report funkcije u seed.cpp pošto je nije
> prepoznavao). Takođe, u zipovanom
> > fajlu se nalazi nova .csv tabela sa izveštajem o greškama koje mi
> prijavljuje sa novim kodom. Sada su to isključivo greške koje mi baca
> linker. Svi ovi fajlovi su u
> > zad_2_nove_greske.rar.
> >
> > Pored toga, šaljem i output_prepravljeno.txt, u kome se nalazi izlaz
> konzole za komandu gcc main.cpp -o izvrsi-me > output.txt. Da napomenem
> samo, nije hteo ništa da mi upiše u
> > output.txt sam (ni sa >, ni sa >>), pa sam ručno prekopirao sadržaj
> konzole.
> >
> > U fajlu output_staro.txt se nalazi izlaz za istu komandu, samo sam je tu
> pozvao za originalan kod sa github-a. Imao sam isti problem pri ispisu,
> takođe je ručno kopirano.
> >
> > Poslednja napomena, verzija gcc-a je  gcc (MinGW.org GCC-6.3.0-1) 6.3.0.
> >
> > Nadam se da ovo pruža više detalja.
> >
> > Nisam želeo da pushujem ovako haotičan kod da ne bi došlo do zabune,
> javite ako ipak treba to da uradim.
> >
> > Pozdravi,
> > Dušan
> >
> > нед, 20. феб 2022. у 21:10 Nenad Korolija <nenadko at gmail.com> је
> написао/ла:
> >       Ja koristim:
> > g++ -g -w -std=c++14 main.cpp -o main
> > Mozda baca greske zato sto ne zna sta je auto i slicne stvari. Ne mogu
> da procenim, bez da uradis nesto tipa gcc main.cpp -o izvrsi-me >
> output.txt, pa da nam posaljes, ili
> > da kopiras iz prozora u email.
> >
> > Pozdrav,
> > Nenad
> >
> > On Sun, Feb 20, 2022 at 8:59 PM Dusan Cvijetic <
> dusancvijetic2000 at gmail.com> wrote:
> >       Pozdrav,
> >
> > Malo sam se prerano poradovao, sada mi i Code::Blocks baca iste greške
> kao i Visual Studio. Pokušao sam i iz konzole, komandom gcc main.cpp -o
> izvrsi-me, no i tu baca
> > grešku. Trenutno sam ponovo zaglavljen, i ne poznajem dovoljno
> funkcionisanje prevodilaca, pa ne znam ni kako da počnem ovo da rešavam.
> >
> > Pozdravi,
> > Dušan
> >
> > нед, 20. феб 2022. у 20:31 Dusan Cvijetic <dusancvijetic2000 at gmail.com>
> је написао/ла:
> >       Pozdrav,
> >
> > Hvala Vam na odgovorima.
> >
> > Šaljem u prilogu tabelu sa greškama koje mi baca Visual Studio. U pravu
> ste, greške proističu iz nekog dela mog importa koda, ili nekih podešavanja
> VS, pošto kod
> > radi kada ga pokrećem koristeći Code::Blocks i GNU GCC kompajler umesto
> onog ugrađenog u VS. Koristiću za sad Code::Blocks, ali bi mi značila
> pomoć, ukoliko neko
> > ume da rastumači šta mi se dešava, pošto sam na Visual Studio navikao i
> prijatnije mi je tamo da radim.
> >
> > Pozdravi,
> > Dušan
> >
> >
> >
> > нед, 20. феб 2022. у 07:13 Marko Vojinovic <vmarko at ipb.ac.rs> је
> написао/ла:
> >
> >       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
> >
> > --
> > 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/76fc4faf/attachment-0001.htm>


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