Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 13.4.2014, 0:00   #301
Geomaster
V.I.P. Programiranje
 
Član od: 28.6.2007.
Lokacija: Beograd
Poruke: 2.342
Zahvalnice: 2.836
Zahvaljeno 1.047 puta na 507 poruka
Slanje poruke preko MSN-a korisniku Geomaster Slanje poruke preko Skypea korisniku Geomaster
Određen forumom 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;
A možeš i da definišeš funkciju-objekat (tzv. functor) koji će da vrši komparaciju:
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;
Što se tiče tvog drugog pitanja, pair<> se vraća iz insert() metode da bi metoda mogla da ti kaže da li je element stvarno ubačen ili nije. Skup (po definiciji skupa) ne dozvoljava da se dva ista elementa pojave u njemu, pa zato, ako probaš da insert()-uješ element koji već postoji, u tom pair<>-u koji ti insert() vrati taj bool će biti false, a iterator će biti postavljen da pokazuje na taj element čiji si duplikat hteo da ubaciš. (Na primer, ako imaš skup {1, 2, 3, 8, 20} i probaš da ubaciš 20, dobićeš std:air(false, it) gde je it iterator koji pokazuje na broj 20.) U suprotnom, ako element već ne postoji, on se ubacuje, bool se postavlja na true a iterator pokazuje na mesto gde je ubačen. (Na primer, ako imaš skup {1, 2, 3, 5} i insert()-uješ 4, skup će biti {1, 2, 3, 4, 5} dobićeš pair(true, it) gde će it pokazivati na ovaj novoubačeni broj 4.)

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
Geomaster je offline   Odgovor sa citatom ove poruke
Sledećih 2 korisnika se zahvaljuje korisniku Geomaster na korisnoj poruci:
Futuristic (14.4.2014), Oggy (13.4.2014)
Stara 18.4.2014, 0:58   #302
Strucnjak022
Novi član
 
Član od: 26.12.2011.
Lokacija: 022
Poruke: 21
Zahvalnice: 3
Zahvaljeno jedanput na jednoj poruci
Određen forumom 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
Strucnjak022 je offline   Odgovor sa citatom ove poruke
Stara 18.4.2014, 3:07   #303
Andross
Kekule Mekule
 
Avatar korisnika Andross
 
Član od: 8.12.2005.
Lokacija: Beograd
Poruke: 3.756
Zahvalnice: 567
Zahvaljeno 1.068 puta na 561 poruka
Slanje poruke preko Skypea korisniku Andross
Određen forumom Re: How to... C++

Otvori First_App.cpp i #include "Form1.h" preimenuj u #include "Losmi.h"
Andross je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Andross na korisnoj poruci:
Strucnjak022 (18.4.2014)
Stara 18.4.2014, 18:19   #304
Strucnjak022
Novi član
 
Član od: 26.12.2011.
Lokacija: 022
Poruke: 21
Zahvalnice: 3
Zahvaljeno jedanput na jednoj poruci
Određen forumom 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
Strucnjak022 je offline   Odgovor sa citatom ove poruke
Stara 19.4.2014, 15:44   #305
Darky
Član
 
Član od: 10.1.2010.
Lokacija: Bos. Gradiska
Poruke: 143
Zahvalnice: 51
Zahvaljeno 32 puta na 18 poruka
Određen forumom 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;
}
Darky je offline   Odgovor sa citatom ove poruke
Stara 24.4.2014, 0:46   #306
ivan90BG
Veteran
 
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
Određen forumom 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.
ivan90BG je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku ivan90BG na korisnoj poruci:
Geomaster (25.4.2014)
Stara 24.4.2014, 23:50   #307
Darky
Član
 
Član od: 10.1.2010.
Lokacija: Bos. Gradiska
Poruke: 143
Zahvalnice: 51
Zahvaljeno 32 puta na 18 poruka
Određen forumom Re: How to... C++

Taj je viska
Darky je offline   Odgovor sa citatom ove poruke
Stara 29.4.2014, 0:57   #308
pivonroll
Član
 
