|
Programiranje Programski jezici, tehnike, alatke... |
|
Alatke vezane za temu | Vrste prikaza |
13.4.2014, 0:00 | #301 |
V.I.P. Programiranje
|
Re: How to... C++
Znam da je post od pre 8 dana i da si verovatno već našao rešenje, ali bih svejedno da napišem ovde za slučaj da nekom zatreba.
Elem, možeš da definišeš kriterijume poređenja struktura na dva načina. Prvi je da samo overloaduješ operator < unutar strukture, npr. ovako: Kod:
struct mojaStruktura { int x, y; bool operator< (const mojaStruktura &druga) const { // ovde može bilo koji kriterijum, ja sam cepio prvo po x pa po y return (x == druga.x ? y < druga.y : x < druga.x); } }; ... std::set<mojaStruktura> skupMojihStrukturi; Kod:
struct mojaStruktura { int x, y; }; struct komparator { bool operator()(const mojaStruktura &a, const mojaStruktura& b) const { return (a.x == b.x ? a.y < b.y : a.x < b.x); } } ... // drugi template parametar je struktura koja se koristi za komparaciju: std::set<mojaStruktura, komparator> skupMojihStruktura; Kada hintuješ insert() metodi gde da ubaci element, može efikasno to da uradi ako je hint na pravom mestu (opisano je na stranici). To je zbog toga što je u ovim skupovima garantovano da su elementi poređani relacijom poretka koju definiše neki komparator. Da bi se održavao ovakav stalno poređan skup i da bi u isto vreme mogao da ubacuješ nove elemente, u većini slučajeva koristi se neko samobalansirajuće binarno stablo pretrage, kao na primer Adelson/Velski/Landis stablo ili crno-crveno stablo, koje garantuje da možeš u logaritamskom vremenu (tj. proporcionalno logaritmu veličine skupa) da ubacuješ, brišeš, i pretražuješ unutar tog skupa. Ako funkciji insert() daš ispravan hint, ona neće morati da radi celu jednu O(log n) operaciju da nađe za koji čvor u stablu treba da zakači tvoj element, već će to uraditi odmah tu gde si rekao (plus operacija rebalansiranja stabla). To ti u suštini daje O(1) ubacivanje, što, doduše, može da bude primetno tek sa stvarno velikim brojem elemenata, kada log2(n) postane značajan broj. (Za milion elemenata, recimo, log2(n) je negde blizu 20, što znači da za pretragu ovolikog stabla treba izdvojiti u najgorem slučaju oko 20 upoređivanja—naravno, pod uslovom da je stablo balansirano kao što bi trebalo da bude sa std::set-om tj. da visina stabla raste asimptotički sporije nego broj elemenata). Nadam se da sam razjasnio, ako sam bio malo zbunjujuć reci. Poz |
Sledećih 2 korisnika se zahvaljuje korisniku Geomaster na korisnoj poruci: | ||
Futuristic (14.4.2014), Oggy (13.4.2014) |
18.4.2014, 0:58 | #302 |
Novi član
Član od: 26.12.2011.
Lokacija: 022
Poruke: 21
Zahvalnice: 3
Zahvaljeno jedanput na jednoj poruci
|
Re: How to... Visual Basic
Pozdrav svima, nov sam u programiranju, tacnije ne znam skoro nista. Skinuo sam sa neta neke knjige i poceo da citam. Sa Microsoft-ovog sajta sam skinuo Microsoft Visual C++ 2010 Express i krenuo da unosim kodove.
Koji god kod upisem ne mogu da build-ujem. Mislio sam da lose upisujem kodove da negde gresim, pa sam skinuo sa neta gotove kodove i opet ista stvar. Onda sam probao i "Drag and Drop'' opciju, otvorio Form1, ubacio dugme, prozor za text... otisao na Debug, i naravno isto. Uz poruku cu poslati sliku da vidite o cemu se radi. Bicu zahvalan za svaki savet i pomoc. Slike: http://www.dodaj.rs/f/1S/2/5lhbnbF/primer-11.jpg http://www.dodaj.rs/f/1z/Ls/3gs59ssw/priemr-22.jpg http://www.dodaj.rs/f/l/Oi/3S0mlVTS/kada-klinem-da.jpg Veliki pozdrav |
18.4.2014, 3:07 | #303 |
Kekule Mekule
|
Re: How to... C++
Otvori First_App.cpp i #include "Form1.h" preimenuj u #include "Losmi.h"
|
Sledeći korisnik se zahvaljuje korisniku Andross na korisnoj poruci: | ||
Strucnjak022 (18.4.2014) |
18.4.2014, 18:19 | #304 |
Novi član
Član od: 26.12.2011.
Lokacija: 022
Poruke: 21
Zahvalnice: 3
Zahvaljeno jedanput na jednoj poruci
|
Re: How to... C++
Hvala Andross, ali izgleda da je problem samo sa programom Microsoft Visual C++ 2010 Express. Bilo sta da upisem izbacuje gresku.
Skinuo sam sa neta Dev C++ i mogu sve normalno da radim. Hvala u svakom slucaju |
19.4.2014, 15:44 | #305 |
Član
Član od: 10.1.2010.
Lokacija: Bos. Gradiska
Poruke: 143
Zahvalnice: 51
Zahvaljeno 32 puta na 18 poruka
|
Re: How to... C++
Pozdrav druzino, imam jedan banalan problem ali google ne pomaze. Pravim konvertor iz dekadnog u binarni brojni sistem koji treba da radi sa velikim brojem cifara. Cilj je da napravim da pretvara i cjelobrojni i decimalni dio. Zasad sam uradio cjelobrojni i izlaz u konzoli je dobar, medjutim kad ga napravim da ispisuje u fajl zapise nesto tipa 1^A11^A1^@0^@0^@ . Ovo je moj kod:
Kod:
#include <iostream> #include <fstream> using namespace std; string reverse(string s){ string res=""; for(int i=s.length()-1;i>=0;i--) res +=s[i]; return(res); } int main() { string s,so,sa,co; ifstream file; file.open("ulaz.txt"); file >> s; file.close(); sa=s; int b=0,c,x=0; while(sa!="0"){ for(int i = 0;i<sa.length();i++){ if((sa[i]-'0'+x*10)/2>=0){ c=(sa[i]-'0'+x*10)/2; so+=to_string(c); x=(sa[i]-'0'+x*10)%2; } else so+="0"; } co+=x; if(so[0]=='0' && so.length()!=1) so=so.substr(1,so.length()); sa=so; so=""; co+=to_string(x); x=0; } ofstream os; os.open("izlaz.txt"); os<<reverse(co); os.close(); return 0; } |
24.4.2014, 0:46 | #306 |
Veteran
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
|
Re: How to... C++
Razlog zašto ti izbacuje đubre u fajlu je taj što ti fali to_string u liniji co+=x (treba da bude co+=to_string(x))
Izgleda da si srednja škola, tamo profesori vole da uče decu da se svim promenljivama trebaju davati imena od jednog ili dva slova koja veze nemaju sa svrhom promenljive , ni kod mene nije bilo ništa drugačije. Pa te molim da malo objasniš algoritam i preimenuješ promenljive. Posle dodatog to_string-a daje normalan izlaz ali ja ne vidim vezu izlaza sa binarnom reprezentcijom unetog decimalnog broja, mislim da algoritam nije dobar. |
Sledeći korisnik se zahvaljuje korisniku ivan90BG na korisnoj poruci: | ||
Geomaster (25.4.2014) |
24.4.2014, 23:50 | #307 |
Član
Član od: 10.1.2010.
Lokacija: Bos. Gradiska
Poruke: 143
Zahvalnice: 51
Zahvaljeno 32 puta na 18 poruka
|
Re: How to... C++
Taj je viska
|
29.4.2014, 0:57 | #308 |
Član
Član od: 26.5.2007.
Poruke: 278
Zahvalnice: 16
Zahvaljeno 102 puta na 66 poruka
|
Re: How to... C++
Poslusaj sto ti kaze ivan90BG. Imenuj promenjive i funkcije prema svrsi. Short sweet and to the point - self explainatory.
|
29.4.2014, 18:23 | #309 |
V.I.P. Programiranje
|
Re: How to... C++
U ovom slučaju je savet sasvim na mestu, ali bih da naglasim da i tu praksu da se varijablama daju dobra, ne previše glupa ali ne ni previše opisna imena početnici mogu pogrešno da razumeju i na kraju da završe sa kilometarskim promenljivama—znam da se meni to desilo u jednom dobu.
Da citiram, recimo, iz Linux Style Guide: Kod:
C is a Spartan language, and so should your naming be. Unlike Modula-2 and Pascal programmers, C programmers do not use cute names like ThisVariableIsATemporaryCounter. A C programmer would call that variable "tmp", which is much easier to write, and not the least more difficult to understand. [...] Encoding the type of a function into the name (so-called Hungarian notation) is brain damaged - the compiler knows the types anyway and can check those, and it only confuses the programmer. No wonder MicroSoft makes buggy programs. LOCAL variable names should be short, and to the point. If you have some random integer loop counter, it should probably be called "i". Calling it "loop_counter" is non-productive, if there is no chance of it being mis-understood. Similarly, "tmp" can be just about any type of variable that is used to hold a temporary value. |
Sledeći korisnik se zahvaljuje korisniku Geomaster na korisnoj poruci: | ||
voodoo_ (29.4.2014) |
29.4.2014, 19:35 | #310 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.163
Zahvalnice: 2.081
Zahvaljeno 4.922 puta na 2.858 poruka
|
Re: How to... C++
Uf, imao sam situaciju gde sam radio sa nekim bootloaderom koji je umnogome pisan po uzoru na Linux (uključujući stil, notaciju itd). Uprkos spartanskom stilu, sve je bilo sasvim dovoljno čitljivo i razumljivo. I onda u sred bootloadera, Texas Instruments ubaci neke funkcije za inicijalizaciju svog ARM procesora gde je sve bilo pisano u CamelCase-u, sa dugačkim imenima promenljivih (kao u primeru), vitičastim zagradama u novom redu umestu nastavku itd. Ne da je štrčalo, nego mi je došlo sve da preradim da bude u stilu ostatka bootloadera, ali nije bilo vremnea. Koji mamlazi
|
8.5.2014, 1:50 | #311 | |
Banned
Član od: 8.7.2006.
Lokacija: Above the Abyss
Poruke: 1.879
Zahvalnice: 584
Zahvaljeno 910 puta na 523 poruka
|
Re: How to... C++
Krenuo sam da izucavam malo C++ jer mi je bio potreban zbog scripting-a u Cryengine-u, ali moram da priznam da me je nesto privuklo da krenem da ozbiljnije ucim C++ i programiranje uopste E sad moje pitanje, radio sam na nekom konverteru, evri u dinare i obrnuto, nesto sam smuljao iz glave i iako program radi, interesuje me da li neko zna laksi i kraci nacin da se to odradi?
Evo ga moj kod Citat:
|
|
8.5.2014, 9:43 | #313 | |
Banned
Član od: 8.7.2006.
Lokacija: Above the Abyss
Poruke: 1.879
Zahvalnice: 584
Zahvaljeno 910 puta na 523 poruka
|
Re: How to... C++
Koristio sam
Citat:
|
|
8.5.2014, 11:55 | #314 | |
Član
|
Re: How to... C++
Citat:
double niz[1]; niz[0]= 115.54; stavi umest toga: double EuToDin; // ili tako nesto EuToDin = 115.54; Poslednja ispravka: Dusan Spasic (8.5.2014 u 12:22) |
|
Sledeći korisnik se zahvaljuje korisniku Dusan Spasic na korisnoj poruci: | ||
Dreamfall (8.5.2014) |
8.5.2014, 12:59 | #315 | |
Starosedelac
Član od: 10.8.2007.
Lokacija: Temples of Syrinx
Poruke: 2.193
Zahvalnice: 417
Zahvaljeno 1.006 puta na 568 poruka
|
Re: How to... C++
Citat:
Čitah u zadnje vreme C++ Primer, 5th ed. tako da eto lična preporuka za nju. |
|
Sledeći korisnik se zahvaljuje korisniku Sun Tzu na korisnoj poruci: | ||
Dreamfall (8.5.2014) |
8.5.2014, 13:28 | #316 |
Starosedelac
Član od: 4.11.2007.
Poruke: 1.726
Zahvalnice: 1.753
Zahvaljeno 629 puta na 363 poruka
|
Re: How to... C++
Sto se tice C++, ja bih batalio tutoriale.
Ja sam iscitao C++ Primer 5th edition, koji bih ti svakako preporucio, mada bih je ja vise koristio kao referencu nego knjigu za ucenje. Verovatno najbolja knjiga za pocetnike je, bar po meni, http://www.amazon.com/dp/0321543726/...ackoverfl08-20, a za mesec dana izlazi u izdanju koje obuhvata C++11 standard. Prodji kroz ovu knjigu, usput citaj i Primer, obzirom da je peto izdanje pisano za C++11. |
25.5.2014, 14:46 | #317 |
Kekule Mekule
|
Re: How to... C++
Koja je fora da mi Code::Blocks baca segmentation fault-ove u toku samog kompajliranja?
|
26.5.2014, 15:08 | #318 |
V.I.P. Programiranje
|
Re: How to... C++
^ Bag u C::B-u (ili možda u kompajleru?), šta drugo može da bude? Pogledaj stacktrace-ove ili okači ovde da bacim i ja pogled
|
26.5.2014, 19:58 | #319 |
Banned
Član od: 8.7.2006.
Lokacija: Above the Abyss
Poruke: 1.879
Zahvalnice: 584
Zahvaljeno 910 puta na 523 poruka
|
Re: How to... C++
Imao sam i ja dosta problema sa njim, u zadnje vreme zna da odlepi kada ubacim ( #include) klasu koju sam sam napisao, nzm zasto, ali kada se isti kod kompajlira u Dev c++ , i kada se fajl sacuva i otvori u C::B, njegov kompajler ne prijavljuje gresku
|
5.8.2014, 17:22 | #320 |
Novi član
Član od: 24.12.2013.
Poruke: 18
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
|
[C++] Visual Studio Compiler
Pozdrav.
Da li je moguce zameniti defualt Visual Basic compiler sa nekim drugim? Imam Visual Basic 2010 ciji compiler ne podrzava u potpunosti C++11 i C++14. |
Bookmarks sajtovi |
Tagovi |
c++, how to, pomoc, programiranje |
Alatke vezane za temu | |
Vrste prikaza | |
|
|