Ascii code tabelle ausgeben C



  • Das ist nicht dein Ernst, oder? Denk nach, dann wirst du auch auf eine Lösung kommen.

    EDIT: Kauf/Leih dir ein Buch, falls du noch keins hast.



  • Ich denke jetzt schon mind. 3 Stunden und komm nicht drauf !!! :(((((



  • Na gut, wenn du eine Anleitung brauchst:
    1. Gehe dein Programm durch und versuche mal für die Zahlen 0 bis 41, nachzuvollziehen, was in deinem Programm passiert und was passieren sollte.
    2. Lies dir alle Kommentare durch und erstelle dir eine Liste mit allen Fehlern, die genannt wurden.
    3. Gehe schrittweise durch und schaue nach, ob du die Fehler schon behoben hast.
    4. Nimm meinen Pseudocode und schreibe für jede Zeile den/die entsprechenden C-Befehle. Du kannst das allerdings nicht konkret einbauen, du musst noch einige kleinere Abänderungen vornehmen.
    5. Wenn du es noch nicht verstanden hast, schreibe dir einen Pseudocode und versuche selbst, ihn im Kopf schrittweise auszuführen und zu schauen, ob er das richtige Ergebnis liefert.
    6. Wenn er funktioniert, implementiere ihn.
    7. Wenn es immer noch nicht funktioniert, nimm den Debugger.
    8. Wenn es immer noch nicht funktioniert, stelle dir leichtere Aufgaben, die dich schrittweise an diese Aufgabe heranführen
    9. Wenn es immer noch nicht funktioniert, lies dir ein komplettes C-Buch durch.
    10. Wenn es immer noch nicht funktioniert, geh schlafen.



  • wxSkip schrieb:

    10. Wenn es immer noch nicht funktioniert, geh schlafen.

    😃



  • EOutOfResources schrieb:

    wxSkip schrieb:

    10. Wenn es immer noch nicht funktioniert, geh schlafen.

    😃

    😃 Wird er wohl erst spät ins Bett kommen, wenn er vorher noch ein C-Buch durchlesen muss^^



  • sO bin jetzt alles durchgegangen jetzt sind nur noch die ascii's plötzlich vertauscht -.- was ist jetzt falsch

    #include <stdio.h>
    
    int main()
    {
        int sterne      =0,
            zahlenzeile =0,
            spalten     =0;
        float zeilenh   =0;
        int ascii       =0,
            anzahl      =0;
        printf("     *");
        for(zahlenzeile=0; zahlenzeile<=19;zahlenzeile++){
            if(zahlenzeile<=9 && zahlenzeile >0)
                printf("  %d", zahlenzeile);
            else
            printf(" %d", zahlenzeile);
        }
        printf("\n");
        for(sterne=0; sterne<=64; sterne++){
            printf("*");}
        printf("\n");
    
        for(spalten=0; spalten<=255; spalten++)
        {
            zeilenh=spalten%20;
            if(zeilenh == 0)
            {
                printf(" %3d *", spalten);
            }
            else {
                ascii++;
                if(ascii >= 32 && anzahl <= 19)
                {
                    printf(" %c ", ascii);
                }
                else if(ascii < 32 && anzahl <= 19)
                {
                    printf("   ");
                }
            if(zeilenh == 19)
    
                printf("\n");
            }
    
        }
        return 0;
    }
    


  • Wofür ist denn jetzt anzahl wieder?

    Du weißt wofür "%3d" bei printf steht?
    Dann benutze es auch bei zahlenzeile.

    Achso: das ascii++ muss aus dem else zweig raus.
    Oder schreib gleich ascii = spalten.



  • Hello World schrieb:

    sO bin jetzt alles durchgegangen jetzt sind nur noch die ascii's plötzlich vertauscht -.- was ist jetzt falsch

    Ich glaub's ja nicht. Wie viele Punkte bist du durchgegangen? Einen halben?



  • Das steigt ja keiner mehr durch.

    #include <stdio.h>
    #include <ctype.h>  /* fuer isprint */
    
    #if 1      /* 1 fuer Dezimal, 0 fuer Hexadezimalzahlen */
      #define FRM ".1d"
    #else
      #define FRM ".2X"
    #endif
    
    int main()
    {
        int z, anz_spalten = 16;
        int von = 0, bis = 127;
    
        printf(" %3c *", '+');                        /* Spaltennummerierung */
        for(z = 0; z < anz_spalten ;z++)
          printf("%3"FRM, z);
        printf("\n");
    
        for(z = 0; z < (3*anz_spalten+6); z++)        /* Trennlinie */
          printf("*");
        printf("\n");
    
        for(z = von; z <= bis; z++)
        {
          if((z-von) % anz_spalten == 0)              /* erstes Zeichen in der Zeile ? */
            printf(" %3"FRM" *", z);                  /* Zeilennummern */
    
    //    printf("%3c", (z>=' ') ? z: ' ');           /* Zeichen */
          printf("%3c", isprint(z) ? z: ' ');         /* Besser da ASCII nur bis 127 geht */
    
          if((z-von) % anz_spalten == anz_spalten-1)  /* letztes Zeichen in der Zeile ? */
            printf("\n");                             /* Zeilenende */
    
        }
        return 0;
    }
    


  • wxSkip schrieb:

    Ich glaub's ja nicht. Wie viele Punkte bist du durchgegangen? Einen halben?

    😃 😃 😃
    Ich werf mich weg...



  • ASCII-Tabelle schrieb:

    Das steigt ja keiner mehr durch.

    Erstens das und zweitens entspricht das nicht den Voraussetzungen. (nur 16 statt 20 Spalten, nur bis 127)



  • wxSkip schrieb:

    Erstens das und zweitens entspricht das nicht den Voraussetzungen. (nur 16 statt 20 Spalten, nur bis 127)

    Naja, wenn der TO das im Quelltext anpasst, hat er ja noch was Eigenes gemacht. 🙂



  • DirkB schrieb:

    wxSkip schrieb:

    Erstens das und zweitens entspricht das nicht den Voraussetzungen. (nur 16 statt 20 Spalten, nur bis 127)

    Naja, wenn der TO das im Quelltext anpasst, hat er ja noch was Eigenes gemacht. 🙂

    Was sollen eigentlich die Defines?



  • SO nach langem übergehen meines Codes und das durchgehen euer Comment's hab ichs jetzt (hatte auch etwas Hilfe von einem Freund)

    #include <stdio.h>
    
    int main()
    {
        int sterne      =0, //Zählervariable für die Sternenreihe
            zahlenzeile =0, //Zählervariable für die Zahlenzeile
            zeilenh     =0, //Zählervariable für den Zeilenumbruch
            spalten     =0, //Zählervariable für die Spalten
            ascii       =0; //Zählervariable für die Ausgabe der
                            //ASCII-Codes
    
        printf("\nASCII-Code Tabelle\n\n");
    
        //Ausgabe der Zahlenzeile
        printf("     * ");
        for(zahlenzeile=0; zahlenzeile<=19;zahlenzeile++){
            if(zahlenzeile<=9 && zahlenzeile >0)
                printf("  %d", zahlenzeile);
            else
            printf(" %d", zahlenzeile);
        }
    
        printf("\n"); //Zeilenumbruch
        //Ausgabe der Sternenzeile
        for(sterne=0; sterne<=65; sterne++)
            printf("*");
    
        printf("\n"); //Zeilenumbruch
    
        //Ausgabe der ASCII-Codes
            for(spalten=0; spalten <= 255; spalten += 20)
            {
                printf(" %3d *", spalten); //Ausgabe Der Zeilennummern
                    for(zeilenh = 0; zeilenh < 20; zeilenh++)
                    {
                        //Berechnung der ASCII's
                        ascii = spalten + zeilenh;
                        //Ausgabe aller ASCII's über 32
                        if(ascii < 32 || ascii > 255)
                        {
                            printf("   ");
                        }
                        else
                        {
                            printf("%3c",ascii);
                        }
                    }
                printf("\n");
            }
        return 0;
    }
    


  • Nein, es stimmt immer noch nicht ganz... Vor der Spalte 0 ist eine Leerzeile zu viel.



  • Aber es funktioniert =)))



  • Na schön, dann hier meine Lösung aus den letzten 8 Minuten:

    #include <stdio.h>
    
    int main()
    {
        printf("ASCII-Code Tabelle\n\n     *");
        for(int headline_num = 0; headline_num <= 19; ++headline_num) printf("%2d ", headline_num);
        printf("\n");
    
        for(int stars = 0; stars <= 65; ++stars) putc('*');
    
        for(int ascii = 0; ascii <= 255; ++ascii)
        {
            if(ascii % 20 == 0) printf("\n %3d *", ascii);
    
            printf(" %c ", ascii < 32 ? ' ' : (char)ascii);
        }
    }
    


  • Wow ... gut so professionel haben wir das noch nicht gelernt aber trotzdem ... RESPEKT 🙂 👍



  • Hello World schrieb:

    Wow ... gut so professionel haben wir das noch nicht gelernt aber trotzdem ... RESPEKT 🙂 👍

    Was ist daran professionell?



  • Alles du hast es viel efizienter gemacht als ich z.B. mit dem speichern der Variablen


Anmelden zum Antworten