Dynamicka zmena pole C++ – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Dynamicka zmena pole C++ – C / C++ – Fórum – Programujte.comDynamicka zmena pole C++ – C / C++ – Fórum – Programujte.com

 

Honza0
Stálý člen
15. 1. 2007   #1
-
0
-

Ahoj,... mam pole, ktere zatim obsahuje char 'a'.

char *pole;

...
pole = new char;
*pole = 'a';
...

ted bych do tohoto pole chtel alokovat misto na dalsi char a vlozit do nej 'b'. Jak to mam udelat? Kdyz dam o5
pole = new char;
tak si proste alokuju uplne novy char a to 'a' uz nikdy nenajdu (a uz vubec ne na pole[0] :D, kde to btw potrebuju). Poradte prosim. Dik

Nahlásit jako SPAM
IP: ...–
NECIN DRUHYM TO, CO NECHCES, ABY ONI CINILI TOBE!
Jakub0
Super člen
15. 1. 2007   #2
-
0
-

Vůbec netuším, čeho chceš dosáhnout, ale IMHO si budeš muset původní hodnotu někam uložit a potom vytvořit větší pole = new char[2]; //aby se tam oba znaky vešly.

Nahlásit jako SPAM
IP: ...–
Věřím, že můžete v životě získat všechno, co budete chtít, když budete pomáhat druhým lidem, aby dostali to, co si přejí oni. - Zig Ziglar TOPlist
Honza0
Stálý člen
15. 1. 2007   #3
-
0
-

Tak toho jsem se bal... budu si tedy muset vytvorit nove pole o jedno vetsi, pak vse z toho prvniho pole vlozit do toho noveho a nakonec tu novou hodnotu? A samozrejme posleze dealokovat to puvodni pole?
V podstate chci dosahnout tohoto... mam funkci

char *funkce(char *);

musim vzit ten retezec na vstupu, znak po znaku ho projit a uvnitr funkce je nejakej SWITCH, kterym rozhoduju co delat, kdyz tam budou urcite znaky. Mam tedy nejakej vystupni retezec, kterej se musi dynamicky menit. Do nej ukladam prave ty urcite znaky, ale predem nevim, kolik jich bude...
Mno... a ted tak premyslim, ze bych ho nemenil dynamicky, ale udelal si nejakej buffer o velikosti trea 2048 a ulozil do nej ty znaky, potom ho predelal do jineho a buffer posleze odstranil, aby to nezralo tolik pameti... to by mozna bylo jednodussi. :)
Ale i tak, jestli uz chapes, o co mi jde, tak jak bych to udelal dynamicky?

Nahlásit jako SPAM
IP: ...–
NECIN DRUHYM TO, CO NECHCES, ABY ONI CINILI TOBE!
Honza0
Stálý člen
15. 1. 2007   #4
-
0
-

Nejvic by me na tom stvalo, ze bych to musel pokazde cyklem zkopirovat do toho noveho pole... NESMIM POUZIVAT ZADNE DODATECNE KNIHOVNY... omlouvam se za, mozna, takove zacatecnicke dotazy, ja vlastne v C++ neprogramuji moc rad, i kdyz se to urcite jednou naucim vic, ja jsem se zamiloval do Common Lispu, ale proste to musim odevzdat, bo to mam do skoly ;)

Nahlásit jako SPAM
IP: ...–
NECIN DRUHYM TO, CO NECHCES, ABY ONI CINILI TOBE!
Jakub0
Super člen
15. 1. 2007   #5
-
0
-

NESMIM POUZIVAT ZADNE DODATECNE KNIHOVNY... omlouvam se za, mozna, takove zacatecnicke dotazy, ja vlastne v C++ neprogramuji moc rad, i kdyz se to urcite jednou naucim vic, ja jsem se zamiloval do Common Lispu, ale proste to musim odevzdat, bo to mam do skoly ;)


Zapamatuj si následující: Nikdy, ani kdyby tě na nože brali, nesmíš říkat, že máš něco do školy, nebo jistojistě odejdeš s nepořízenou, diskutéři fóra jsou na tohle extrémně alergičtí. Takže bacha na to! :D Teď dostanu sprďáka jako kr4v4. omg. </eof OT>

