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

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

 

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

Shaolin
C / C++ › win32 posilani paketu
23. 4. 2009   #99755

Zdravim,
potrebuji posilat a prijimat pakety a nemuzu najit vhodne materialy, jak na to. Znate nekdo nejaky odkaz nebo ukazkovy kod?

Shaolin
C / C++ › Ukládání potomků jedné nadtř…
24. 2. 2009   #95931

Přikládám moje druhé řešení pomocí pointerů. Tady ale zase narážím na problém, že se mi ruší mnou vytvořené objekty a pak seznam ukazuje na neplatné pointery. Už si nevím rady.

#include <cstdlib>
#include <iostream>
#include <list>
#include <string.h>

using namespace std;

class Tvar {
protected:
int x, y;
public:
Tvar() {x = 0; y = 0;} ;
int getX() {return x;};
int getY() {return y;};
};

class Obdelnik: public Tvar {
int sirka, vyska;
public:
Obdelnik(const int &sx, const int &sy, const int &sir, const int &vys) {
x = sx;
y = sy;
sirka = sir;
vyska = vys;
};
int getSirka() {return sirka;};
~Obdelnik() {cout << "zrusen";};
};

class Seznam {
private:
list<Tvar*> seznam;
public:
Seznam() {};
void vloz(Obdelnik &obd) {
seznam.push_back(&obd);
};
void vyjmi() {
list<Tvar*>::iterator it;
for (it=seznam.begin(); it!=seznam.end(); it++) {
Obdelnik *obd = (Obdelnik*) *it;
cout << obd->getSirka();
}
}
};

int main(int argc, char *argv[])
{
int poradi = 0;

// toto funguje, ale je to neprakticke na pouziti
// Obdelnik obd(2, 0, 0, 0);
// sez.vloz(obd);
// Obdelnik obd2(2, 0, 1, 0);
// sez.vloz(obd2);
// Obdelnik obd3(5, 0, 5, 0);
// sez.vloz(obd3);
// sez.vyjmi();

// po provedeni tohoto jsou spatne pointery, protoze se objek Obdelnik prubezne rusi, jak to vyresit?
Seznam sez;
for (poradi = 0; poradi < 5; poradi++) {
Obdelnik obd(2, 0, poradi, 0);
sez.vloz(obd);
};
sez.vyjmi();

system("PAUSE");
return EXIT_SUCCESS;
}

Shaolin
C / C++ › Ukládání potomků jedné nadtř…
24. 2. 2009   #95930

Ahoj,
jsem začátečník a snažím se mít jednoho předka a z něj dělat potomky. Tyto potomky chci vkládat do jednoho seznamu a pak mít možnost je z něj zase vytahovat. Chci se zeptat, jestli si myslíte, že to nějak lze. Uvádím můj pokus, který snad jasně ukazuje o co mi jde, ale nefunguje mi :-(

Díky za každé rady a tipy.

#include <cstdlib>
#include <iostream>
#include <list>
#include <string.h>

using namespace std;

class Tvar {
protected:
int x, y;
public:
Tvar() {x = 0; y = 0;} ;
int getX() {return x;};
int getY() {return y;};
};

class Obdelnik: public Tvar {
int sirka, vyska;
public:
Obdelnik(const int &sx, const int &sy, const int &sir, const int &vys) {
x = sx;
y = sy;
sirka = sir;
vyska = vys;
};
int getSirka() {return sirka;};
};

int main(int argc, char *argv[])
{
list<Tvar> seznam;
Obdelnik obd(2, 0, 0, 0);
seznam.push_back(obd);
Obdelnik obd1(3, 1, 1, 1);
seznam.push_back(obd1);

list<Tvar>::iterator it;
for (it=seznam.begin(); it!=seznam.end(); it++) {
Obdelnik *obd3 = (Obdelnik*) &*it;
cout << obd3->getSirka();
}
system("PAUSE");
return EXIT_SUCCESS;
}

Shaolin
C / C++ › [Algoritmus - rebus] Kruhový…
6. 1. 2009   #93698

Ahoj, heureka :-) To vypadá na ten správný algoritmus. Vyzkoušel jsem ho a vypadá to, že opravdu funguje. Někdo mi už předtím radil, abych zkusil použít dva různě rychlé pointery. Bylo to ale bez bližších podrobností a když jsem to zkoušel, tak mi to nijak nevycházelo. Gratuluju :-)

Shaolin
C / C++ › [Algoritmus - rebus] Kruhový…
5. 1. 2009   #93574

Přiznám se, že nechápu, co jsi tím myslel (možná je už moc pozdě :-), můžeš to prosím malinko rozvést?

Shaolin
C / C++ › [Algoritmus - rebus] Kruhový…
4. 1. 2009   #93572

To KIIV : Jo to vypadá jako jediné, velmi neefektivní řešení ;-) Ale asi jediné... Napadly mne různé vychytávky, ale žádná nebyla dokonalá.

Shaolin
C / C++ › [Algoritmus - rebus] Kruhový…
4. 1. 2009   #93570

Bohužel tu není žádné téma v diskuzi Programování - algoritmy (nebo obecné). Myslím, že by se hodilo... Píšu sem, protože tu je nejživější diskuze.

Řeším zajímavý problém.
Mějme dán jednosměrně zřetězený spojový seznam s nijak neomezeným počtem
prvků, který je zakončen odkazem na některý z prvků tohoto seznamu.
Tímto zpětným odkazem, který může vést na zcela libovolný prvek (první, poslední,
libovolný vnitřní ... ), vzniká cyklická struktura.

Úkolem je najít algoritmus, který určí
celkový počet prvků (tj. délku) tohoto seznamu.
- algoritmus však může vedle samotného spojového seznamu použít jen
pomocné paměti konstantní velikosti.

Už to řeším docela dlouho a stále se nemůžu dobrat kvalitního řešení, které by řešilo všechny možné případy.

Znáte někdo tento problém a víte, jak ho vyřešit?

 

 

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