Problem mit Zufallszahlen (srand) bei Schiffe versenken



  • Hallo liebe Forumfreunde,

    ich versuche mich gerade an einer Programmierung für Schiffe versenken.
    Bin blutiger Neueinsteiger in dem Gebiet und brauche eure Hilfe 🙂
    Hier unten seht ihr den Auszug aus meinem Programm.

    Die Fehlermeldungen lauten in Linie 5 und 8:
    error: 'srand' was not declared in this scope.

    Wo liegt der Fehler? Ich komm einfach nicht dahinter..

    Danke schon im voraus für eure Hilfe 🙂

    void computerspielfeld_besetzen()
    {
    
        int zahl1, zahl2;
        srand(time(NULL));
        for(int i=0; i<5; i++)                        
        {
            zahl1= (rand() % 5);                        
            zahl2= (rand() % 5);
    
            if(Computer.besetzt[zahl1][zahl2]==true)  
            {
                i--;                                   
            }
    
            else if(Computer.besetzt[zahl1][zahl2] !=true)     
            {
                Computer.besetzt [zahl1][zahl2]=true;      
            }
        }
    }
    


  • #include <ctime> vergessen (C++) oder #include <time.h> (C)?



  • danke für die schnelle antwort.

    habe

    #include <ctime>
    

    zu beginn des programms eingefügt.
    wäre es hilfreich, wenn ich das komplette programm poste?



  • Ameisenhaufen_w203 schrieb:

    wäre es hilfreich, wenn ich das komplette programm poste?

    Ja. Oder besser ein kompilierbarer Codeausschnitt, bei dem der Fehler auftritt.



  • #error



  • Ich habs kurz kompiliert und mit den Zufallszahlen gibts kein Problem mehr.

    Allerdings fehlen fuer die Funktionen

    void gewinner_ermitteln();
    void computer_ziehen();
    void help();
    

    die Funktionsdefinitionen. Deswegen gibt es Fehlermeldungen beim Linken.



  • ouuuuh, sorry.. tut mir leid 😃 habe aus versehen eine ältere version gepostet.

    tut mir leid, wenn ich jetzt total dumm frag. aber was bedeutet kompilieren?



  • Wenn ich mich nicht vertan habe, dann ist das hier meine letzte Version des Programmes 🙂
    Tut mir echt total leid.. aber bei mir zeigt es immer noch diesen Fehler an und ich habe keine Ahnung, was das Problem ist..



  • Ameisenhaufen_w203 schrieb:

    tut mir leid, wenn ich jetzt total dumm frag. aber was bedeutet kompilieren?

    Lies mal (zumindest den Anfang) des Wikpedia Artikels:
    Wikpedia - Compiler

    Hier eine grobe Kurzversion:
    Der Compiler uebersetzt dein Programm in eine andere Programmiersprache, z.B. in eine Assemblersprache, die denn von einem Assembler in Maschinencode uebersetzt wird. Dein Computer versteht kein C++ - der kennt nur gewisse Maschineninstruktionen wie zum Beispiel einen Wert aus dem Speicher laden, zwei Zahlen addieren etc.
    Ausserdem fuehrt der Compiler z.B. Type Checks durch und noch vieles mehr. Sollte im Artikel genauer stehen. Wenn du dort etwas nicht verstehst dann frag einfach nach 😉



  • In CodeBlocks drücke ich einfach die "Build and run" Taste oben links,
    Das wird doch normal kompilieren genannt.. oder nicht?! 🙂
    Zumindest habe ich in das bei anderen, leichteren Programmen immer so gemacht und es hat funktioniert..



  • Mit welcher Version von CodeBlocks hast du das Programm getestet?
    Kann es sein, dass ich aus versehentlich eine ältere Version benutze und es deshalb nicht geht? 🙂



  • Ja, bei "Build and Run" wird - neben anderem - dein Programm kompiliert.

    Ameisenhaufen_w203 schrieb:

    Mit welcher Version von CodeBlocks hast du das Programm getestet?
    Kann es sein, dass ich aus versehentlich eine ältere Version benutze und es deshalb nicht geht? 🙂

    Welchen Compiler benutzt du denn? CodeBlocks kann man mit vielen verschiedenen Compilern verwenden.
    Ich selber benutze den MSVC Compiler. Der haelt sich nicht immer ganz an den Standard und von daher koennte etwas kompilieren was eigentlich nicht kompilieren duerfte.

    Falls du dir nicht sicher bist, dann kannst du den Code mal auf http://ideone.com/ hochladen, als Sprache C++ auswaehlen und sehen, obs kompiliert. Da wird der gcc verwendet und soweit ich weiss haelt sich der gut an den Standard.
    Falls es dann einen Fehler gibt beim Kompilieren kannst du den Link zu deinem Code posten.



  • Bin dir echt sehr dankbar, dass du dich meinem Problem angenommen hast und mir hilfst 🙂

    habs gerade getestet und es zeigt mir

    result: compilation error

    an.



  • Wenn du ein

    #include <cstdlib>
    

    hinzufuegst, dann sollte es klappen. Ist bei MSVC (ich glaube inkorrekterweise) nicht notwendig.



  • 🙂 ES FUNKTIONIERT :))))))))))))
    Tausendfaches Dankeschön für deine schnelle und gute Hilfe 🙂


Anmelden zum Antworten