Član od: 26.5.2007.
Poruke: 278
Zahvalnice: 16
Zahvaljeno 102 puta na 66 poruka
Određen forumom Re: How to... C++

Poslusaj sto ti kaze ivan90BG. Imenuj promenjive i funkcije prema svrsi. Short sweet and to the point - self explainatory.
pivonroll je offline   Odgovor sa citatom ove poruke
Stara 29.4.2014, 18:23   #309
Geomaster
V.I.P. Programiranje
 
Član od: 28.6.2007.
Lokacija: Beograd
Poruke: 2.342
Zahvalnice: 2.836
Zahvaljeno 1.047 puta na 507 poruka
Slanje poruke preko MSN-a korisniku Geomaster Slanje poruke preko Skypea korisniku Geomaster
Određen forumom 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.
Geomaster je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Geomaster na korisnoj poruci:
voodoo_ (29.4.2014)
Stara 29.4.2014, 19:35   #310
voodoo_
V.I.P. GNU/Linux
 
Avatar korisnika voodoo_
 
Član od: 1.11.2005.
Poruke: 10.473
Zahvalnice: 1.716
Zahvaljeno 4.506 puta na 2.552 poruka
Određen forumom 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
voodoo_ je offline   Odgovor sa citatom ove poruke
Stara 8.5.2014, 1:50   #311
Dreamfall
Banned
 
Član od: 8.7.2006.
Lokacija: Above the Abyss
Poruke: 1.879
Zahvalnice: 584
Zahvaljeno 910 puta na 523 poruka
Određen forumom 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:
#include <iostream>
#include <cmath>
#include <cstdlib>
using namespace std;

int main () {

double a;
double niz[1];
niz[0]= 115.54;
double nizbre [1];
nizbre [0]= 0.0087 ;
int izbor;

cout<< "Unesi sumu" << endl;
cin>> a;
cout<<"Izaberite konverziju 1)evri u dinare 2) dinari u evre" <<endl;
cin>> izbor;
switch (izbor)
{
case 1: cout<<a*niz[0] << endl;
break;
case 2: cout<< a*nizbre[0]<< endl;
break;
default:
cout<<"Neophodno je da izaberete ili 1 ili 2"<<endl;
}

system ("pause");
return EXIT_SUCCESS;

}
Dreamfall je offline   Odgovor sa citatom ove poruke
Stara 8.5.2014, 3:11   #312
Andross
Kekule Mekule
 
Avatar korisnika Andross
 
Član od: 8.12.2005.
Lokacija: Beograd
Poruke: 3.756
Zahvalnice: 567
Zahvaljeno 1.068 puta na 561 poruka
Slanje poruke preko Skypea korisniku Andross
Određen forumom Re: How to... C++

Koristis obicne promenljive a ne niz od jednog clana za pocetak
Andross je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Andross na korisnoj poruci:
Dreamfall (8.5.2014)
Stara 8.5.2014, 9:43   #313
Dreamfall
Banned
 
Član od: 8.7.2006.
Lokacija: Above the Abyss
Poruke: 1.879
Zahvalnice: 584
Zahvaljeno 910 puta na 523 poruka
Određen forumom Re: How to... C++

Citat:
Andross kaže: Pregled poruke
Koristis obicne promenljive a ne niz od jednog clana za pocetak
Koristio sam

Citat:
double b= (115.54);
double c= (0.0087);
.
.
.
case 1: cout<<a*b << endl;
break;
case 2: cout<< a*c<< endl;
break;
ali program je za svaku unetu vrednost ispisivao 46,kasnije sam provalio da se code blocks nesto zaglupeo, ovo sa nizom je neka alternativa Inace trenutno pratim tutorijale na YT od ovog coveka i studiram neku random knjigu sa neta ,,C++ programiranje za apsolutne pocetnike'', autor Ratko Jakopec. Ako jos neko ima neku sugestiju, kritiku ili korisno parce literature, svaka pomoc je dobrodosla
Dreamfall je offline   Odgovor sa citatom ove poruke
Stara 8.5.2014, 11:55   #314
Dusan Spasic
Član
 
