![]() |
![]() |
|
Programiranje Programski jezici, tehnike, alatke... |
![]() |
|
Alatke vezane za temu | Vrste prikaza |
![]() |
#381 |
Član
Član od: 10.11.2007.
Poruke: 62
Zahvalnice: 46
Zahvaljeno 2 puta na jednoj poruci
|
![]()
Здраво,
Edit1->Text = Edit1->Text + UPC[cifra]; Edit1->Text = Edit1->Text + UPC[cifra|0]; //UPC je niz tipa String. //Promjenljiva cifra je tipa integer i, predstavlja indeks člana niza. 1) Раде ли ове двије линије исту ствар? 2) Чему служи ова усправна црта? 3) Какав би био резултат да умјесто 0, стоји 1, или неки други цио број? |
![]() |
![]() |
![]() |
#382 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.132
Zahvalnice: 2.058
Zahvaljeno 4.911 puta na 2.848 poruka
|
![]()
Uspravna crta predstavlja bitsku operaciju za OR-ovanje (bitsko "ili"). Rezultat OR-ovanja bilo kog broja s nulom je taj broj, tako da te dve linije rade isto.
OR-ovanje s jedinicom će setovati najniži bit na jedan bez obzira šta je bilo na tom bitu. To neće izmeniti neparne brojeve (npr. 3 OR 1 = 3, ili binarno 0x11 OR 0x01 = 0x11), ali će izmeniti parne (npr. 2 OR 1 = 3, ili binarno 0x10 OR 0x01 = 0x11), tako da nije isto kao navedeni primer. (Ne mešaj bitsko OR-ovanje sa logičkim OR-ovanjem koje se predstavlja sa dve uspravne crte, i kao rezultat vraća TRUE ili FALSE za ceo izraz, npr FALSE ili TRUE = TRUE; podseti se tautologije iz prve godine srednje škole). |
![]() |
![]() |
Sledeći korisnik se zahvaljuje korisniku voodoo_ na korisnoj poruci: | ||
Alan (9.6.2017) |
![]() |
#383 |
Član
Član od: 13.3.2017.
Poruke: 55
Zahvalnice: 30
Zahvaljeno 3 puta na 3 poruka
|
![]()
Imam pitanje o razlici između kopirajućeg i premeštajućeg konstruktora. Da li se kopirajući uvek poziva kada mu je argument lvrednost, a premeštajući kada je njegov argument dvrednost, ili to kompajler nekako određuje koji poziva?
|
![]() |
![]() |
![]() |
#384 |
Starosedelac
Član od: 23.2.2006.
Lokacija: Tamo gde su kuće od čokolade i prozori od marmelade....
Poruke: 1.579
Zahvalnice: 195
Zahvaljeno 301 puta na 171 poruka
|
![]()
Uz tri slučaja
Prvi: Type a = std::move(b) Drugi: Kod prenosa argumenata, npr imas fju void foo(Type t); i poziv foo(std::move(temp)); Treci: Kod vracanja vrednosti iz fje, kompajler ce implicitno pozvati move ctor ukoliko postoji. Kod:
Type foo() { Type a; return a; } --- Type b = foo(); |
![]() |
![]() |
Sledeći korisnik se zahvaljuje korisniku Teva na korisnoj poruci: | ||
NovaNada (20.11.2017) |
![]() |
#385 |
Član
Član od: 13.3.2017.
Poruke: 55
Zahvalnice: 30
Zahvaljeno 3 puta na 3 poruka
|
![]()
Iz kojih izvora ste učili STL i šablone?
cppreference.com ili iz neke knjige? |
![]() |
![]() |
![]() |
#386 |
Starosedelac
Član od: 23.2.2006.
Lokacija: Tamo gde su kuće od čokolade i prozori od marmelade....
Poruke: 1.579
Zahvalnice: 195
Zahvaljeno 301 puta na 171 poruka
|
![]()
Za templejte imaš staru al po meni i dalje mnogo jaku knjigu Aleksandresku
E sad što se tiče samog STLa, ja lično sam učio kroz primenu al uvek imaš cppref otvoren za konsultacije ![]() |
![]() |
![]() |
![]() |
#387 |
Veteran
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
|
![]()
Možda se neki od pratilaca ove sobe sećaju da sam pre dosta vremena (2012.) svašta pisao u ovoj temi protiv C++-a, protiv njegovog kreatora i pravca promena. Toliko sam se istrtljao da me je sad sramota šta sam pisao i čudim se čudu kako sam bio u stanju da smislim to što sam napisao. Dobio sam čak i dve zahvalnice (jedn od voodoo-a) koje apsolutno nisam zaslužio. Bio sam vrlo ostrašćen, a znanja da potkrepe takve stavove nisam imao. Sada se iskreno kajem što sam to pisao, bio sam glup.
![]() Zašto sam se sada setio toga? Zato što sada želim da budem C++ programer. Jeste pojeo sam go*no. Shvatio sam da sam bio na tamnoj strani. Zarađivao sam pare programirajući u Javi. I posle iskustva dozlogrdilo mi je stanje u Java svetu. Stanje Java ekosistema je skoro na nivou stanja JavaScript ekosistema, koji je već prokazan na Internetu mnogo puta. Sa svakim novim updejtom neke od najkorišćenijih biblioteka veličina nepotrebnog koda u njima se povećava, nivoi apstrakcije se dižu još više. Hipsteraj raste nekontrolisano. Zato imam neku iluziju da C++ svet bolje stoji po tom pitanju uprkos "nedostacima" jezika. U poslednje vreme sam gledao dosta predavanja sa raznih C++ konferencija, ispratio sam dosadašnji razvoj jezika i tendencije koje propagiraju najuticajniji članovi C++ zajednice. To sve ide u dobrom smeru, podjednako se ide i prema većoj lakoći korišćenja i prema održavanju ili unapređivanju performansi. Jeste postoje nedostaci, ali sad mi se čini da su to uglavnom bile istoriske nužnosti bez ozbiljnih krivaca. Dakle pošto sam rešio da radim kao C++ programer moram da se pripremim. Nisam ga učio na fakutetu niti sam radio profesionalno sa jezikom. Zato moram da imam neki mali projekat da pokažem kao argument za svoje znanje. Rešio sam da svoj diplomski rad (koji sam radio u C#-u jer mi se Java smučila) prepišem u C++. Mogu vam reći da se plan za sada odvija vrlo uspešno. Ono što je bilo neophodno da utvrdim je priroda veza između objekata u mom programu, to jest koje reference (pokazivači) su vlasničke prirode, a koji su pozajmice. I uspeo sam u tome. Od smart pointera koristim samo std::unique_ptr<T> (on samo poziva delete kada se sam destruktuje). Ostale veze između objekata su obični pointeri jer su to pozajmljene veze i objekti koji zajme veze neće potrajati duže od vlasnika pozajmljenih objekata. Objekte privremene prirode deklarišem direktno na steku i samo dajem obične pointere drugim funkcijama. Na više mesta u programu se prave svojevrsne linked liste od objekata koji su svi na steku jer pattern koji koristim čini to bezbednim. U odnosu na C# verziju, mislim da se broj heap alokacija privremenih objekata smanjio nekoliko puta, ostao je samo gde imam neke privremene liste. Tokom prepisivanja i obraćanje pažnje na vlasništvo na objektima (koje nije bilo mnogo teško, na moje iznenađenje, samo sam trebao da budem konzistentan) primetio sam i neke sitne nelogičnosti u originalnom C# kodu koje se tiču vlasništva. Neki delovi su se oslanjali na automatsku memoriju. Tu sam samo morao da promislim kako da opravim, ali to je minoran deo celog poduhvata. Završio sam prepisivanje, sada sam u fazi rešavanja bagova i grešaka. Trenutno imam neki bag koji mi uopšte nije jasan, ali je u pitanju greška koju prijavljuje jedna eksterna biblioteka koju koristim, koja nema veze sa nepravilnim upravljanjem memorijom. Dakle još nisam došao do momenta kada program radi od početka do kraja. Pokretao sam ga do sada sa valgrindom i nije projavljivao curenje, ali definitivno ću biti siguran kad bude 100% proradio. Eto, ova moja pisanija bi se mogla nazovati "Ispovest bivšeg hejtera C++a". A na tu promenu me je nateralo ništa drugo od hejt prema ekosistemu suparničkog jezika. Klin se klinom izbija. ![]() Poslednja ispravka: ivan90BG (9.1.2019 u 19:03) |
![]() |
![]() |
![]() |
#388 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.132
Zahvalnice: 2.058
Zahvaljeno 4.911 puta na 2.848 poruka
|
![]()
Uvek imaj na umu da pre-C++11 i današnji C++ baš i nisu ista stvar
![]() Ja više ne favorizujem nijedan jezik jer sam se nagledao toliko loše napisanog koda čije probleme nikakvi sintaksni ni bibliotečni mehanizmi mogu da nadomeste, tako da je bitnije ko radi a ne u čemu ![]() |
![]() |
![]() |
![]() |
#389 |
Starosedelac
Član od: 2.6.2008.
Lokacija: Vršac
Poruke: 1.752
Zahvalnice: 92
Zahvaljeno 311 puta na 294 poruka
|
![]()
Odlično samo ti je ostalo da nam ovde dostaviš svoj program u finalnoj verziji pa da vidimo šta radi i zašta se koristi ili samo radi a za ništa se ne koristi ili šta već....
|
![]() |
![]() |
![]() |
#390 |
Veteran
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
|
![]()
Rečeno učinjeno.
![]() Program je kompletan kompajler za sitan programski jezik C-ovske sintakse, ima funkcije strukture, nizove, numeričke tipove, malo OOP-a, vidi se u primerima. Ima Garbage Collector, doduše jednostavan i nekoristan u realnom svetu, baziran na staroj metodi koja se najbrže implementira. Kompajlira u mašinski kod putem LLVM biblioteke. Parsira uz pomoć Bison-a. Sve je na Github-u: https://github.com/irpbc/mj - Ovo je originalna C# verzija https://github.com/irpbc/mj-compiler-cpp - A ovo je C++ verzija. https://github.com/irpbc/mj-rt - Ovo je C++ kod u kome je implementiran GC. On je od početka bio C++, jer GC mora da bude native kod. U folderu testCode su reprezentativni primeri. Upozorenje, ako želite da ga pokrenete i da pokrenete kompajlirane programe, pročitajte uputstva za kompajler i za GC projekat, ima prilična procedura. Poslednja ispravka: ivan90BG (10.1.2019 u 18:06) |
![]() |
![]() |
![]() |
#391 |
Član
|
![]()
LJudi, kako bi bio kod za sortiranje sporedne dijagonale kvadratne matrice u opadajucem redosledu? Deo u FOR petlji....
|
![]() |
![]() |
![]() |
#392 | |
Član
Član od: 28.8.2012.
Poruke: 106
Zahvalnice: 27
Zahvaljeno 9 puta na 9 poruka
|
![]() Citat:
Kod:
for(int i=0; i<n-1;i++){ for(int j=i+1; j<n;j++){ if(a[i][n-1-i]<a[j][n-1-j]){ int temp=a[i][n-1-i]; a[i][n-1-i]=a[j][n-1-j]; a[j][n-1-j]=temp; } } } ![]() |
|
![]() |
![]() |
Sledeći korisnik se zahvaljuje korisniku Wolf72 na korisnoj poruci: | ||
Nikola Stankovic (10.3.2019) |
![]() |
#393 |
Novi član
Član od: 2.6.2010.
Poruke: 5
Zahvalnice: 2
Zahvaljeno 0 puta na 0 poruka
|
![]()
I ako moze pomoc kod mene za C, treba mi program koji treba da stampa broj maksimalnih ocena studenata, evo koda sa sve komentarima:
Kod:
#include<stdio.h> int main() { int n=1; //broj studenata sa najvisom ocenom int i; //brojac elemenata niza int max; //maksimalna ocena int o[14] = { 3,6,6,6,7,10,10,8,10,9,9,10,6,7 }; //niz sa ocenama max = o[0]; /*prvi element niza prooglasen maksimumom*/ for (i = o; i <= 14; i++) { if (o[i + 1] > o[i]) { /*ako je susedni element veci, bice proglasen maksimumom, a n se vraca na 1*/ max = o[i + 1]; n = 1; } else if (o[i+1]<o[i]) /*ako je susedni element manji, nastavi za brojenjem*/ { continue; }else{ /* u ostalim slucajevima, povecaj broj maksimalnih ocena za 1*/ n++; } printf("%d", n); //stampaj broj maksimalnih ocena } return 0; } |
![]() |
![]() |
![]() |
#394 |
Veteran
Član od: 5.11.2005.
Poruke: 822
Zahvalnice: 177
Zahvaljeno 197 puta na 152 poruka
|
![]() Kod:
#include <stdio.h> int main() { int n=1; int i; int max; int o[14] = { 3,6,6,6,7,10,10,8,10,9,9,10,6,7 }; max = o[0]; for (i = o; i <= 14; i++) // i = nula, a ne slovo O // nizovi se indeksiraju od 0, maksimalni index je 13, tj o[13] je 7; znaci i < 14 { if (o[i + 1] > o[i]) // Ovo ne moze: kada je i = 13, o[i + 1] je o[14], ko zna sta je na toj adresi u memoriji // posto je i <= 14, ocitace se i o[15] kada je i = 14, takodje ko zna sta je na toj adresi // Ako si stigao do pointera trebalo bi da razumes zasto { max = o[i + 1]; n = 1; } else if (o[i+1] < o[i]) { continue; } else { n++; } printf("%d\n", n); // Ovo je u for petlji, stampace 15 puta } return 0; } Kod:
#include <stdio.h> int main() { int n = 0; int i; int max; int o[14] = { 3,6,6,6,7,10,10,8,10,9,9,10,6,7 }; max = 1; // Ovo bih inicijalizovao na vrednost najmanje ocene, pretpostavljam 1 for (i = 0; i < 14; i++) { if (o[i] > max) { max = o[i]; n = 1; } else if (o[i] == max) { n++; } } printf("Max ocena: %i, broj studenata sa max ocenom: %i.\n", max, n); return 0; } // => Max ocena: 10, broj studenata sa max ocenom: 4. |
![]() |
![]() |
![]() |
#395 |
Član
|
![]()
Kako bi glasio kod u posebnoj funkciji za sortiranje vrste kvadratne matrice? Trebalo bi da se u toj funkciji sortira elemente prosledjenog niza svake vrste matrice iz glavnog programa?
Poslednja ispravka: Nikola Stankovic (20.3.2019 u 11:25) |
![]() |
![]() |
![]() |
#396 |
Novi član
Član od: 6.3.2018.
Poruke: 24
Zahvalnice: 3
Zahvaljeno 0 puta na 0 poruka
|
![]()
Potrebna mi je pomoc oko sledeceg koda
(greska je u delu koji je stavljen pod komentarom): https://paste.ofcode.org/idiTDQFPerun85JGhtbTsB |
![]() |
![]() |
![]() |
Bookmarks sajtovi |
Tagovi |
c++, how to, pomoc, programiranje |
Alatke vezane za temu | |
Vrste prikaza | |
|
|