C windowskonsolen programm



  • Noch ein Tipp:

    Anstatt t = t + 1; kann man auch t += 1; bzw. t++; oder ++t; schreiben (Ob man ++t; oder t++; schreibt macht als alleinstehende(!) Anweisung aber keinen wirklichen Unterschied).



  • Zum Stil usw. hat jlkjkl eigentlich schon alles gesagt.
    Aber eine Verbesserung hätte ich auch noch: system("cls"); ist böse. Nimm lieber FillConsoleOutputCharachter



  • Na, dann aber auch bitte gleich:
    SetConsoleCursorPosition und
    WriteConsoleOutputCharacter

    zum Cursorpositionieren und Zeichen ausgeben - dann kann man sich übrigens auch das Bildschirmlöschen ganz sparen ...



  • danke für die vielen Antworten. Hatte nicht damit gerechnet soviel feedback zu bekommen. @ jlkjkl, das mit den <> klammern ging bei mir nicht, wir müssen Visual studio benutzen... die anderen tipps werde ich versuchen umzustezen! die aspeicherfreigabe müsste am ende gesetzt werden dann?

    die befehle mit der cursor posítion und buchstaben an positionen schreiben hatten wir noch nicht..
    Das ganze ist ein kleines uni projekt in grundlagen und naja, es gibt da bestimmte vorgaben wann welcher teilnehmer wie viele schritte machen soll..
    Auf jedenfall vielen dank für die ideen!

    Ist das nicht mehr aufwand, die cursor zu positionieren, statt alles zu löschen? es wäre sicher speicher sparender... 😉



  • Mosh3d schrieb:

    @ jlkjkl, das mit den <> klammern ging bei mir nicht, wir müssen Visual studio benutzen...

    Ich benutz auch VS. Und das mit den spitzen Klammern funktioniert dort auch! Hast du etwa an den Einstellungen rumgespielt? Wenn ja müsstest du schon ganz schön was verstellt haben, damit das nicht mehr funktoiniert. Kompilier mal mit <> und dann Poste bitte den Fehlercode.

    Mosh3d schrieb:

    die befehle mit der cursor posítion und buchstaben an positionen schreiben hatten wir noch nicht...

    Trotzdem: Vorausarbeiten kann nichz schaden. 🙂
    Was mir grad auffällt: Habt ihr system("cls"); etwa an der Uni gelernt? Wenn ja, dann darfst du von diesem Prof. nicht allzuviel erwarten. Und falls er mal ein Buch von einem gewissen Autor anpreisen sollte (den ich nicht nennen möchte, damit du gar nicht erst in Versuchung kommst dir eins seiner Bücher anzusehen die mehr schaden als nützen), dann hör lieber nicht auf ihn.

    Mosh3d schrieb:

    1) Ist das nicht mehr aufwand, die cursor zu positionieren, statt alles zu löschen? 2) es wäre sicher speicher sparender... 😉

    Zu 1: Richtig gemacht ist es weniger Aufwand.
    Zu 2: Äh nö, warum sollte das Speicher sparen? 😕



  • also in <> klammern kommt der fehler, dass die bibliothek nicht gefunden werden kann. Ich hab geschrieben #include <stdio.h> z.b... ist das falsch?

    ich werd das nochmal überarbeiten, so ähnlich wie jlkjkl, mit der cursor positionierung un d löschung :>

    danke für die hilfe!



  • #include <stdio.h>
    

    ist eigentlich richtig. Probier mal testweise cstdio (kein .h!) statt stdio.h. Ist dann zwar C++, aber is ja nur zum Test.
    Wobei Bibliothek nicht gefunden eher nach nem Linker-Problem klingt. Kopier mal die gesamte Erstell-Ausgabe in Code-Tags hierher, denn Link-Probleme dürften eigentlich nicht durch fehlerhafte Header-Einbindung passieren. Hast du die Einstellungen für ein Win32-Konsolen-Projekt gesetzt?



  • es funktioniert jetzt eigentlich ganz gut ... aber!

    wir sollen nun das programm mit parametern starten.

    ich habe dazu

    sscanf(argv[1],"%d",&vi);
    	sscanf(argv[2],"%d",&vh);
    
    	if((vi>0&&vi<20) || (vh>0&&vh<20)) //falls parameter verwendet werden
    	{
    		hase = vh; //erhöhung von hase
    		igel = vi; //erhöhung von igel
    	}
    

    gemacht,es geht auch wenn man es MIT parameter startet einwandfrei, aber wenn man ohne parameter eingabe es startet, stürzt das programm ab... jemand eine idee? bitte?



  • argc hat auch seine Bedeutung. Wenn keine Parameter übergeben wurden, dann kannst du folglich auch nicht auf argv[1] zugreifen (bzw. gehört dir der Speicher nicht und du rufst undefiniertes Verhalten hervor).
    Die Lösung ist ganz banal:

    //...
    if(argc == AnzahlDerArgumente)
    {
        //...
        //mach was mit argv
    }
    else
    {
        cout << "Fehler beim Aufruf. Falsche Parameterzahl\n";
    }
    //...
    

    EDIT: Was war eigentlich das Problem bei den Headern, bzw. wie hast dus gelöst?



  • ach argc hab ich total vergessen, danke!

    mit den headern, war die lösung einfach, ich habs gelassn 🙂


Anmelden zum Antworten