Új hozzászólás Aktív témák
-
sztanozs
veterán
Amikor meghívódik az Add() függvény, kiírja a képernyőre a szöveget, hogy Itt a az Add().... és ezután miért nem rögtön az eredményt, amivel visszatér írja ki, miért ékelődik be a függvény által kiírt szöveg és az eredmény(7) közé a "visszaadott érték" szöveg?
Azért, mert mivel az Add() nem értékelődött még ki, így az
std::cout << "A visszaadott érték: " << Add(3,4);
aláhúzott része még nem értékelődött ki, így még az egészstringstream nem került átadásra az stdoutra.
A << operátor miatt az aláhúzás sorrendjében történik a kiértékelődés (jobbról balra):
std::cout << "A visszaadott érték: " << Add(3,4);
std::cout << "A visszaadott érték: " << Add(3,4);
std::cout << "A visszaadott érték: " << Add(3,4);[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
44kos
tag
válasz sztanozs #1951 üzenetére
OK, de egyszerre egy helyen fut a program, nem? Azt írja a könyv, hogy amikor egy függvény meghívásához érkezik a program, miközben a main-ben fut, ott "felfüggesztődik", és odaugrik a meghívott függvényhez, és addig azt hajtja végre, amíg vissza nem tér onnan?
Hopp, miután ezt leírtam, megértettem.
Tehát elsőnek kiértékeli az Add(3,4)-et, ezért az Add() fv-ben lévő cout-ot végrehajtja(megjelenik az ottani szöveg), és ezután az x+y eredményével vissza is tér(de itt még nem tudja, hogy ezt ki kell majd írnia), és ugrik egyet balra, ahol az "A visszaadott érték" szerepel, és még 1-et ugrik balra, és mivel ott a cout parancsot kapja, kiteszi a kimenetre a mögötte álló részt, tehát olyan mintha a std::cout << "A visszaadott érték" << "7" ; parancs állna ott? -
Perbalu
csendes tag
Üdv!
Szakdolgozatomat most kezdem és tervbe van hogy lehetséges h vmilyen vst plugin (effect, torzito, visszhang stb) fejlesztése lenne a téma. Esetleg vki ismer olyat itt aki ebben a témában mozog?
mail: perbalu@freemail.hu
Thx -
válasz Perbalu #1954 üzenetére
az "ebben a témában mozog" eléggé tág megközelítésétől függően. google scholar / ACM / IEEE / scopus kezdésnek jó ha kutatási anyagok beszerzése a cél. ha interjú kell akkor meg érdemesebb maileket küldözgetni témába vágó cégeknek talán.
szvsz inkább a témavezetőd kérdezd.
Don't dream it, be it. // Lagom amount.
-
VIC20
őstag
Sziasztok!
Kezdőként szeretnék tanácsot kérni: milyen fejlesztői környezetet ajánlanátok, ha Windows-ban (vagy valamilyen más ablakkezelős környezetben) szeretnék programozni (illetve először megtanulni).
Eddig Dev-C++-ban próbálkoztam (nem a régi Bloodshed-essel, hanem az újabb Orwell-el).
Korábban Visual Basic-et is használtam (na meg Pascal-t, de ez lényegtelen), ott a GUI tényleg nagyon kényelmes volt, az ember egérrel megtervezhette a form-ot, a GUI meg generálta hozzá a kódot. Létezik ilyen C++-hoz is? Vagy azonnal meg kell tanulni a Windows GUI programozását is? Ahhoz hol találni információt?
Előre is köszi!
-
bandi0000
nagyúr
hali
Egy kis segítségre lenne szükségem
Az a feladat hogy függvényeket tanultuk és csinálni kellett 3 függvényt ami különböző műveleteket végez el ez meg is van de, úgy kell megoldani hogy be kell kérni 3 darab számot ha csak 1 számot írok akkor a program tudja hogy az első fügvényt kell végrehajtani ha 2 számot akkor a 2. ha 3 számot akkor a 3. függvényt, a függvények lényegében arról szólnak 1: 1 számmal kiszámolja a kör területét kerületét, 2: a 2 számmal kiszámolja egy téglalap területét kerületét, 3: 3 számmal a háromszög területét kerületét számolja kiSzóval azon gondolkoztam hogy hogy kéne megoldani ezt a szám bekérést mert arra már gondoltam hogy ha bekértem egy számmal egy if-el megvizsgálom hogy ha 1 szám van a tömbbe akkor csinálja az elsőt ha 2 a másodikat stb stb, csak ha jól tudom karakteressel lehetne bekérni és akkor ha jól tudom akkor belepakolja a tömbbe bármennyi számjegyet irok be de ez igy nem működik mert nem kap értéket
Van e valakinek valami ötlete hogy lehetne megoldani ezt??
Ja és természetesen a tanár annyit akar látni, hogy program lefut és beir 2 számot vagy 3 at vagy 1 et és csinálja, tehát nem jó az hogy bekérni az összes számot, vagy megkérdezni hogy melyik műveletet akarja csinálni stb[ Szerkesztve ]
Xbox One: bandymnc
-
Jester01
veterán
válasz bandi0000 #1959 üzenetére
Beolvasol egy teljes sort majd szétdarabolod. Egy egyszerű lehetséges megoldás (de nem túl hibatűrő):
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
int main(int, char**)
{
cout << "Enter numbers separated by spaces: ";
string line;
getline(cin, line);
istringstream s(line);
vector<int> numbers;
int x;
while(s >> x) numbers.push_back(x);
cout << "You entered " << numbers.size() << " numbers" << endl;
return 0;
}Jester
-
ravenwood
csendes tag
valaki aki ért mesterséges intelligencia alap szintű programozásához RTS játékba az vegye fel velem privátba a kapcsolatot nem fogja megbánni
-
VIC20
őstag
Lehet, hogy csak én nem találom, de ha 2010-es Visual Studióban új C++ projektet nyitok, akkor megcsinálja szépen az összes .h, .cpp, .ico állományt, ha elindítom, meg is jelenik egy üres ablak, menüvel, de nem látom sehol ezt formot, nem tudok rá vezérlőket tenni, mint Visual Basic-ben. (A toolbox azt mondja, hogy ,,There are no usable controls in this group (...)".)
-
bandi0000
nagyúr
hali
nagyon egyszerű feladatom van csak ötletet gyüjtök
a lényeg az hogy csinálok 5 random számot ez meg van bele teszem egy tömbbe és lényegében a poker kártyák szerint kéne csoportosítani a számokat, tehát ha 1,1,1,3,4 a szám akkor kiirja hogy drill stb
még az menne hogy 1 számbol megnézem az egyformákat, de ha van több egyforma azt nem tudom hogyan vizsgáljam meg mentsem szóval 1,1,1,2,2 a számok ennél meg tudnám mondani hogy van egy drill, de ez nem jó mert ez egy full houseXbox One: bandymnc
-
-
-
mgoogyi
senior tag
válasz bandi0000 #1966 üzenetére
Szia,
Nekem az első gondolatom egy map, ahol a kulcs a kártya azonosítója (1,2, stb.), az érték meg az, hogy hány darab van belőle.
A map-be szépen beupdateeled, hogy miből mennyi van, aztán néhány állapotjelző kell csak, pl.
numOfPairs
numOfDrills
numOfPokers
, amiket a map alapján feltöltesszKét párnál a numOfPairs 2 lesz, egy full-nál a numOfPairs és numOfDrills 1-1.
Ezeket viszont muszáj végigcsekkolni esetekre bontva. -
Azazel999
csendes tag
Sziasztok!
C++-ban szeretnék készíteni egy önszervező bináris keresőfát (vagy Java-ban, de azzal elakadtam, mert pointerek nélkül nehézkes a dolog, szóval inkább C++). A vágás (vagyis a legfontosabb metódus ) még nincs meg, de azon kívül minden más igen (keresés, beszúrás, törlés, minimális/maximális elem, előző/ következő elem, teljes fa és egyetlen elem kiíratása). A problémám az, hogy bár a kód "szépen" néz ki és működnie is kéne, összeomlik, amikor keresek egy elemet. Már pedig ez nagyon nagy baj, mert a többi metódus szinte mind elemekre (részfa-gyökerekre) mutató pointereket kér paraméternek. Ebből adódóan egyik sem fut, mert nem tudok nekik pointert adni. Van egy Fa osztályom és egy Main állományom, ezek lennének:
Fa.cpp
#include "Fa.hpp"
#include <iostream>
#include <cstddef>
using namespace std;
Fa::Fa(){
this->kulcs = -1;
this->bal = NULL;
this->jobb = NULL;
this->apa = NULL;
}
Fa::Fa(int kulcs, Fa* bal, Fa* jobb, Fa* apa){
this->kulcs = kulcs;
this->bal = bal;
this->jobb = jobb;
this->apa = apa;
}
Fa::~Fa(){}
Fa::Fa(Fa& other){
this->kulcs = other.kulcs;
this->bal = other.bal;
this->jobb = other.jobb;
this->apa = other.apa;
}
Fa* Fa::keres(int kulcs){
if (this->kulcs == kulcs){
return this;
} else if (this->kulcs < kulcs){
return this->bal->keres(kulcs);
} else {
return this->jobb->keres(kulcs);
}
}
Fa* Fa::min(){
if (this->bal == NULL){
return this;
} else {
return this->bal->min();
}
}
Fa* Fa::max(){
if (this->jobb == NULL){
return this;
} else {
return this->jobb->max();
}
}
Fa* Fa::kovetkezo(){
if (this->jobb != NULL){
return this->jobb->min();
} else {
Fa* q = this->apa;
Fa* p = this;
while (q != NULL && p == q->jobb){
p = q;
q = p->apa;
}
return q;
}
}
Fa* Fa::elozo(){
if (this->bal != NULL){
return this->bal->max();
} else {
Fa* p = this->apa;
Fa* q = this;
while (q != NULL && p == q->bal){
p = q;
q = p->apa;
}
return q;
}
}
void Fa::beszur(/*Fa* fa, */Fa* beszurando){
Fa* y = NULL;
Fa* x = this;
while (x != NULL){
y = x;
if (beszurando->kulcs < y->kulcs){
x = x->bal;
} else {
x = x->jobb;
}
}
beszurando->apa = y;
if (y == NULL){
//fa = beszurando; //Ures volt a fa
} else {
if (beszurando->kulcs < y->kulcs){
y->bal = beszurando;
} else {
y->jobb = beszurando;
}
}
}
void Fa::torol(Fa* fa, Fa* torlendo){
Fa *x, *y;
if (torlendo->bal == NULL || torlendo->jobb == NULL){
y = torlendo;
} else {
y= torlendo->kovetkezo();
}
if (y->bal != NULL){
x = y->bal;
} else {
x = y->jobb;
}
if (x != NULL){
x->apa = y->apa;
}
if (y->apa = NULL){
fa = x;
} else if (y == y->apa->bal) {
y->apa->bal = x;
} else {
y->apa->jobb = x;
}
if (y != torlendo){
torlendo->kulcs = y->kulcs;
}
}
void Fa::kiir(){
cout << "kulcs: " << this->kulcs;
if (this->bal != NULL){
cout << " bal: " << this->bal->kulcs;
} else {
cout << " bal: NULL";
}
if (this->jobb != NULL){
cout << " jobb: " << this->jobb->kulcs;
} else {
cout << " jobb: NULL";
}
if (this->apa != NULL){
cout << " apa: " << this->apa->kulcs << endl;
} else {
cout << " apa: NULL" << endl;
}
if (this->bal != NULL){
this->bal->kiir();
}
if (this->jobb != NULL){
this->jobb->kiir();
}
}
void Fa::kiir_egyet(){
cout << "kulcs: " << this->kulcs;
if (this->bal != NULL){
cout << " bal: " << this->bal->kulcs;
} else {
cout << " bal: NULL";
}
if (this->jobb != NULL){
cout << " jobb: " << this->jobb->kulcs;
} else {
cout << " jobb: NULL";
}
if (this->apa != NULL){
cout << " apa: " << this->apa->kulcs << endl;
} else {
cout << " apa: NULL" << endl;
}
}Main.cpp
#include <iostream>
#include <cstddef>
#include <cstring>
#include "Fa.hpp"
using namespace std;
int main (int argc, char** argv){
//fa letrehozasa
Fa *fa = new Fa(5, NULL, NULL, NULL);
fa->beszur(new Fa(3, NULL, NULL, NULL));
fa->beszur(new Fa(4, NULL, NULL, NULL));
fa->beszur(new Fa(15, NULL, NULL, NULL));
fa->beszur(new Fa(2, NULL, NULL, NULL));
fa->beszur(new Fa(7, NULL, NULL, NULL));
cout << endl;
fa->kiir();
cout << "\n" << endl;
//cout << fa->keres(15)->kiir_egyet();
}Tudnátok adni valami tippet, hogy mi lehet a baj?
-
Azazel999
csendes tag
válasz Azazel999 #1975 üzenetére
Viszont a vágás megvalósításáról még lövésem sincs. Azt tudom, hogy kettévágom a fát két fává a vágási elem mentén. Az egyik fába kerülnek a nála kisebb elemeket tartalmazó részfák, a másikba a nála nagyobbak. Majd ő lesz az új fa gyökere és a két másik fát hozzácsapjuk bal-. és jobb leszármazottaknak. A hozzácsapással nincs is gond, az tulajdonképpen csak beszúrás, de hogyan hámozhatom ki az összes nála kisebb/nagyobb elemet, hogy aztán fát gyúrjak belőlük? Van erre valami bevált módszer?
[ Szerkesztve ]
-
Azazel999
csendes tag
válasz Azazel999 #1976 üzenetére
Ja, és a kereső metódusban meg kell fordítani a kacsacsőröket, mert különben nem jól dolgozik:
Fa* Fa::keres(int kulcs){
if (this->kulcs == kulcs){
return this;
} else if (this->kulcs > kulcs){
return this->bal->keres(kulcs);
} else {
return this->jobb->keres(kulcs);
}
} -
WonderCSabo
félisten
válasz Azazel999 #1976 üzenetére
Nem értem, miért kéne hámoznod? Megfogod a részgát a gyökerénél fogva, és átláncolod. Ez "húzza" magával a többit is, minden alatta lévő elem hozzá van láncolva (már ha jó az implementációd).
Ja és természetesen javában is lehet láncolt adatszerkezeteket csinálni, mivel a java referenciákkal dolgozik...
[ Szerkesztve ]
-
Azazel999
csendes tag
válasz WonderCSabo #1978 üzenetére
Átláncolom? Ezt most nem igazán értem.
A javas megoldás pedig továbbra is elképzelhetetlen számomra.
-
Azazel999
csendes tag
válasz WonderCSabo #1978 üzenetére
Ráadásul a beszúrással gondom akadt, mert elkezdtem írni a vágás metódust és rájöttem, hogy üres (vagyis NULL pointer) fába nem tud beszúrni ez a szerencsétlen.
-
Azazel999
csendes tag
válasz WonderCSabo #1978 üzenetére
Csak, hogy tisztázzuk, jól tudom-e a vágás szabályait:
- a vágási elem bal részfájában lesz minden, nála kisebb elem
- a jobb részfájában minden, nála nagyobb elemTehát, ha ő egy olyan elem volt, aki három szint mélyen van és még ilyen mélyen van neki jobb és bal részfája is, akkor nem tudom, csak úgy átláncolni, vagy igen?
-
Azazel999
csendes tag
válasz WonderCSabo #1978 üzenetére
Na jó, most már nagyon belekavarodtam. Tudnál adni valami támpontot az átláncoláshoz?
-
Azazel999
csendes tag
Hahó, van itt valaki?
-
Azazel999
csendes tag
Tudom, de már három órája nem kaptam választ és gondoltam jelzem, hogy még várok rá. Csak mert találkoztam már olyannal, hogy senki nem írt semmit, aztán mikor bepöccentem rajta, nagy flegmán közölték, hogy azért nem írtak, mert olyan egyszerű volt a kérdés, hogy szégyen még feltenni is.
-
Azazel999
csendes tag
válasz Jester01 #1986 üzenetére
Köszönöm, de nem ez volt a baj. Tökéletesen értem a pointereket (szerintem) és az, hogyan működnek. A problémám az, hogy nem tudom hogyan valósítsam meg a vágás/összeragasztás műveletét az önszervező bin.ker. fáknál. Tudom rá a szabályt, meg lerajzolom füzetben az egészet, de egyszerűen nem tudom lekódolni. Már tényleg sokféleképpen próbáltam.
-
Azazel999
csendes tag
válasz Azazel999 #1987 üzenetére
És közben rájöttem, hogy a "szétszedem őket két csoportba és egyenként beszúrom a két fába" ötlet nem jó, mivel ha más a sorrend, nem ugyanazok lesznek a részfák megfelelő részei, mint az eredetiek voltak, mert telejsen újakat épít belőlük. Szóval marad az átláncolás, de hogy a jó életbe lehet azt megcsinálni? Ha Java-ban egyszerűbb, úgy is elmagyarázhatjátok, de C++ az elsődleges célom, mivel abban magamtól is eljutottam idáig.
-
chabeee
tag
sziasztok,
van egy feladatom ahol van több osztály is. egy lovag, egy zombi és ezekre örököltetve egy karakter.
a karakterben van egy int sebzes-em. ezzel a lovag és a zombi életerejét kell csökkenteni a tamadás menüpont alatt olyan módon, hogy amikor meghívjuk ezt a menupontot akkor a zombi életét a lovag sebzésével csökkentsük, a zombi "pedig válaszul 20%-os valószínűséggel vigyen be a saját sebzésének megfelelő sebzést a lovagnak". a sebez függvényem eddig van meg de nem tudom hogyan tudom levonni a zobmi életét.void karakter::fv_sebzes(karakter z, karakter s){
z.setEletero(z.getEletero() - sebzes);
if(!rand()%5){
s.setEletero(s.getEletero()-z.sebzes); // erre gondoltam de ez nem müxik
}
}valami ötlet?
(nem várok megoldást, inkább rávezetést, hogy milyen gondolkodás alapján csináljam, mert egyszerűnek hangzik de egyszerűen nem látom át)
előre is köszi,
csabi -
kingabo
őstag
válasz Azazel999 #1988 üzenetére
Ha jól sejtem Te avl fát akarsz implementálni: m. wiki, a. wiki, egyetemi jegyzet ebben, ha a matekos részeket kihagyod, sztem jó le van írva, képekkel. Csak pár pointert kell átállítani a forgatástól függően. Talán próbáld meg papíron, ott elvileg könnyebbnek kell lennie.
-
Azazel999
csendes tag
válasz kingabo #1992 üzenetére
Köszi, de ez nem AVL fa akar lenni, hanem konkrétan önszervező bináris keresőfa. Egyébként lehet, hogy a beszúrás, törlés metódusaim sem passzolnak hozzá :S Szóval tudom, minek kell történnie, ezt le is írtam. Nem ezzel van a baj, de nem tudom lekódolni. Tényleg sok próbálkozáson túl vagyok, de egyszerűen képtelen vagyok megoldani. Nem tudom, hogyan kódoljam le azt, hogy induljunk el a gyökértől kereséssel és nyisszantsunk le minden lépésnél a fából, majd a levágottakból gyúrjunk két fát, az egyikben a vágási pontnál kisebb, a másikban nagyobb elemekből és a két gyökér apja legyen a vágási pont.
-
kingabo
őstag
válasz Azazel999 #1994 üzenetére
Én ilyet nem tanultam, vagy nem rémlik. De ha ez ekkora művelet igénnyel jár, mint amit leírtál nem is csodálom. Szóval mit értesz önszerveződő bin kerfa alatt?
"Szóval tudom, minek kell történnie, ezt le is írtam."
Ha papíron le tudod játszani, akkor van kész algó. Miért nem írod le és segítünk lekódolni.[ Szerkesztve ]
-
Azazel999
csendes tag
válasz kingabo #1995 üzenetére
Szóval amit én tudok róla, az ez:
- Van egy egyszerű bináris keresőfának kinéző fánk
- Az elemei között fennálló relációk ennek megfelelőek (jobb gyerek kisebb, bal nagyobb)
- Legfeljebb két gyereke van egy elemnek
- Ezt a fát meg lehet vágni bármelyik pontjánál (értelemszerűen, ha gyökérbél vágjuk, önmagát adja majd vissza)
- A vágás így zajlik:
+ A keresés algoritmus szerint elindulunk a gyökértől a vágási pont (v_pont) felé
+ Ha v_pontnál kisebb elemet találunk, az "a" részfa lesz a neve (1 az első és i mindig nő eggyel)
+ Ha nagyobbat, akkor "b[j]" részfa lesz belőle (1 az első és j is mindig nő eggyel)
+ Minden lépésnél levágjuk az adott elemről azt a gyerekét, amelyik felé lépünk (nem lesz apja)
+ Ha elértük a v_pontot, akkor az előző két lépést végrehajtjuk a két gyerekére is (ha van neki)
+ Az a(i) fákat beszúrjuk a[1]-be egymás után sorrendben (i > 1)
+ b[j] fákat a b[1]-be (j > 1)
+a[1] és b[1] apja is v_pont lesz (ezért ők pedig a gyerekei)
+ véget érte az algoritmusHa rosszul tudnám, akkor valaki javítson ki, mert erre később is nagy szükségem lesz, ezért gáz, ha nem jól tudom.
Azért önszervező, mert ezt csinálja, ha "megvágod" és ugyanígy lehet beszúrni bele új elemet, csak ott luftot üt a keresés, és ott ér véget az algoritmus.
[ Szerkesztve ]
-
Azazel999
csendes tag
válasz Azazel999 #1996 üzenetére
Nos, erre jutottam, de futtatáskor a vektoromból kifutok a számlálással valamiért:
void Fa::vag(Fa* v_pont){
vector<Fa*> kicsik;
vector<Fa*> nagyok;
Fa *aktualis = this, *kovetkezo;
//fa szétdarabolása
while (aktualis->kulcs != v_pont->kulcs){
if (aktualis->kulcs < v_pont->kulcs){
kicsik.push_back(aktualis);
kovetkezo = aktualis->jobb;
aktualis->jobb->apa = NULL;
aktualis->jobb = NULL;
} else if (aktualis->kulcs > v_pont->kulcs){
nagyok.push_back(aktualis);
kovetkezo = aktualis->bal;
aktualis->bal->apa = NULL;
aktualis->bal = NULL;
}
}
//vágási elem gyrekeinek levágása
if (aktualis->bal != NULL){
kicsik.push_back(aktualis->bal);
kovetkezo = aktualis->jobb;
aktualis->jobb->apa = NULL;
aktualis->jobb = NULL;
} else if (aktualis->jobb != NULL){
nagyok.push_back(aktualis->jobb);
kovetkezo = aktualis->bal;
aktualis->bal->apa = NULL;
aktualis->bal = NULL;
}
//a kisebb- és nagyobb fa felépítése
for(int i = 1; i < kicsik.size(); i++){
kicsik.at(0)->beszur(kicsik.at(i));
}
for(int j = 1; j < nagyok.size(); j++){
nagyok.at(0)->beszur(nagyok.at(j));
}
//a vágási pont gyökérré tétele, a két fa ráakasztása
v_pont->bal = kicsik.at(0);
v_pont->jobb = nagyok.at(0);
v_pont->bal->apa = v_pont;
v_pont->jobb->apa = v_pont;
}[ Szerkesztve ]
-
Azazel999
csendes tag
válasz kingabo #1999 üzenetére
Sikerült!
Ez lett a vágás metódus:
Fa* Fa::vag(Fa* v_pont){
vector<Fa*> kicsik;
vector<Fa*> nagyok;
Fa *aktualis = this, *kovetkezo;
//fa szétdarabolása
int count = 0;
while (aktualis->kulcs != v_pont->kulcs){
if (aktualis->kulcs < v_pont->kulcs){
kicsik.push_back(aktualis);
kovetkezo = aktualis->jobb;
aktualis->jobb->apa = NULL;
aktualis->jobb = NULL;
cout << "jobbra" << endl;
} else if (aktualis->kulcs > v_pont->kulcs){
nagyok.push_back(aktualis);
kovetkezo = aktualis->bal;
aktualis->bal->apa = NULL;
aktualis->bal = NULL;
cout << "balra" << endl;
}
aktualis = kovetkezo;
}
cout << "kint vagyok a ciklusbol" << endl;
//vágási elem gyrekeinek levágása
if (aktualis->bal != NULL){
cout << "vagasi_pontnak bal fia van" << endl;
kicsik.push_back(aktualis->bal);
aktualis->bal->apa = NULL;
aktualis->bal = NULL;
}
if (aktualis->jobb != NULL){
cout << "vagasi_pontnak jobb fia van" << endl;
nagyok.push_back(aktualis->jobb);
aktualis->jobb->apa = NULL;
aktualis->jobb = NULL;
}
cout << "vagasi pont gyerekei levagva" << endl;
vector<Fa*>::const_iterator iter;
//a kisebb- és nagyobb fa felépítése
for(int i = 1; i < kicsik.size(); ++i){
cout << "kisfa" << endl;
kicsik.at(0)->beszur(kicsik.at(i));
//kicsik.at(i)->kiir();
}
for(int j = 1; j < nagyok.size(); ++j){
cout << "nagyfa" << endl;
nagyok.at(0)->beszur(nagyok.at(j));
//nagyok.at(j)->kiir();
}
//a vágási pont gyökérré tétele, a két fa ráakasztása
v_pont->bal = kicsik.at(0);
v_pont->jobb = nagyok.at(0);
v_pont->bal->apa = v_pont;
v_pont->jobb->apa = v_pont;
//v_pont->kiir();
return v_pont;
}Bocs, ha nem volt egyértelmű a megfogalmazás, igyekeztem részletesen körülírni. Németh Tamás (SZTE-n tanít) honlapján az alga II. előadásfóliák között ott ez az önszervező bináris keresőfa (nem tudom, hogy szabad-e linkelni ide, ezért nem teszem). Ott folyamatábrával szemlélteti is, az sokkal érthetőbb, mint az én makogásom. Egyébként igazad lehet a rekurzióval, valószínűleg sokkal egyszerűbb lenne vele, de én már ennek is örülök. Ezt a metódust meg kell hívni a fa gyökerére, és a visszaadott érték lesz az új fa.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Formula-1
- Világ Ninjái és Kódfejtői, egyesüljetek!
- Motoros topic
- Politika
- iPhone topik
- Kicsit extrémre sikerült a Hyte belépője a készre szerelt vízhűtések világába
- Rövid előzetesen a S.T.A.L.K.E.R. 2: Heart of Chornobyl
- Opel topik
- Házimozi haladó szinten
- Samsung Galaxy S24 - nos, Exynos
- További aktív témák...