Dynamické nastavení členu třídy ? – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Dynamické nastavení členu třídy ? – C / C++ – Fórum – Programujte.comDynamické nastavení členu třídy ? – C / C++ – Fórum – Programujte.com

 

mrkure0
Duch
2. 11. 2011   #1
-
0
-

Zdravím, mám třídu množina, explicitní konstruktor má jeden argument, kterým je hodnota argumentu programu a ve třídě pak pole stringů, zde nastaveno na 20, po spuštění konstruktoru je uživatel vyzván pro zadávání stringů, jejichž počet je roven právě hodnotě argumentu programu, ty konstruktor zadává do pole, lze nějak dynamicky nastavit toto pole tak aby tam místo 20 byla právě hodnota argumentu programu ?

class mnozina
{
private:
string prvek [20];
int pocet_prvku;
public:

mnozina(int m) {

  pocet_prvku=0;

  for(int i=0; i<m; i++) {
   cout<<"prvek "<<i+1<<" :";
   cin>>prvek[i];
   pocet_prvku++;
  }
  for(int i=0; i<pocet_prvku; i++) {
   cout<<prvek[i]<<"  ";
  }
}
};

int main (int argc,char * argv[])
{
mnozina a (atoi(argv[1])) ;
return 0;
}

Nahlásit jako SPAM
IP: 81.19.35.–
yaqwsx+9
Posthunter
2. 11. 2011   #2
-
0
-

Velikost pole musí být u C++ známá v době překladu. Pokud chceš mermocí pole, tak pole libovolné délky můžeš vytvořit pomocí operátoru new. Nesmíš však pak v destruktoru třídy zapomenout paměť uvolnit pomocí delete.

Jednodušší, spolehlivější a pohodlnější řešení je použít třídu vector - ta se o paměť stará sama. Je to obdoba pole, jen se umí dynamicky zvětšovat.

Nahlásit jako SPAM
IP: 85.160.127.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
mrkure0
Duch
2. 11. 2011   #3
-
0
-

#2 yaqwsx
Vektor mám zakázanej, navíc v tom programu se dále prováděj operace s množinama, přetěžování operátorů, průnik, sjednocení, rozdíl. Takže předpokládám, že by to vypadalo nějak takhle ?

class mnozina
{
private:
string * prvek;
int pocet_prvku;

public:

mnozina(int m) {

  pocet_prvku=0;
  string * pole = new string[m];
  prvek = pole;
  for(int i=0; i<m; i++) {
   cout<<"prvek "<<i+1<<" :";
   cin>>pole[i];
   pocet_prvku++;
  }
  for(int i=0; i<pocet_prvku; i++) {
   cout<<prvek[i]<<"  ";
  }
}
~mnozina() {
  delete prvek;
  prvek=0;
}

};
Nahlásit jako SPAM
IP: 81.19.35.–
Tom
~ Anonymní uživatel
434 příspěvků
3. 11. 2011   #4
-
0
-

#3 mrkure
Pokud alokujes pole pomoci new [], tak je treba pouzit "delete[] pole" a ne jen "delete pole" (pac pole a ukazatele, atp.).

Nahlásit jako SPAM
IP: 212.4.138.–
pety
~ Anonymní uživatel
2 příspěvky
3. 11. 2011   #5
-
-2
-
Mimo téma

To: MrKure

Pane Prochazka stavte se radeji ohledne projektu na konzultaci. Bude to rozhodne efektivnejsi, nez lovit rozumy od zoufalcu na netu.

Tyhle stranky po zkusenostech z predchozich let docela sledujeme...

Zaroven Timto zdravim adminy: programujete.com ;-)

Pety.

Nahlásit jako SPAM
IP: 147.229.75.–
mrkure0
Duch
3. 11. 2011   #6
-
0
-

Vážený pane Kontroler, předně bych se vyvaroval označování diskutujících jako zoufalců. Nemám dostatek času na to, abych chodil na konzultace, nicméně za předpokladu, že bych nebyl schopen problém vyřešit, jistě se dostavím. Osobně nevidím důvod, proč nezískávat informace z nejrůznějšího spektra informačních zdrojů a doufám, že jste schopen odlišit rozdíl mezi opsáním kódu a dotazem na konkrétní problém. Za předpokladu, že budete chtít v diskusi pokračovat, poprosil bych vás o PM. Přeji pěkný den.

Nahlásit jako SPAM
IP: 81.19.35.–
Tom
~ Anonymní uživatel
434 příspěvků
3. 11. 2011   #7
-
0
-

Zeby nejaky zoufaly asistent z VUT, co si potrebuje pohonit ego? :)

Nahlásit jako SPAM
IP: 89.103.120.–
yaqwsx+9
Posthunter
3. 11. 2011   #8
-
+1
-
Zajímavé

#5 pety
No, abych ty zoufalce nebral osobně...

#3 mrkure
Pety má pravdu v tom, že radši choď na konzultace.

Osobně nevidím nic špatného na tom, když se člověk, jako mrkure, zeptá na konkrétní otázku, na konkrétní problém. On tady nechce, aby někdo za něj vypracoval celý program (jako někteří experti), což už "košer" rozhodně není.

Nahlásit jako SPAM
IP: 85.160.95.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
pety
~ Anonymní uživatel
2 příspěvky
3. 11. 2011   #9
-
0
-

To: yaqwsx

Diky za podporu. Studenti velmi casto nechteji pomoc, ale chteji mit hotove reseni.

Jako napr. tady:

http://programujte.com/forum/vlakno/14377-shanim-programatora-na-projekt-do-skoly-za-1000kc/

http://programujte.com/forum/vlakno/14192-c-a-zapouzdreni/

http://programujte.com/forum/vlakno/15796-4-jednoduche-programy-500kc/

http://programujte.com/forum/vlakno/14115-shanim-programatora-c-jednoduche-a-mirne-pokrocile-kratke-programy/

A to uz je proste chovani, za ktere se na zahranicnich skolach podstupuje karne rizeni a narizuji

verejne prospesne prace. ;-)

to: Tom

Mate naprostou pravdu VUT v Brne proste nejsou prava v Plzni. :-)

to:MrKure

Kdybyste nenapsal tohle:

"Vektor mám zakázanej, navíc v tom programu se dále prováděj operace s množinama, přetěžování operátorů, průnik, sjednocení, rozdíl."

tak by mi to vubec nevadilo. Zareagoval jsem v okamziku, kdy zacalo byt jasne, ze si nechavat psat 

projekt, ktery ma byt vyhradne a pouze Vasim dilem. Nikoliv tedy dilem programatorske komunity.

Howgh,

Pety

Nahlásit jako SPAM
IP: 147.229.75.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 124 hostů

Moderátoři diskuze

 

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