Anonymní profil Anonim – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Anonim – Programujte.comAnonymní profil Anonim – Programujte.com

 

Příspěvky odeslané z IP adresy 87.249.130.–

C / C++ › Iterator
10. 11. 2009   #118845

Ahoj potřeboval bych jsi poradit jak ukládat do vektoru po sloupcích



vector<vector<int> > pole;
vector<vector<int> >::iterator itpole;
vector<int>::iterator itradek;

pole.resize(pocet_sloupcu);
for(itpole=pole.begin();itpole!=pole.end();itpole++)
{itpole->resize(pocet_radku);}

for(itpole=pole.begin();itpole!=pole.end();itpole++)
{for(itradek=itpole->begin();itradek!=itpole->end();itradek++){*itradek=rand()%2;}
}

Anonim
C / C++ › Problém v C++
10. 11. 2009   #118829

   

C:\Users\JouiBart\AppData\Local\Temp\ccoLnaaa.o(.text+0x34a) In function `main':
[Linker error] undefined reference to `UnionFind::UnionFind(int)'
[Linker error] undefined reference to `UnionFind::make_set(int)'
........
C:\Users\JouiBart\AppData\Local\Temp\ccoLnaaa.o(.text+0x34a) ld returned 1 exit status

Jestli to chápu dobře tak když budu mit v programu třeba
for (int i=1; i<=vertices_cnt; ++i) {

vertex_sets.make_set(i);
}

Tak to nebude fungovat? set_union a upper_bound je funkce z algoritmu,ne? V c++ se moc nevyznám, ale dostali jsme to za úkol ve škole vytvořit takže to je pro mě nutný zlo:(

Anonim
C / C++ › Problém v C++
10. 11. 2009   #118823

Dostal jsem za domácí úkol vytvořit Union_find.h. Kde bude
UnionFind(int upperBound)
konstruktor třídy, upperBound je horní limit na hodnoty prvků ukládaných do množin; všechny vkládané prvky budou celá čísla v rozsahu od 1 do upperBound (včetně)
void make_set(int x)
vytvoří množinu obsahující prvek x
void union_sets(int x, int y)
sjednotí množiny obsahující prvky x a y
int find_set(int x)
vrátí reprezentanta množiny obsahující prvek x (tj. jeden z prvků této množiny, s podmínkou uvedenou výše)
int get_count(void)
vrátí počet disjunktních množin ve struktuře uložených (přesněji, počet tříd ekvivalence prvků podle relace příslušet do stejné množiny)
Napsal jsem to takhle



#include<iostream>

using namespace std;

class UnionFind
{ private:

public:
UnionFind(int upperBound){upper_bound(upperBound);}
void make_set(int x){set<int> mnoziny;
mnoziny.insert(int(x));}
void union_sets(int x, int y){set_union(x,y,iter);}
int find_set(int x){mnoziny.find(int(x));}
int get_count(void);
};

Union_find.h je vloženo v jiném programu, který když kompiluju tak vždycky hodí nějakou chybu ať do Union_find.h napíšu cokoliv.

C / C++ › Hra života
2. 11. 2009   #118355

Měl bych ještě poslední dotaz nevíte někdo jak na určitý políčko ukazovat pomocí iterátoru abych nemusel používat pocet_sloupcu a pocet_radku?



for(x=1;x<pocet_sloupcu-1;x++)
{for(y=1;y<pocet_radku-1;y++)
{n = pole[x][y-1] + pole[x][y+1] /*okolo [x,y]*/ + pole[x-1][y-1] + pole[x-1][y] + pole[x-1][y+1] /*riadok nad*/+ pole[x+1][y-1] + pole[x+1][y] + pole[x+1][y+1] /*riadok pod*/;
if(n>3 || n < 2) {pole2[x][y] = 0;}
else {if(n ==3) {pole2[x][y] = 1;}
else {pole2[x][y] = pole[x][y];}
}
}
}

C / C++ › Hra života
26. 10. 2009   #117877

Díky za radu... nedalo by jse to jestě nějako udělat pomocí STL algoritmu? pole jsem definoval a naplnil



vector<vector<int> > pole;
vector<int> radek;
vector<vector<int> >::iterator itpole;
vector<int>::iterator itradek;

pole.resize(pocet_sloupcu);
for(itpole=pole.begin();itpole!=pole.end();itpole++)
{itpole->resize(pocet_radku);}

for(itpole=pole.begin();itpole!=pole.end();itpole++)
{for(itradek=itpole->begin();itradek!=itpole->end();itradek++)
{*itradek=rand()%2;}
}

for(itpole=pole.begin();itpole!=pole.end();itpole++)
{ for(itradek=itpole->begin();itradek!=itpole->end();itradek++)
if (itpole == pole.begin() || itpole == pole.end() - 1) cout << "_ ";
else {
if (itradek == itpole->begin() || itradek == itpole->end() - 1) cout << "| ";
else cout << ((*itradek == 1) ? '*' : ' ') << " ";
}
cout << endl;}


C / C++ › Hra života
26. 10. 2009   #117870

Potřeboval bych poradit, mám vytvořit obdobu http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life. Už jse mě povedlo vytvořit pole i ho naplnit náhodnou hodnotou (0 nebo 1), pole jsem řešil pomocí iterátoru. Ale nevím jak do toho zapojit ty podmínky.

Pokud je počet sousedů organismu menší než dva, tak živý organismus umírá na osamělost.
Pokud je počet sousedů organismu větší než tři, tak živý organismus umírá na přelidněnost.
Pokud je počet sousedů organismu roven dvěma nebo třema, tak živý organismus pokračuje do další populace.
Pokud je počet sousedů políčka bez organismu právě tři, tak zde vzniká nový organismus.

C / C++ › Problémy s polem.
16. 10. 2009   #117398

To Earl Cash : při

bool pozice[] = {true, false}; 

if(*pozice[y] == false)
neco();
else
neco2();

kde y je nahodná proměnná se mě program zasekne na if(*pozice[y] == false) a objeví se windowsácká hláška program přestal pracovat...

C / C++ › Problémy s polem.
16. 10. 2009   #117396

Dobrý den, chtěl bych se proc nefunguje příkazy v polích....mám pole třeba bool *pozice[]={false,false};
ale nejde mě použít if(pozice=false){neco();}
else(neco1();)
vždy se provede to co je v else. A ještě mě nejde změnit hodnota v "pozice" příkazem pozice=true.
Děkuji za každou radu, protože už jsem v koncích...

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý