![]() |
![]() |
|
Programiranje Programski jezici, tehnike, alatke... |
![]() |
|
Alatke vezane za temu | Vrste prikaza |
![]() |
#101 |
Veteran
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
|
![]()
@MG-RAY, popravljeno.
@Geo, jes može, ali onda korisnik ove klase mora da zna da mora da uradi još nešto osim golog poziva operatora da bi koristio objekat pravilno (mora još jednom da indeksira). Operator () je zaokružen interfejs. ![]() Poslednja ispravka: ivan90BG (22.8.2012 u 21:19) |
![]() |
![]() |
![]() |
#102 |
V.I.P. Programiranje
|
![]()
Ne shvatam, šta bi još trebao da zna? I običnoj matrici se pristupa s dva indeksa...
Poslednja ispravka: Geomaster (22.8.2012 u 21:51) |
![]() |
![]() |
![]() |
#103 | |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
![]()
@Ivan90BG
Citat:
Kod:
(*this).width; //ili this->width Kod:
template < typename T > class Array2D { std::size_t rows, columns; T** data; public: Array2D(std::size_t r, std::size_t c) : rows(r), columns(c) { data = new T*[rows]; for(std::size_t i = 0; i < rows; ++i) data[i] = new T[columns]; } ~Array2D() { for(std::size_t i = 0; i < rows; ++i) delete [] data[i]; delete [] data; } T& operator () (std::size_t r, std::size_t c) const { return data[r][c]; } }; Poslednja ispravka: Belphegor (23.8.2012 u 12:22) |
|
![]() |
![]() |
Sledeći korisnik se zahvaljuje korisniku Belphegor na korisnoj poruci: | ||
ivan90BG (23.8.2012) |
![]() |
#104 |
Veteran
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
|
![]()
Šta ću kad mi je mozak na sve strane (učenje, seminarski, projekat), i kad Qt Creator automatski menja tačku u sterlicu ako se otkuca posle pointera. (i onda ja onako lenjo C#-ovski samo lupam tačke
![]() |
![]() |
![]() |
![]() |
#105 |
Veteran
|
![]()
Pokusavam da uradim najednostavniju multithreaded aplikaciju:
Kod:
#include <iostream> #include <thread> #include <chrono> using namespace std; void f() { while(1) { cout << "From SIDE thread." << endl; this_thread::sleep_for(chrono::seconds(2)); } } int main(int argc, _TCHAR* argv[]) { thread t1(f); t1.join(); while(1) { cout << "From MAIN thread." << endl; this_thread::sleep_for(chrono::seconds(2)); } return 0; } Tj. hocu da output bude, malo iz jedne f-je malo iz main. Sta radim pogresno? Poslednja ispravka: Ivan-94 (17.9.2012 u 1:44) |
![]() |
![]() |
![]() |
#107 |
Veteran
|
![]()
Ok ali kako da ne cekam da se zavrsi, nego da odmah posle pokretanja nastavi?
|
![]() |
![]() |
![]() |
#108 |
V.I.P. Programiranje
|
![]()
Pa nemoj da pozivaš join() na tom objektu
![]() |
![]() |
![]() |
![]() |
#109 |
Veteran
|
![]()
Joj, cek, mozda nisam lepo formulisao pitanje.
![]() Kako da pokrenem dve f-je odjednom i da jedna malo dobije vreme procesora malo druga? |
![]() |
![]() |
![]() |
#110 | |
V.I.P. Programiranje
|
![]() Citat:
Kod:
#include <iostream> #include <thread> #include <chrono> using namespace std; void f() { while(1) { cout << "From SIDE thread." << endl; this_thread::sleep_for(chrono::seconds(2)); } } int main(int argc, char* argv[]) { thread t1(f); { cout << "From MAIN thread." << endl; this_thread::sleep_for(chrono::seconds(1)); } return 0; } |
|
![]() |
![]() |
![]() |
#111 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
![]()
@Ivan-94
Zanimljiv link. |
![]() |
![]() |
![]() |
#112 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.125
Zahvalnice: 2.056
Zahvaljeno 4.908 puta na 2.845 poruka
|
![]()
Ladno postoji std::thread, a ja seljak koristim pthread-ove još uvek
|
![]() |
![]() |
![]() |
#114 |
Član
Član od: 26.10.2011.
Poruke: 43
Zahvalnice: 12
Zahvaljeno 17 puta na 6 poruka
|
![]()
Kako da uzimam random number ( 0-100 ) odredjen broj puta ( verovatno for ciklus ) i da izvucem kojih se, recimo, 5 brojeva najvise puta izvlacilo i ispisem ih na ekranu? Ne treba mi cist kod, nego neka ideja kako bi to izgledalo.
|
![]() |
![]() |
![]() |
#115 | |
Član
|
![]() Citat:
E sad trenutno nemam ideju kako da ispises bas 5 koji su se najvise pojavili ali imaces uvid koliko se puta koji broj pojavio pa smisli nesto. Moglo bi i da imas niz struktura koje sadrze { broj, brojac } pa bi kasnije samo sortirao i ispisao 5 sa najvecim brojacem, ali ova prva ideja mi je zanimljivija samo je treba doraditi ako je moguce. |
|
![]() |
![]() |
Sledećih 2 korisnika se zahvaljuje korisniku RaKuN_s_NeOnKoM na korisnoj poruci: | ||
ivan90BG (23.9.2012), Sheldon Cooper (22.9.2012) |
![]() |
#116 |
Veteran
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
|
![]() Kod:
void main() { int niz[101]; memset(niz, 0, 101*sizeof(int)); srand(time(NULL)); for (int i = 0; i < 40000; i++) { niz[rand() % 100]++; } TopLista lista(5); for (int i = 0; i <= 100; i++) { lista.probajDaDodaš(i, niz[i]); } for (int i = 1; i <= 5; i++) { printf("%d: %d se pojavio %d puta\n", i, lista.ključPozicije(i), lista.vrednostPozicije(i)); } } ![]() |
![]() |
![]() |
Sledeći korisnik se zahvaljuje korisniku ivan90BG na korisnoj poruci: | ||
Sheldon Cooper (22.9.2012) |
![]() |
#117 | |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
![]()
@ivan90BG
Citat:
C++ resenje, valjda nisam prevideo nesto: Spoiler za spoiler:
Poslednja ispravka: Belphegor (22.9.2012 u 18:29) Razlog: Nasao gresku u kodu. Ispravljeno :-( |
|
![]() |
![]() |
![]() |
#118 |
V.I.P. Programiranje
|
![]()
STL je bio lep sve dok se nisu pojavile zle konstrukcije kao ove što je Belphegor koristio.
![]() |
![]() |
![]() |
![]() |
#119 |
Veteran
Član od: 3.5.2008.
Lokacija: Beograd
Poruke: 760
Zahvalnice: 81
Zahvaljeno 213 puta na 144 poruka
|
![]()
@Belphagor, ako bi mogao malo da objasniš kako radi ovo tvoje sokoćalo.
![]() Elem, ja sam do sada debagovao i modifikovao implementaciju TopListe (one koja se uklapa u moj gornji kod), dok mi nije maločas puklo pred očima, i evo: Kod:
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> struct Par { int key; int value; }; int uporedi(const void* l, const void* r) { return -(((Par*)l)->value - ((Par*)r)->value); } int main() { Par niz[101]; memset(niz, 0, sizeof(niz)); for (int i = 0; i < 101; ++i) niz[i].key = i; srand(time(NULL)); for (int i = 0; i < 40000; i++) { niz[rand() % 101].value++; } qsort(niz, 101, sizeof(Par), uporedi); for (int i = 0; i < 101; ++i) { printf("%d: (%d, %d)\n", i, niz[i].key, niz[i].value); } return 0; } ![]() Poslednja ispravka: ivan90BG (23.9.2012 u 19:35) |
![]() |
![]() |
![]() |
#120 |
Veteran
Član od: 27.12.2005.
Lokacija: Vremenske Grobnice, Hiperion
Poruke: 680
Zahvalnice: 99
Zahvaljeno 124 puta na 82 poruka
|
![]()
Hi, folks! Vau, ova top lista je stvarno nešto popularna. Pa, evo i mog rešenja
![]() Evo rešenja: Kod:
#include <iostream> #include <random> #include <chrono> #include <vector> #include <algorithm> #include <numeric> #include <functional> int main() { auto now = std::chrono::high_resolution_clock::now(); auto seed = std::chrono::duration_cast<std::chrono::nanoseconds> (now.time_since_epoch()).count(); // test uniformne raspodele { std::cout << "Uniformna raspodela (izvucen broj:broj izvlacenja):\n"; // svaki broj ima istu verovatnocu pojavljivanja std::uniform_int_distribution<> u_dist(0,100); std::mt19937 mt1(seed); auto u_rand = std::bind(u_dist, mt1); std::vector<int> counts(101, 0); std::vector<size_t> indices(101); std::iota(begin(indices), end(indices), 0); for(size_t i = 0; i != 10000; ++i){ ++ counts[u_rand()]; } std::sort(begin(indices), end(indices), [&counts](size_t a, size_t b) -> bool { return counts[a] >= counts[b]; }); for(size_t i = 0; i != 5; ++ i) std::cout << indices[i] << "\t" << counts[indices[i]] << "\n"; } std::cout << "\n"; // test binomne raspodele { double p = 0.3; std::cout << "Binomna raspodela, p = " << p << " (izvucen broj:broj izvlacenja):\n"; // vrsi se 100 eksperimenata, svaki ima verovatnocu uspeha 'p'; vraca broj uspelih std::binomial_distribution<> b_dist(100, 0.5); std::mt19937 mt2(seed); auto b_rand = std::bind(b_dist, mt2); std::vector<int> counts(101, 0); std::vector<size_t> indices(101); std::iota(begin(indices), end(indices), 0); for(size_t i = 0; i != 10000; ++i){ ++ counts[b_rand()]; } // puca sa obicnim sort-om iz nekog razloga // mozda zato sto je vecina elemenata 0? std::stable_sort(begin(indices), end(indices), [&counts](size_t a, size_t b) -> bool { return counts[a] >= counts[b]; }); for(size_t i = 0; i != 5; ++ i) std::cout << indices[i] << "\t" << counts[indices[i]] << "\n"; } return 0; } |
![]() |
![]() |
Sledeći korisnik se zahvaljuje korisniku M.Silenus na korisnoj poruci: | ||
Belphegor (23.9.2012) |
![]() |
Bookmarks sajtovi |
Tagovi |
c++, how to, pomoc, programiranje |
Alatke vezane za temu | |
Vrste prikaza | |
|
|