Član od: 30.1.2008.
Lokacija: nis
Poruke: 99
Zahvalnice: 15
Zahvaljeno 13 puta na 12 poruka
Slanje poruke preko MSN-a korisniku Dusan Spasic Slanje poruke preko Yahooa korisniku Dusan Spasic
Određen forumom Re: How to... C++

Citat:
Dreamfall kaže: Pregled poruke
Koristio sam



ali program je za svaku unetu vrednost ispisivao 46,kasnije sam provalio da se code blocks nesto zaglupeo, ovo sa nizom je neka alternativa Inace trenutno pratim tutorijale na YT od ovog coveka i studiram neku random knjigu sa neta ,,C++ programiranje za apsolutne pocetnike'', autor Ratko Jakopec. Ako jos neko ima neku sugestiju, kritiku ili korisno parce literature, svaka pomoc je dobrodosla
Mislio je verovatno na ovo

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)
Dusan Spasic je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Dusan Spasic na korisnoj poruci:
Dreamfall (8.5.2014)
Stara 8.5.2014, 12:59   #315
Sun Tzu
Starosedelac
 
Član od: 10.8.2007.
Lokacija: Temples of Syrinx
Poruke: 2.188
Zahvalnice: 412
Zahvaljeno 1.005 puta na 567 poruka
Određen forumom Re: How to... C++

Citat:
Dreamfall kaže: Pregled poruke
Ako jos neko ima neku sugestiju, kritiku ili korisno parce literature, svaka pomoc je dobrodosla
http://stackoverflow.com/questions/3...guide-and-list
Čitah u zadnje vreme C++ Primer, 5th ed. tako da eto lična preporuka za nju.
Sun Tzu je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Sun Tzu na korisnoj poruci:
Dreamfall (8.5.2014)
Stara 8.5.2014, 13:28   #316
Krilce
Starosedelac
 
Član od: 4.11.2007.
Poruke: 1.681
Zahvalnice: 1.675
Zahvaljeno 598 puta na 351 poruka
Određen forumom 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.
Krilce je offline   Odgovor sa citatom ove poruke
Sledećih 2 korisnika se zahvaljuje korisniku Krilce na korisnoj poruci:
Dreamfall (8.5.2014), Geomaster (8.5.2014)
Stara 25.5.2014, 14:46   #317
Andross
Kekule Mekule
 
Avatar korisnika Andross
 
Član od: 8.12.2005.
Lokacija: Beograd
Poruke: 3.756
Zahvalnice: 567
Zahvaljeno 1.068 puta na 561 poruka
Slanje poruke preko Skypea korisniku Andross
Određen forumom Re: How to... C++

Koja je fora da mi Code::Blocks baca segmentation fault-ove u toku samog kompajliranja?
Andross je offline   Odgovor sa citatom ove poruke
Stara 26.5.2014, 15:08   #318
Geomaster
V.I.P. Programiranje
 
Član od: 28.6.2007.
Lokacija: Beograd
Poruke: 2.342
Zahvalnice: 2.836
Zahvaljeno 1.047 puta na 507 poruka
Slanje poruke preko MSN-a korisniku Geomaster Slanje poruke preko Skypea korisniku Geomaster
Određen forumom 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
Geomaster je offline   Odgovor sa citatom ove poruke
Stara 26.5.2014, 19:58   #319
Dreamfall
Banned
 
Član od: 8.7.2006.
Lokacija: Above the Abyss
Poruke: 1.879
Zahvalnice: 584
Zahvaljeno 910 puta na 523 poruka
Određen forumom 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
Dreamfall je offline   Odgovor sa citatom ove poruke
Stara 5.8.2014, 17:22   #320
djanko
Novi član
 
Član od: 24.12.2013.
Poruke: 18
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
Arrow [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.
djanko je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi

Tagovi
c++, how to, pomoc, programiranje

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno



Sva vremena su po Griniču +2 h. Sada je 21:27.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2020, vBulletin Solutions, Inc.
Hosted by Beograd.com