erbitte aufschluss zu dem Quellcode



  • Hallo liebe C++ Com.

    leider bin ich von gerade von meinem Übungscode mit Fragezeichen übersäht, denn mein Rechner gibt beim Ausführen einen Bluescreen mit Speicherfehler und startet dann neu.

    Wieso kann ich leider net sagen, bitte helft mir!!!

    Mein OS ist Win XP Prof mit SP 3 als GUI verwende ich VS2005!!!

    #include <windows.h>
    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <string>
    using namespace std;
    
    int main()
    {
      int a;
      string aray [42]={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","1","2","3","4","5","6","7","8","9","0",",",".","*","+","-","/"};
      system ("TITEL The Matrix");
    
      while (1)
      {
        Sleep (1);
    	for (int i=0; i<20;i++)
    	{
    	  a=rand()%42;
    	  cout << " " << aray[a];
    	  system ("color 0A");//1 Leerzeichen
    	  cout << "  ";//2 Leerzeichen
    	  //system ("color 0D");
    	  cout << "   ";//3 Leerzeichen
    
    	}
    	cout << endl;
      }
      getch();
      return 0;
    }
    

    Den code habe ich von einem Youtube tut. Um ein wenig mehr die Funktionalität zu verstehen habe ich ein wenig rumgespielt doch eigentlich dürfte der Rechner doch nicht abstürzen, oder 😕
    Habe den Sleepwert verändert um zu testen für was der da ist und was passiert wenn ich den von 25 auf 1 setze!!! (Fazit mein Rechner weist das obere Prob auf *g*)

    Zudem habe ich noch eine Frage, die ich einfach mal noch ungegoogelt nebenbei dazustelle , welche meiner oben verwendeten Libs ist für die system funktionen zuständig ich vermute mal die windows.h, oder???

    Danke für Hilfe

    LG Samkirchner



  • also bei mir klappt das ohne probleme...
    es ist zwar was langsam aber es funktioniert ohne absturz oder sosntwas

    ich sehe jetzt auch nichts falsches an dem code
    abgesehen davon dass es unsauber ist...

    aber es ist ja auhc nur ein spass programm

    // edit:

    #include <windows.h>
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
      const string aray="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890,.*+-/";
      system("TITLE The Matrix");
      system("color 0A");
      while (1)
      {
        Sleep (50);
        for (int i=0; i<20;i++)
        {
          cout << " " << aray[rand()%aray.size()] << "  " << "   ";
        }
        cout << endl;
      }
      system("PAUSE");
      return 0;
    }
    

    so hab ichs umgeschrieben und mit folgendem befehl compiled:
    g++ -o3 -o matrix.exe matrix.cpp
    mit mingw

    läuft recht flott
    und ist wie gewünscht sinnlos 😃


  • Mod

    Wozu die windows.h? Die systemm Funktion steht in cstdlib.



  • hm, ich weiß net woran das liegt, wenn ich Sleep(25) hab läuft alles, wenn ich dann Sleep(1) mach stürzt alles ab!!!

    @SeppJ
    wie bereits gesagt, ich habe den Code von youtube er ist bei c++ tut dabei!!! Ich weiß net wozu das windows.h eingebunden wurde, ich versuche gerade Experimentel herauszufinden, was in dem Code welchen Sinn macht 😉

    @Skym0sh0
    Jup, das Prog ist Sinnlos aber mir gefällt es, zumal ich die Farben in der For drinnen habe, damit es dann auch noch blinkt 😃 (was mit deinem Code noch schneller und verrückter funktioniert)
    Eigentlich ist es nur zum Lernen, ich dachte mir wenn schon lernen dann mit Spaß, zumal einige neue Sachen in dem Code stecken.

    Ich danke dir für deine Hilfe, da bleibt mir nur noch eine Frage auf, wird nun mit der cstdlib die sys funktion eingebunden (so wie es SeppJ sagt) oder mit der windows.h, denn du verwendest ebenfalls die windows lib jedoch keine cstdlib! Oder wird die von meinem Compiler automatisch erkannt???

    zudem verstehe ich diese Zeile noch nicht wirklich, kannst du mir vlt eine erklärung geben????

    cout << " " << aray[rand()%aray.size()] << "  " << "   ";
    

    LG Samkirchner



  • Sleep kommt aus den Windows System Headern.



  • samkirchner schrieb:

    Eigentlich ist es nur zum Lernen, ich dachte mir wenn schon lernen dann mit Spaß, zumal einige neue Sachen in dem Code stecken.

    Nur schade, dass du so nicht C++ lernst.

    Der Code ist mindestens grausam. Allein das "Aray". Im weiteren Code ist abgesehen von cout keine Spur von C++ zu entdecken.

    Wenn du es mit dem Programmieren ernst meinst, besorg dir ein vernünftiges Anfängerbuch wie zum Beispiel den C++-Primer. Youtube-Matrixeffekt-Tutorials können vielleicht lustig sein, aber zum Verständnis einer Programmiersprache gehört vor allem Theorie.



  • samkirchner schrieb:

    zudem verstehe ich diese Zeile noch nicht wirklich, kannst du mir vlt eine erklärung geben????

    cout << " " << aray[rand()%aray.size()] << "  " << "   ";
    

    LG Samkirchner

    Hier wird einfach nur ein zufälliger Index in deinem Array benutzt. http://www.cplusplus.com/reference/clibrary/cstdlib/rand/ liefert einen beliebigen Integer Wert zurück, und durch die Modulo Operation sorgst du dafür, dass die Zahl nicht größer wird als deine Array Grenzen! Wenn du z.B. irgend eine große Zahl von rand() kriegst, z.B. 1337, dein Array hat aber nur 3 Inhalte, würde 1337 als Index nicht funktionieren. Wenn du jetzt irgendwas%3 rechnest, kommt als Ergebnis 0,1 oder 2 heraus -> also genau deine Array Größe. Bei der 1337%3 = 2, würde array[2] benutzt. Ich hoffe das war es, was du nicht verstanden hast 🙂



  • Sollte da nicht irgendwo ein srand() hin?

    lg, freakC++



  • freakC++ schrieb:

    Sollte da nicht irgendwo ein srand() hin?

    srand() dient zur Initialisierung des Pseudozufallszahlengenerators, z.B. mit der Zeit. Wenn die Funktion nicht aufgerufen wird, sehen die Ergebnisse von rand() bei jedem Programmdurchlauf gleich aus. Vielleicht ist das erwünscht, aber hier weist vieles darauf hin, dass der Programmierer dieses Codes keine Ahnung hat.



  • Nexus schrieb:

    Wenn du es mit dem Programmieren ernst meinst, besorg dir ein vernünftiges Anfängerbuch wie zum Beispiel den C++-Primer. Youtube-Matrixeffekt-Tutorials können vielleicht lustig sein, aber zum Verständnis einer Programmiersprache gehört vor allem Theorie.

    Danke für den Buchtipp, das buch habe ich gestern noch für 2,99 als ebook besorgt und fange heute damit an.

    was auch gleich bei kapitel 1 eine frage aufwirft!

    also in dem buch steht unter main funktion einen wert aufgrund von int zurückgeben muss welcher standardmäßig 0 ist. dieser wert ist zur fehlerüberprüfung, wieso bekomme ich dann bei -1 keinen fehler sprich:

    int main()
    {
      return -1;
    }
    

    zudem habe ich mal geschaut, was passiert wenn ich

    cout<<main<<endl;
    

    mach, da kommt bei 0041113B heraus, ich nehme mal an dass das der speicherplatz ist, oder??? denn selbst wenn ich return -1 mache ändert sich an diesem wert nichts.

    beselbube schrieb:

    Ich hoffe das war es, was du nicht verstanden hast 🙂

    ja, vielen dank, referenzen hatte ich zwar schon in der schule muss jedoch nochmal nachlesen was sie machen, weiß zwar noch das referenzen nie null sein dürfen und sie eine kopie der zugewiesenen variable sind welche man nicht mehr ändern kann, frage mich derzeit noch für was sie sinnvoll sind da sie laut unserem lehrer sehr wichtig zu sein scheinen. ist aber bestimmt auch noch in dem oben genannten buch drinnen 😉



  • Rückgabewerte ungleich Null sagen aus das etwas nicht richtig gelaufen ist, darauf kann man dann reagieren, wenn gewünscht. Im Moment ist das für dich aber unrelevant.
    Schmeiß den Code da weg und lerne ordentlich C++. In relativ kurzer Zeit schreibst du das dann selber und wirst darüber lachen.



  • samkirchner schrieb:

    Danke für den Buchtipp, das buch habe ich gestern noch für 2,99 als ebook besorgt und fange heute damit an.

    Ich hätte nicht gedacht, dass das so schnell wirken würde. 👍

    (In Zukunft darfst du aber ruhig auch eine Zweitmeinung einholen, ab und zu werden nämlich auch schlechte Bücher empfohlen. ;))



  • Nexus schrieb:

    Ich hätte nicht gedacht, dass das so schnell wirken würde. 👍

    (In Zukunft darfst du aber ruhig auch eine Zweitmeinung einholen, ab und zu werden nämlich auch schlechte Bücher empfohlen. ;))

    Naja, würde das Buch nun 40 € kosten, dann wäre es wahrscheinlich nächstes Jahr noch nichts geworden, aber für 2,99 kann man nichts falsch machen. Zumal ich eh AE azubi bin und ein c++ Buch suchte. Eigentlich wollte ich heute noch den Link wo ich es her habe posten, war bei PC Welt, falls noch jmd das buch will, aber das gibts nimmer, also nochmal Glück gehabt für das schnelle Handeln ;).

    Wurstel mich schon den ganzen Tag darin herum und beginne von ganz vorne, auch wenn ich bereits ein wenig weiß, will nicht das mir was durch die Lappen geht, denn geschlafen habe ich nun schon zu lange.

    Zudem habe ich viel Vertrauen in Fachforen, denn wenn du mir was schlechtes empfielst, dann dauert es meist nicht lang bis eine Diskussion ausbricht, und das war in 2h nicht der Fall :). Muss sagen dass ich bis jetzt sehr zufrieden bin, was ich allerdings ein wenig vermisse ist eine Art Wörterbuch wo die Fachbegriffe erklärt werden, z.B. eine Variable ist ein Platzhalter für den Speicher ... etc, aber es gibt ja noch google 😉 und dieses Forum hier *freu*

    Nochmals vielen vielen Dank die nächste Ratlosigkeit kommt bestimmt 😉

    LG Samkirchner


Anmelden zum Antworten