C++ dinamikus tömbök és struktúrák

Címkék
C++ dinamikus tömbök és struktúrák
2013-09-11T17:09:02+02:00
2013-09-15T22:12:13+02:00
2022-08-08T05:15:30+02:00
3Ducker
Még csak most ismerkedek a C++-al, és nem tudom, hogy hogy lehet dinamikusan kezelni az osztályokat. Lényeg: olyan adatszerkezet kéne nekem, ahol van egy objektum osztály, azon belül egy struktúra, a struktúrán belül pedig egypár tömb. Ezeknek mind dinamikusaknak kell lenniük, tehát menet közben kell hozzáadnom az új objektumosztályat vagy a struktúrát. Minél egyszerűbben és érthetőbben, lehetőleg.
És Google-t nem kérek.
Se Yahoo-t.
És egyebeket.
Mutasd a teljes hozzászólást!
Example


vector <int> example; helyett amit írtam: vector<myClass> example;

C++ osztályt remélem tudsz magadtól írni!
Tele a net példákkal.

C++
Mutasd a teljes hozzászólást!

  • std::vector


    #include <vector> using namespace std; class myClass{ .... }; ... vector<myClass> my_objects_vect; myClass my_object; my_objects_vect.push_back(my_object); // hozzáadás. stb.
    Mutasd a teljes hozzászólást!
  • Ezt nem igazán értem. Ha lehetne, valami futtathatóbb, átláthatóbb forráskódot közölnél. Előre is köszönöm.
    Mutasd a teljes hozzászólást!
  • Ott a linkelt dokumentáció, kész példakódokkal..
    Ennél több mi kell még?
    Mutasd a teljes hozzászólást!
  • Example


    vector <int> example; helyett amit írtam: vector<myClass> example;

    C++ osztályt remélem tudsz magadtól írni!
    Tele a net példákkal.

    C++
    Mutasd a teljes hozzászólást!
  • Hát ha ennyit tudtatok segíteni, akkor nem volt értelme kiraknom a kérdést. Inkább megyek valamelyik univerzális oldalra. Nem azért van a pontozásos rendszer, hogy a válaszadókat ösztönözze a pontos, precíz válaszra? Ezt így biztos, hogy nem fogadom el válasznak, inkább töröltetem a kérdést. Nem volt elég érthető a kérdésem, vagy mi a kecskesajt? Hát emberek...
    Mutasd a teljes hozzászólást!
  • Add fel állás rovatba ha ennyi nem elég!
    Alap C++ tudást nem tudunk adni neked.
    Mutasd a teljes hozzászólást!
  • Nem 'kérdésed' volt, hanem 'megrendelésed', csak elég rosszul specifikált.
    Mutasd a teljes hozzászólást!
  • Lényeg: olyan adatszerkezet kéne nekem, ahol van egy objektum osztály, azon belül egy struktúra, a struktúrán belül pedig egypár tömb. Ezeknek mind dinamikusaknak kell lenniük, tehát menet közben kell hozzáadnom az új objektumosztályat vagy a struktúrát.

    Számomra egyáltalán nem világos, hogy mit szeretnél.

    Mi az az "objektum osztály"? Mit értesz structúra alatt?

    Szóval C++ ban van olyan hogy objektum, meg olyan is hogy osztály. Ha példányosítasz egy osztályt, akkor kapsz egy objektumot. Az osztály, meg a struktúra az (minimális eltérés mellett) szinonimák. És mind az osztály, mind a struktúra egy adatszerkezet is egyben. A másik ami nem világos, hogy mi legyen dinamikus. A C++ statikus nyelv, ezért már fordítás időben eldől a structúrák mérete.

    Ezeknek mind dinamikusaknak kell lenniük, tehát menet közben kell hozzáadnom az új objektumosztályat vagy a struktúrát.

    Nekem nem világos, hogy mihez szeretnél mit adni.
    Mutasd a teljes hozzászólást!
  • mi a kecskesajt?

    A fejés után összegyűjtjük a tejet egy kannában, és bevisszük a házba. Itt még egy alapos szűrésen esik át, majd betesszük a hűtőbe, hogy lehűljön. Erre a káros baktériumok szaporodásának megakadályozása miatt van szükség. Van, aki a sajtot nyers tejből készíti, én pasztőrözni szoktam, ami egy sima hőkezelés 65 fokon. (nem forralás!!!!!). Fél óra állás után visszahűtöm a tejet 32fokra, visszapótolom a tejsavbaktériumokat, és beoltom. Kétféle típusú sajtot csinálok - frisset valamint a hagyományos és népszerű félkeményet, de szívesen kísérletezek. Mint majdnem mindennel. Oltás után kb. 50 percig pihen a sajt, majd felvágom, darabolom egyenletes darabkákra.
    Mutasd a teljes hozzászólást!


  • 1. Nem azért csinálod ezt hogy tanuld a C++? Ha igen, akkor többet tanulsz belőle, ha magadnak csinálod meg, és érted meg, mint ha a kész kódot megkapnád.
    2. Ez a fórom arra van, hogy segítsen ha elakadtál, kapsz egy ötletet hogyan folytasd. Ne a kész megoldást várd. Még neked áll feljebb, hogy nem csinálják meg neked a feladatot....
    3. Amint elolvastam a problémádat, írtam rá egy megoldást. De az előbbi hozzászólásod után ne is reméld hogy közzé teszem.
    Menj "valamelyik univerzális" oldalra, és tedd fel ott a kérdésed, de ilyen modorral nem hiszem hogy fogsz választ kapni.
    Mutasd a teljes hozzászólást!
  • Mutasd a teljes hozzászólást!
  • Írtál egy választ, csak nem tetted közzé... Érdekesen hangzik.

    Tehát kezdő c++ozó vagyok, ezért nem tudom, milyen lehetőséget hogy kell alkalmazni. Elég sokat szarakodam vele eddig is, ne higgyétek, hogy megrendelést adtam le. Csak abból a linkből és félperc alatt összefuserált szarból nekem nem lesz jobb.
    Mutasd a teljes hozzászólást!
  • Javaslom, akkor kezdjük elölről a dolgot. Írd le a problémádat szabatosan. Ha a fogalmak még nem teljesen tiszták, akkor írd le konkrétumokkal; ne dinamikus objektum osztályokon belüli tömböket emlegess (aminek tényleg se füle, se farka), hanem teszem azt írd le, hogy kéne neked egy Könyvtár osztály, a Könyvtár példányok tartalmazni fognak Polc példányokat, a Polcokon meg lehet Könyv, vagy Folyóirat, és előre nem tudod, hány polc van egy könyvtárban, és hány könyv/folyóirat van a polcokon. (Most csak írtam valami példát, nem kell nagyon komolyan venni.)

    Ha a kérdést nem tudod jól feltenni, akkor a világ legnagyobb profija se fogja tudni jól megválaszolni.
    Mutasd a teljes hozzászólást!
  • Első normális válasz. KÖSZÖNÖM EMBER!!!!

    Szóval átfogalmazom:
    vannak iskolák, azon belül évfolyamok, azon belül pedig jegyek, a tanulók jegyei. Pl. Pascalban simán működött: iskola[11].evfolyam[7].jegyek[39] ez a hivatkozás.

    A program feladata feltölteni értékekkel a változókat, de nem tudjuk előre, hány iskola van, azon belül hány évfolyam, és hány tanuló.

    Érthető volt?

    És hangsúlyozom, kezdő c++-os vagyok, ne várja el tőlem senki, hogy ilyen dolgokat tudjak, és ti majd rávezettek. Amúgy is nektek egyszerűbb lenne leírni a választ, mint itt jártatni a szájatokat, azt pedig, hogy én mit tanulok belőle magas ívből le is szarhatjátok. Akinek nem inge, ne vegye magára.

    A kecskéről pedig annyit, hogy ez egy olyan kérdés mint pl. mi a túró. És én itt most nem azt kérdeztem, hogy
    A túró egy lágy aludttejrögökből álló, fehér színű tejtermék, A túró alapanyaga a tej. A házi készítés során a tejet hagyják előbb megaludni, utána felmelegítik, majd a túrós alvadékot vászonruhába vagy gézkendőbe rakják és felakasztják lecsöpögni. Amikor a savó lecsöpög, a kendőben csak a friss túró marad vissza. Nem szabad forralni, mert a túró rossz lesz és száraz. Csak hevíteni kell, maximum 60 fokra. A végén hagyni kell kihűlni. A gyárban ez a folyamat hasonló. Egy nagy tartályban a tejhez olyan tejsavbaktériumokat adnak, amelyek a tejet gyorsabban megalvasztják. Ezt követően az alvadékot felvágják és a tartályt felmelegítik. Majd a savót leengedik, és a túrót visszahűtik és a maradét savót pedig kicsurgatják belőle.
    Íze kissé savanykás. Leszűrése után puha, fehér darabkákból áll, sokféleképpen feldolgozható. Tehén- vagy juhtejből készítenek túrót.
    Mutasd a teljes hozzászólást!
  • Akkor az kell, amit a többiek mondtak, std::vector osztályt kell használnod. Ez olyan, mint egy tömb, kivéve, hogy változtatható a mérete menet közben. Szóval az Iskola osztályba kell majd egy vector<Evfolyam> az évfolyamok tárolására, az Evfolyam-ban egy vector<int> a jegyek tárolására.

    A vectort a végén a push_back() metódussal tudod bővíteni. (A kapott paramétert bemásolja az utolsó elem utánra.) A már benn levő elemeket a szokásos indexelés szintaxissal tudod kiolvasni és módosítani, véletlenül pont úgy, mint Pascalban. De nagyon a többi részletet nem akarom magyarázni, mert tényleg van rá kismillió könyv és tutorial.
    Mutasd a teljes hozzászólást!
  • Ezt írtam neki, majd elég lekezelően elhajtott minket a pistába.
    Mutasd a teljes hozzászólást!
  • vannak iskolák, azon belül évfolyamok, azon belül pedig jegyek, a tanulók jegyei.
    .
    .
    A program feladata feltölteni értékekkel a változókat, de nem tudjuk előre, hány iskola van, azon belül hány évfolyam, és hány tanuló.

    Végre kiderült, hogy mit is szeretnél.

    Bocsi, de szvsz mindezt megoldani C#, VB.Net (+ adatbáziskezelő: SQL 2008R2/12) használatával jóval egyszerűbb lehet.

    Én az adatbázis tervezésével kezdeném.
    Kreálnék táblákat az adatok fogadására, tárolt eljárásokat az adatforgalom kezelésére, s csak ezt követően nyúlnék a visual studio-hoz.
    Nyitok egy új winform-os project-et, a form-ra kreálok a datsource varázslóval tableadapter-t, mit ha ráhúzok a form-ra kapok egy datagridview-t, bindingsource-t, bindingnavigator-t, stb.
    A bindingnavigator segitségével kocoghatsz a datagridview sorai között előre-hátra, beszúrhatsz, törölhetsz, menthetsz adatokat.
    Mindezt egyetlen kódsor begépelése nélkül.
    Természetesen írhatsz kódot is s rajtad áll, hogy mit használsz fel, ill. dobsz el a varázsló által nyújtottakból.

    Mi a véleményed?
    Mutasd a teljes hozzászólást!
  • Igen, minden bizonnyal így van. C#-ban megvan már a kódom erre, azonban ott szerény eszközök vannak ezeknek az adatoknak a felhasználására. Ugyanígy Pascalban is. Ezért kell nekem C++-ban megírnom, csak hát a C# és Pascalon kívül nem ismerek más nyelvet, el kellett kezdenem a C++-t, és itt elakadtam. Azért köszönöm.
    Mutasd a teljes hozzászólást!
  • "ott szerény eszközök vannak ezeknek az adatoknak a felhasználására."

    Ezt kitudnád fejteni? Ilyen programot nem hiszem, hogy érdemes megírnod C++-ban, ha sokkal könnyebben tudsz vagy már írtál C#/.NET-es implementációt.

    Mit szeretnél, amit ott nem tudsz kivitelezni, de C++-ban igen (úgy hogy nem ismered még a nyelvet..)?
    Mutasd a teljes hozzászólást!
  • Elképzelhető hogy egy meglévő programban kell módosítania....
    Mutasd a teljes hozzászólást!
  • C#-ben szintén van "vector".
    List<T>

    pl.

    List<int> int_vector = new List<int>(); int_vector.Add(1); int_vector.Add(4); int_vector.Add(7); int someElement = int_vector[1];
    Mutasd a teljes hozzászólást!
  • Igen, tudok róla, köszönöm. Nem szeretném kifejteni, mégpedig azért, mert máskor, amikor kifejtettem, lehurrogtak, hogy ilyen programozási ismeretekkel rendelkezek, és máris ilyen bonyolult programot szeretnék megvalósítani.

    Másrészről pedig: ez csak egy kis töredéke lesz a szoftveremnek, amihez szükséges dinamikus adatstruktúra, a többi részhez már elég jól értek, mivel ott elég nagy részben kell a fizikai és a matematikai tudásomra támaszkodnom.
    Mutasd a teljes hozzászólást!
  • Valami ilyesmit szeretnél? Inkább std::map-et használtam, elvégre mégiscsak értelmesebb névvel azonosítani és nem számmal ezeket a dolgokat. Persze lecserélheted tömbökre és akkor index alapján azonosíthatod, de őszintén szólva nem látom még, hogy mi lesz ebből.

    #include <string> #include <map> struct Tanulo { std::map<std::string, int> jegyek; }; struct Evfolyam { std::map<std::string, Tanulo> tanulok; }; struct Iskola { std::map<std::string, Evfolyam> evfolyamok; }; int main() { std::map<std::string, Iskola> iskolak; iskolak["Valami Iskola"].evfolyamok["Első évfolyam"].tanulok["Gipsz Jakab"].jegyek["matek"] = 5; }
    Mutasd a teljes hozzászólást!
  • Eddig semmit nem írtál le mire kell a C++.
    Mindenre azt írtad: nem jó.Lehurrogtál mindenkit a topikban.
    Szerinted ki tud segíteni neked?
    Szerintem senki.
    Úgy adod elő a dolgot mintha az 50 pont az fizetség lenne.
    Mondjuk 50.000 Ft.
    Én feladtam...
    Mutasd a teljes hozzászólást!
  • kis töredéke lesz a szoftveremnek
    ...
    többi részhez már elég jól értek


    Akkor mi a kérdés? :) Csináld meg a többit, ezt hagyd a végére. Talán a megrendelőnek se fog feltünni, hogy nem működik ez a kis rész.

    Amúgy a kérdésedre a válasz bármelyik C++ könyvben benne van. Vegyél elő egyet, oszt nosza neki.

    Ilyen részeket keresd benne: c++ Kezdőknek #16 - Vector

    Mutasd a teljes hozzászólást!
Címkék
abcd