String-Index beim BCB



  • Jetzt hab ich schon statt 4 die 5 hngeschrieben, aber immernoch der gleiche Fehler, weiß net genau, aber irgendwie meckert er nicht wegen dem index, sonst hätte er mir ja nicht die gleiche oder gar überhaupt keine fehlermeldung mehr gebracht.



  • ah, cool, ich habs. So klappts:

    String name="Name";
    String Copy;
    int zufall;

    [...]

    srand(time(0));
    zufall=rand()%5;
    for(int i=0;i<4;i++)
    Copy=Copy+name[zufall];



  • Wohl mehr aus Zufall. Auch hier ist nicht garantiert das Zufall nicht Null liefert.



  • addiere einfach zum zufallswert 1 hinzu.



  • Wieso sollte es 0 liefern?

    rand()%(4-1+1)+1;

    ist das selbe wie

    rand()%5;

    Alsodas versteh ich jetzt wieder nicht.



  • und sunday, dann kommt er ja über das Maximum des Strings.



  • es ist nicht das Gleiche.
    Wie wäre es mit (rand()%4)+1;
    oder besser

    (rand()%(name.Lenght()-1))+1

    [ Dieser Beitrag wurde am 27.06.2003 um 11:36 Uhr von Braunstein editiert. ]



  • #include <stdlib.h>  // für random()
    
    void __fastcall TForm1::FormShow(TObject *Sender)
    {
      // zufallsgenerator initialisieren
      randomize();
    }
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      // random liefert eine zufallszahl im bereich 0-4;
      int zahl = random(5) + 1;
    }
    


  • Dann bau dir ne abfrage

    if(zufall == 0)
      zufall++;
    

    dann is das auch kein prob mehr. 🙂



  • Danke Sunday, so einfach ist das beim BCB, cool.



  • Original erstellt von Spieleprogrammierer:
    [...]so einfach ist das beim BCB, cool.

    Nein, so einfach ist das mit C.... das hat nix mit dem BCB zu tun. Vielleicht solltst du über Vorschläge anderer erst nachdenken, bevor du sie als "Fehlerhaft" beurteilst...

    -junix



  • junix, ich habs noch nie erlebt, dass rand()%5 0 zurückliefert. und die Funktion random(); msagte jemand zu mir wrde aus C++ rausgenommen, sodass man srand(); nehmen müsste. Nicht hier, aber in meiner Schule.



  • srand:

    Beschreibung

    Initialisiert den Zufallszahlengenerator.

    Der Zufallszahlengenerator wird beim Aufruf von srand mit einem Argumentwert von 1 neu initialisiert. Durch den Aufruf von srand mit einem bestimmten Parameter seed kann er auf einen neuen Startwert gesetzt werden.

    Rückgabewert

    Keiner

    Beschreibung

    Zufallszahlengenerator.

    random liefert eine Zufallszahl im Bereich von 0 bis (num-1) zurück. random(num) ist ein Makro, definiert in stdlib.h. Sowohl num
    als auch die zurückgelieferte Zufallszahl sind Integerwerte.

    Rückgabewert

    random liefert einen Zahl zwischen 0 und (num-1) zurück.

    Protabilität: Win32

    Noch fragen ?



  • Original erstellt von Spieleprogrammierer:
    junix, ich habs noch nie erlebt, dass rand()%5 0 zurückliefert.

    Da es sich um eine Zufallszahl handelt, wirst du wohl zufällig dieses Verhalten nie erlebt haben... oder (was ich mir eher vorstellen kann) es hat einen Fehler versacht, du hast ihn versucht zu reproduzieren, ging nimma, -> da war doch kein fehler

    Original erstellt von Spieleprogrammierer:
    und die Funktion random(); msagte jemand zu mir wrde aus C++ rausgenommen, sodass man srand(); nehmen müsste. Nicht hier, aber in meiner Schule.

    Komplett falsch. randomize() ist eine original Borland verbesserte Initialisierungsfunktion die vermutlich intern nix weiter macht als srand aufzurufen. srand hingegen ist ANSI C.

    -junix



  • Au jetzt seh ich das erst. Du hast ja srand mit random verglichen. Das zu vergleichen ist Äpfel mit Birnen verglichen denn srand macht nicht das Selbe wie random... und das wurde dir bereits anderswo eigentlich eingeprügelt.

    -junix



  • Original erstellt von Spieleprogrammierer:
    Wieso sollte es 0 liefern?
    rand()%(4-1+1)+1;
    ist das selbe wie
    rand()%5;
    Alsodas versteh ich jetzt wieder nicht.

    ist mir klar. ist ja auch mathe. du solltest doch nix mehr posten, was mit mathe zu tun hat.
    rand()%(4-1+1)+1;

    rand()%4+1;
    und hier greift "punktrechnung vor strichrechnung" und du bist raus.



  • jajaja, is ja gut, ich glaube nach 3 Antworten, die die selbe aussage haben, kann ich's mir gerade noch so von alleine einprägen.


Anmelden zum Antworten