Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » Zufällige Liste

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
02.04.2004, 13:20 Uhr
cadaei



Hallo,

in einem Programm soll eine Liste erstellt werden, die die Zahlen von 1-n (n bestimmbar) enthält, die dann in eine zufällige Reihenfolge gebracht werden.
Eine Liste ist ja eigentlich ein simples Ding, aber ich schaff es einfach nicht, eine zu deklarieren. Nach einigem Suchen habe ich TList gefunden, das nimmt er aber auch nicht an. Vorstellen tu ich mir den Programmteil in etwa so:

C++:
randomize();
TList Liste;
for (int i=1; i <= n; i++)
   Liste.Add(i);
for (int j=1; j <= n; j++)
   Liste.Exchange(j, rand(n)+1) ;


Ob die Befehle so funktionieren, weiß ich nicht, ich werd aber aus der knappen Hilfe vom Borland C++ Builder über Listen nicht so ganz schlau.

Kann mir das vielleicht jemand bitte korrigieren oder mir einen Link über den Gebrauch von Listen geben. Gibt es überhaupt Listen in C++ oder muss man da Arrays nehmen?

Gruß
cadaei

Dieser Post wurde am 02.04.2004 um 13:32 Uhr von cadaei editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.04.2004, 19:59 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Nachdem es um den BCB geht, hab ich den Thread mal annektiert.
Die TList ist eine sehr allgemein gehaltene Liste, die Pointer speichert. Und zwar NUR Pointer, sonst nix. Wenn Du int's speichern willst, brauchst Du eine von TList abgeleitete Klasse. Für Strings gibts schon eine, nämlich die TStringList, aber wenn Du mit ints arbeiten willst, musst Du Dir schon Deine eigene schreiben. Ist aber kein großer Akt.
Allgemein gilt bei den VCL-Klassen des C++Builder: Nur über Zeiger ansprechen, also z.B.

C++:
TList* x = new TList();
...bla...
delete x;


Das liegt daran, dass die Klassenbibliothek des BCB in Delphi geschrieben ist, und das erlaubt nur die Instanziierung über den Heap. Technikgebrabbel, ich weiss, aber für Dich heisst das einfach, dass Du die Dinger IMMER über Zeiger ansprechen musst.

Wenn Du reines C++ schreiben willst, das auch mit anderen Compilern funktioniert (und das empfehl ich Dir), schau Dir die STL an. Ist beim C++Builder auch schon dabei und wesentlich einfacher zu verwenden. Z.B. die Klasse vector:


C++:
#include <vector>
using namespace std;

int main()
{
   vector<int> x;

   // Zahlen 1 bis 10 in der Liste speichern
   for(int i=1; i<=10; i++)
      x.push_back(i);

   // kein delete o.ä. nötig
}



Der STL-vector hat den Vorteil, dass Du ALLES speichern kannst, von Zeigern über int's bis zu Strings oder eigenen Objekten. Nur die Dokumentation ist IMO unter aller Sau. Google mal nach "STL tutorial" bzw. such hier im Forum, da findest Du einiges zum Thema.
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.04.2004, 20:21 Uhr
cadaei



Hi,

danke für die Antwort, aber inzwischen habe ich es anders lösen können, wenn ich mich auch drei Stunden (wirklich) lang drüber aufgeregt habe, dass String.insert(0,'1'); nicht funktioniert und dann rausgefunden habe, dass BCB einen eigenen String Typ verwendet und ich Insert statt insert schreiben muss, junge hat mich das Nerven gekostet :

Danke für den Tipp mit den Klassen usw., werds mir mal anschauen.

cadaei
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Borland C++ Builder ]  


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: