Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Beliebige Grösse eines Arrays?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
15.04.2003, 11:44 Uhr
Drager



Hoi

wie kann ich die Größe eines Arrays von einer Eingabe abhänig machen?

int AnzahlderElemente;
cin >> AnzahlderElemente;
int Elemente[AnzahlderElemente];

hat nicht funktioniert.. hab auch mir (const) etwas rumprobiert aber auch nicht geklappt...

kann mir da wer helfen?

mfg

Drager
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
15.04.2003, 12:06 Uhr
~sabst
Gast


Hey Drager,
du kannst dir den Speicherbereich dynamisch holen, z.B. mit malloc.

int *pnElemente;
pnElemente = (int*) malloc(AnzahlderElemente * sizeof(int));
später wieder löschen.

Sabst
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
15.04.2003, 12:09 Uhr
Alois



1. Möglichkeit:
Du nimmst dir einen Zeiger, über den du dir den gewünschten Speicherplatz freimachst:

C++:
int *Elemente;
int AnzahlderElemente;
cin << AnzahlderElemente;
Elemente = (int*)calloc(AnzahlderElemente, sizeof(int)); // Ab jetzt hast du einen Array von Elemente[0] ...
//Und sobald du mit calloc Speicher reserviert hast, kannst du mit realloc die Größe des Array verändern:
realloc(Elemente, 25);
//Am Schluss musst du den Speicherplatz wieder freigeben:
free(Elemente);



2. Möglichkeit:
Du nimmst einen Vektor. Damit kenn ich mich aber nicht aus.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
15.04.2003, 13:01 Uhr
~0xdeadbeef
Gast


AAARGH! Mach das bloß nicht! Wenn du schon C++ codest, kannst du auch die angenehmen Seiten gebrauchen:

C++:
int anzahl, *elemente;
cin >> anzahl;
elemente = new(int[anzahl]);
//...
delete elemente;

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
15.04.2003, 13:02 Uhr
virtual
Sexiest Bit alive
(Operator)


@Alois
Das mit dem realloc stimmt zwar, aber man muss es auch richtig anwenden:

C++:
int * temp = realloc(Elemente, sizeof(int)*25);
// ... Fehlerbehandlung hier einfügen, wenn realloc schief ging
Elemente = temp;


Mit std::vector gehts am simplesten:

C++:
int AnzahlderElemente;
cin << AnzahlderElemente;
std::vector<int> Elemente(AnzahlderElemente);


Oder, wenn die Elemente alle anfangs den Wert 4711 haben sollen:

C++:
int AnzahlderElemente;
cin << AnzahlderElemente;
std::vector<int> Elemente(AnzahlderElemente, 4711);


--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 15.04.2003 um 13:11 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
15.04.2003, 13:05 Uhr
Drager



oki danke

funktioniert
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
15.04.2003, 18:01 Uhr
Tommix



Hallo,
@0xdeadbeef:
Mach das bloß nicht!
Es muss nämlich

C++:
delete[] elemente;


heißen.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: