Announcement

Collapse
No announcement yet.

printf: Problem mit define und Konstanten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • printf: Problem mit define und Konstanten

    Hallo Leute!!

    Bin neu hier und möchte gerne c und c++ lernen. Mein Programm soll mir die Stunden, Minuten und Sekunden in einen laufenden Balken ausgeben, der auf einer gestrichelten Linie entlang läuft. Das Ganze in drei Zeilen. 1. Zeile Stunden. 2. Zeile Minuten und 3. Zeile Sekunden. Jedesmal, wenn 60 Sekunden vorbei sind, sollen die Minuten um einen Balkenpunkt weiter laufen. Genauso soll es mit den Minuten und Stunden funktionieren.


    #include <stdio.h>
    #include <conio.h>
    #include <time.h>

    #define ZEICHEN 219
    #define keinstrich ''
    #define unterstrich '_'

    #define STUNDEN 24
    #define MINUTEN 59
    #define SEKUNDEN 59

    void P1_Stunden_aktualisieren( int posx, int posy, int value, int max);
    void P2_Minuten_aktualisieren( int posx, int posy, int value, int max);
    void P3_Sekunden_aktualisieren(int posx, int posy, int value, int max);
    void zeichne( int posx, int posy, char*name, int value, int max);

    /************************************************** ****************************/
    /* Zeichen die konstanten Elemente */
    /************************************************** ****************************/

    void zeichne( int posx, int posy, char*text, int value, int max)
    {
    gotoxy( posx,posy+1);
    printf("%s",text);

    gotoxy( posx, posy+1);
    for ( int i = 0; i < max; i++)
    {
    printf("%c",unterstrich);
    }
    P1_Stunden_aktualisieren( posx, posy, value, STUNDEN);
    P2_Minuten_aktualisieren( posx, posy, value, MINUTEN);
    P3_Sekunden_aktualisieren( posx, posy, value, SEKUNDEN);
    }

    /************************************************** ****************************/
    /* Gibt die veränderlichen Elemente von 'P1' aus */
    /************************************************** ****************************/

    void P1_Stunden_aktualisieren( int posx, int posy, int value, int max)
    {
    gotoxy( posx+10, posy);
    printf("%2.2d",value);

    gotoxy( posx+15, posy);
    for( int i = 0; i < max; i++)
    {
    printf("%c",(i < value)?ZEICHEN:keinstrich);
    }
    }

    /************************************************** ****************************/
    /* Gibt die veränderlichen Elemente von 'P2'aus */
    /************************************************** ****************************/

    void P2_Minuten_aktualisieren( int posx, int posy, int value, int max)
    {
    gotoxy( posx+10, posy);
    printf("%2.2d",value);

    gotoxy( posx+15, posy);
    for (int i = 0; i < max; i++)
    {
    printf("%c",(i < value)?ZEICHEN:keinstrich);
    }
    }

    /************************************************** ****************************/
    /* Gibt die veränderlichen Elemente von 'P3' aus */
    /************************************************** ****************************/

    void P3_Sekunden_aktualisieren( int posx, int posy, int value, int max)
    {
    gotoxy( posx+10, posy);
    printf("%2.2d",value);

    gotoxy( posx+15,posy);
    for( int i = 0; i < max; i++)
    {
    printf("%c",(i < value)?ZEICHEN:keinstrich);
    }
    }

    /************************************************** ****************************/
    /* Hauptfunktion */
    /************************************************** ****************************/

    void main(void)
    {
    time_t zeit;
    tm *zeit_neu;

    clrscr();
    _setcursortype (_NOCURSOR);

    zeichne (2, 5, "Stunden", 0 , STUNDEN);
    zeichne (2, 8, "Minuten", 0 , MINUTEN);
    zeichne (2,11, "Sekunden", 0 , SEKUNDEN);

    time(&zeit);
    while(!kbhit())
    {
    if( zeit == time(NULL)) continue;
    time (&zeit);
    zeit_neu = gmtime (&zeit);
    P1_Stunden_aktualisieren( 2, 5, zeit_neu-> tm_hour, STUNDEN);
    P2_Minuten_aktualisieren( 2, 8, zeit_neu-> tm_min, MINUTEN);
    P3_Sekunden_aktualisieren( 2, 11, zeit_neu-> tm_sec, SEKUNDEN);
    }
    }

    /************************************************** ****************************/

    bekomme drei Fehlermeldungen die mit den Funktionen P1 - P3 zu tun haben. Ich habe zu viele int Werte und wohl zu wenig char Werte.

    Ich benötige 1 oder 2 characterconstanten in den Funktionen. Wie kann man das machen? Bin schon seit Tagen am Grübeln, aber ich komme auf keine geeignete Idee!

    Vielleicht könnt Ihr mir gute Hilfestellungen geben

    Danke für Eure Hilfe

  • #2
    Und? Wie lauten die Fehlermeldungen?

    Benutze bitte die Codeformatierung hier
    Christian

    Comment


    • #3
      Die Fehlermeldung lautet

      Error E_3.CPP 56: Character constant must be one or two characters long in function P1_Stunden_aktualisieren[int,int,int,int].

      Die selbe Meldung für P2_Minuten und P3_Sekunden.

      Das einzige was mir dazu einfällt ist, das ich mindestens einen dieser int-Werte in caracter umformen muss. Nur wie will mir einfach nicht einfallen.

      Codeformatierung verwenden! ??? Meinst Du enventuell damit, nicht über dieses "Textfeld" zu schreiben? Sorry bin heute ein wenig daneben.

      Gruß und vielen Dank

      lempy

      Comment


      • #4
        Nun, wenn ich mal die Zeilen raten soll sind es diese

        printf("%c",(i < value)?ZEICHEN:keinstrich);

        Das ist teilweise zu lösen mit

        #define keinstrich ""
        #define unterstrich "_"

        Was

        printf("%c",(i < value)?219:keinstrich);

        bedeuten soll (denn das ergibt das define mit ZEICHEN) erschließt sich mir nicht

        Mit Codeformatierung ist gemeint, dass du deinen Code mit Hilfe der Buttons im ERWEITERTEN EINGABEDIALOG formatieren sollst. Des Weiteren wähle ein aussagekräftige Überschrift (Hilfe suchen hier alle und der Grund dürften wohl Fehler sein...)
        Christian

        Comment


        • #5
          Danke für Deinen Hinweis. Werde es morgen ausprobieren

          Melde mich danach

          lempy

          Comment

          Working...
          X