Grafisch Darstellen



  • thx jonpro...

    ich habe das ganze noch nicth gelöst ich habe das prog erstma so weiter gemacht ohne ein koosys schon mit einzubauen.

    wenn du mir helfen könntest das mit einzubringen wäre das wirklicht net :-).

    danke... 👍



  • EXBS schrieb:

    ich habe das ganze noch nicth gelöst ich habe das prog erstma so weiter gemacht ohne ein koosys schon mit einzubauen.

    wenn du mir helfen könntest das mit einzubringen wäre das wirklicht net :-).

    Schau Dich im INet mal nach ANSI-Steuersequenzen um. Im Zusammenhang mit Windows (DOS) musst Du die ebenfalls nach der 'conio' suchen.

    Damit kannst Du über eine Escape-Sequence (Esc[<zeile>;<spalte>H) den Cursor positionieren und dann dort ein "X" ausgeben, anschließend den Cursor
    woanders hinbewegen und dort das nächste "X" malen. Ebenfalls kannst Du Farben setzen und Fett, Kursiv usw. schreiben (je nachdem was Deine Konsole unterstützt).
    Damit lassen sich auch schon nette Übungen machen.

    Wenn Du C lernst, lerne es richtig, bevor Du C++ lernst. Den Weg, erstmal auf der Konsole zu bleiben und damit zu experimentieren halte ich ebenfalls für sehr gut.
    C mag für manche veraltet sein, aber Du kannst in C ebenfalls vollständig OOP Programmieren. C++ ist eine Erweiterung, um OOP zu vereinfachen und besitzt einige Features, die Du sowieso erst viel später benötigst.

    Also nimm Dir Zeit, Dich in C umzusehen, Du wirst alles, was Du in C lernst in C++ weiterverwenden können.

    Viel Spaß beim Experimentieren.



  • tag,

    es gibt einmal die möglcihkeit jetz C++ zu nehmen , und dann kannst du
    die Improved Console zu verwenden
    (empfehle ich dir)

    oder wie eben gesagt kannste nach der conio.h und der lib dazu zu
    suchen und diese verwenden.
    dann kannst du auch bei C bleiben.
    allerdings ist C++ weit umfangreicher und (finde ich) einfacher.
    allerdings brauchst du dich um das umfangreicher erstaml ncih zu kümmern.
    du kannst damit nur später mehr machen.
    den umstieg später von C zu C++ ist nicht zu empfehlen, da es doch eineige unterschiede gibt.

    Mfg Shade37337



  • Meinst Du so etwas?

    #include <math.h>
    #include <windows.h>
    
    const double M_PI = 4*atan(1.0);
    
    void main(void)
    {
    	HWND hWnd = FindWindow("ConsoleWindowClass", NULL);
    	HDC hdc = GetDC(hWnd);
    
    	for(double x = 0; x <= 360; x++)
    	{
    		double x_sin = sin(x*M_PI/180);
    		double y_cos = cos(x*M_PI/180);
    		SetPixel(hdc, 150-(x_sin*100), 150-(y_cos*100), RGB(255, 255, 255));
    	}
    
    }
    


  • ja also das sie ziemlich so aus wie das was ich suche... 🙂

    nur kann ich es irgendwie net ausprobben weil da imma ne fehlermeldung kommt wenn ich diesen code ´kompilieren will.

    Muss ich da noch was anderes machen?

    THX @ all für eure antworten 👍



  • Es wäre schon sehr nett, wenn du die Fehlermeldung posten würdest.



  • sry...ups

    jo vergessen..

    also ich habe den code einfach kopiert kann auch sein das ich den fehler gemacht habe...

    4 syntax error before numeric constant
    12 'for' loop initial declaration used outside C99 mode

    ???

    damit kann ich irgendwie nix anfangen



  • EXBS schrieb:

    sry...ups

    jo vergessen..

    also ich habe den code einfach kopiert kann auch sein das ich den fehler gemacht habe...

    4 syntax error before numeric constant
    12 'for' loop initial declaration used outside C99 mode

    ???

    damit kann ich irgendwie nix anfangen

    Der C Compiler ist etwas älter.

    Ändere den Code wie folgt:

    HDC hdc = GetDC(hWnd);
        double x;
    
        for(x = 0; x <= 360; x++)
        {
    


  • alter ??? hab eigl dev-cpp neueste version... egal 🙂

    ok also der fehler "12 'for' loop initial declaration used outside C99 mode" is weg 👍

    allerdings bekomme ich immer noch die meldung von wegen "4 syntax error before numeric constant" und dazu habe ich mal ne frage. die Zeile

    const double M_PI = 4*atan(1.0);
    

    soll doch PI ner variablen (oda konstante) zuweisen..oda?! könnte och auch einfach

    #define PI 3.14159265359
    

    als ersatz verwenden...weil das finde ich auch etwas übersichtlicher...



  • EXBS schrieb:

    alter ??? hab eigl dev-cpp neueste version... egal 🙂

    Nicht jeder (nahezu kein?/kein?) Compiler hat C99 vollständig integriert.
    Wobei diese Schreibweise in C++ eigentlich schon üblich ist.

    Aber er spricht auch von C99 mode - was soviel heißt wie: Schalt ihn doch einfach mal ein. ^^

    ok also der fehler "12 'for' loop initial declaration used outside C99 mode" is weg 👍

    allerdings bekomme ich immer noch die meldung von wegen "4 syntax error before numeric constant" und dazu habe ich mal ne frage. die Zeile

    const double M_PI = 4*atan(1.0);
    

    soll doch PI ner variablen (oda konstante) zuweisen..oda?! könnte och auch einfach

    #define PI 3.14159265359
    

    als ersatz verwenden...weil das finde ich auch etwas übersichtlicher...

    Syntax Error vor numeric constant, das wird wohl die 4 sein, entsprechend ist davor der Fehler. Ich seh' ihn zwar grade nicht, aber wenn er meint... obwohl 1.0 ist ebenfalls eine numeric constant, dann würde er sich über atan beschweren. Ich liebe den GNU für seine tollen Fehlermeldungen, die ohne Kristallkugel einfach bescheiden sind.

    zu oda?: Richig, Pi wird einer konstanten double zugewiesen.

    Du kannst auch ein #define nehmen, aber das wird heutzutage nicht mehr gerne gesehen. Allgemein sollte man heutzutage den Präprozessor möglichst wenig verwenden und auf Möglichkeiten der Sprache zurückgreifen. Der Präprozessor ist eine Art MiniProgrammiersprache, die durchgeführt wird, bevor der Compiler den Code übersetzt.

    Frag ihn mal, was passiert, wenn Du ihn mit folgenden fütterst.

    const double PI = 3.14159265359;
    

    Das entspricht Deinem Define. Der Vorteil ist hier, dass C erkennen kann, dass PI ein Double ist, was bei einem Define nicht der Fall wäre.



  • also wenn ich

    const double PI = 3.14159265359;
    

    dann muss ich ja die variablen auch noch im code ändern also von

    double x_sin = sin(x*M_PI/180); 
    double y_cos = cos(x*M_PI/180);
    

    auf

    double x_sin = sin(x*PI/180); 
    double y_cos = cos(x*PI/180);
    

    allerdings bekomme ich dann noch mehr fehler melungen...

    "[Linker error] undefined reference to `SetPixel@16' "
    "8 ld returned 1 exit status"

    ??? ok also jetzt bin sehr verwirrt

    ich habe alles probiert aba es will einfach net futzen 😡



  • EXBS schrieb:

    also wenn ich

    const double PI = 3.14159265359;
    

    dann muss ich ja die variablen auch noch im code ändern

    Yepp.

    EXBS schrieb:

    allerdings bekomme ich dann noch mehr fehler melungen...

    "[Linker error] undefined reference to `SetPixel@16' "
    "8 ld returned 1 exit status"

    ??? ok also jetzt bin sehr verwirrt

    ich habe alles probiert aba es will einfach net futzen 😡

    Er kennt die Funktion SetPixel nicht. Das ist nichts verwerfliches, denn ich kenne sie auch nicht. ^^
    Ernst beiseite: Du programmierst ja offensichtlich unter Windows.
    Um genau zu sein, der Linker mault. Also muss man dem was futtern geben. Du musst Deinen Compiler als mit irgendeiner statischen Library aufrufen. Statische Libs werden dazu gelinkt, wenn Du Deinen Compiler mit -l<library> aufrufst. In Deinem Fall würde ich mal grob -lwindows vermuten.

    Da Du in einer Entwicklungsumgebung bist, wirst Du da vermutlich irgendwo Projekteinstellungen finden, dort etwas wie Linklibs, libs, statische Bibliotheken oder etwas derartiges. Da trag mal windows ein bzw. dazu.
    Ich weiß nicht, ob die Bibliothek windows heißt, aber da das OS so heißt, vermute ich das einfach mal.



  • Für Alle, die hie rvorbeikommen:
    unter DEV-C++ braucht es den Linkereintrag für die SetPixel Funktion

    /Füge folgendes zum LINKER hinzu-->unter Projekt Optionen, Parameter, Linker
    //C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib\libgdi32.a



  • Hi Christof Ermer,

    kann es sein, dass Du gerade Mund-zu-Mund-Beatmung an einer schon längst mumifizierten Leiche betreibst?
    Ich hab ja auch schon alles mögliche Gammelfleisch ausgebuddelt, aber einen Fred dessen letzter Eintrag 12 Jahre alt ist... Respekt!

    Gruß Mümmel


Anmelden zum Antworten