Jinak někde to tady na fóru určitě je(tuším, že jsem to zrovna někde psal sám já), tak tě odkáži pouze na vyhledávání, sorry. Před nedávnem jsem si omylem vymazal obsah obou disků, a protože jsem si z lenosti ještě nenaistaloval žádný C++ compatible IDE a taky díky tomu, že mám zrovna šíleně pomalej net(z4sr4ný FUP :X ), nemám kde bych to zkusil. I když pokud to nespěchá, můžeš počkat(tedy jestli jsi s tou školou někoho nedopálil :) ) než někdo postne řešení. Btw. nezapoměň ukončovat pole řetězců '\0' tímhle(sakra nevím, jak se tomu zrovna nadává).

Nahlásit jako SPAM
IP: ...–
Věřím, že můžete v životě získat všechno, co budete chtít, když budete pomáhat druhým lidem, aby dostali to, co si přejí oni. - Zig Ziglar TOPlist
Honza0
Stálý člen
15. 1. 2007   #6
-
0
-

JJ, to je jasny, ukoncuju '\0'... podle me je to nulovy znak :)... proc by to melo lidem vadit (to s tou skolou myslim - at uz pro priste vim)? Jo jinak jsem to snad zvladl s tim bufferem, jak jsem psal. Uz to mam funkcni. Dik

Nahlásit jako SPAM
IP: ...–
NECIN DRUHYM TO, CO NECHCES, ABY ONI CINILI TOBE!
Jakub0
Super člen
15. 1. 2007   #7
-
0
-

proc by to melo lidem vadit (to s tou skolou myslim - at uz pro priste vim)?


Zkus si přečít povícero témat na fórech a pochopíš. :) Každopádně bych tuto zásadu přídal do http://exploited.cz/otazky/. :D Není to tak kruté, jak popisuji, ale je daleko lepší se toho vyvarovat.

Nahlásit jako SPAM
IP: ...–
Věřím, že můžete v životě získat všechno, co budete chtít, když budete pomáhat druhým lidem, aby dostali to, co si přejí oni. - Zig Ziglar TOPlist
sn3d0
Věrný člen
15. 1. 2007   #8
-
0
-
Nahlásit jako SPAM
IP: ...–
shutdown -h now
ilserk0
Duch
15. 1. 2007   #9
-
0
-

To BigBear:Preco pouzivas funkciu na to aby ti kontrolovala znak? skus to napr:
cout << "Zadaj nieco";
while(cin.get(ch) != '\0')
{
switch:
{...}
}
takto ti to bude kontrolovat bez toho aby ti to muslo skakat na nejaku funkciu.

ak by si mal nejake otazky tak moje icq je 416-466-789

Nahlásit jako SPAM
IP: ...–
Jakub0
Super člen
15. 1. 2007   #10
-
0
-

sn3d píše:#
# Skus sa pozriet po funkcii realloc().#
##
#http://www.cplusplus.com/reference/clibrary/cstdlib/realloc.html


To je ale céčkovská fce, která sice lze použít v C++, ale asi to nebude zovna dle Bjaneho coding style standards, přestože by se její použití asi v tomto případě vyplatilo. Jinak ještě tuším, že WinAPI a možná že i *nix má nějaké fce na práci s pamětí. ale míchání různých metod bych is tedy za rámeček nedal. :)

Nahlásit jako SPAM
IP: ...–
Věřím, že můžete v životě získat všechno, co budete chtít, když budete pomáhat druhým lidem, aby dostali to, co si přejí oni. - Zig Ziglar TOPlist
sn3d0
Věrný člen
15. 1. 2007   #11
-
0
-

V C++ nieje zakazane pouzivat Ceckovske fcie ;) ved koniec koncov preto existuju paralelne headre(napr k math.h cmath atd).To by som potom nemohol pouzivat WinAPI v C++(nakolko WinAPI su Ceckovskeho charakteru) Ale ked uz tak striktne dodrziavat C++ tak potom moze pouzit stream http://www.cplusplus.com/reference/iostream/

Zaujimave je ze ja som takmer dodnes nepouzil realloc.Stale som sa opieral v C++ o vector, map, ci spominane streami.. ;)

Nahlásit jako SPAM
IP: ...–
shutdown -h now
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, 15 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ý