Ascii code tabelle ausgeben C



  • Wozu hast du ein Gehirn?
    Benutze eine Suchmaschine und setze den Pseudocode 1:1 in C um, dann hast du schon zwei Drittel!



  • Also gut ... jetzt nochmal von vorne.

    erstmals meine Zeile mit den 2 Schleifen für die ersten 2 Zeilen

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int sterne,
            zahlenzeile,
            zaehler1,
            zeilenh;
        int ascii;
        printf("     *");
        for(zahlenzeile=0; zahlenzeile<=19;zahlenzeile++){
            printf(" %d", zahlenzeile);}
        printf("\n");
        for(sterne=0; sterne<=55; sterne++){
            printf("*");}
        printf("\n");
    

    Danach beginnt der eigentliche Sinn des Programms, ich beginne mit einer for Schleife für die Zahlen ausgabe links, 000, 020, 030,...:

    for(zaehler1=0; zaehler1<=255; zaehler1++)
        {
    

    danach der zähler für die ascii codes der bei jeden durchgang um 1 erhöht

    ascii++;
    

    danach eine if-abfrage mit ausgabe des ascii codes wenn er höher als 32 ist

    if(ascii>=32)
                {
                    printf(" ");
                    putchar(ascii);
                }
    

    danach die ausgebe der Zeilen Links

    zeilenh=zaehler1%20;
            if(zeilenh==0)
            {
                printf(" %.3d * \n", zaehler1);
    
            }
        }
    
        return 0;
        }
    

    zusammen:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int sterne,
            zahlenzeile,
            zaehler1,
            zeilenh;
        int ascii;
        printf("     *");
        for(zahlenzeile=0; zahlenzeile<=19;zahlenzeile++){
            printf(" %d", zahlenzeile);}
        printf("\n");
        for(sterne=0; sterne<=55; sterne++){
            printf("*");}
        printf("\n");
        for(zaehler1=0; zaehler1<=255; zaehler1++)
        {
                ascii++;
                if(ascii>=32)
                {
                    printf(" ");
                    putchar(ascii);
                }
    
            zeilenh=zaehler1%20;
            if(zeilenh==0)
            {
                printf(" %.3d * \n", zaehler1);
    
            }
        }
    
        return 0;
        }
    

    Was ist da bitte falsch? bzw. was fehlt?



  • Schau dir das Lösungsbild noch mal gaanz genau an. Du solltest mehrere Unterschiede zu dem finden, was du machen willst. Dann schau dir nochmal an, was dein Programm macht. Die if-Bedingung ist falsch, es muss auch noch etwas im else-Zweig passieren. putchar() hast du jetzt verwendet, das ist gut, wenn du allerdings sowieso noch ein Leerzeichen ausgibst, kannst du auch printf(" %c", ascii) schreiben (das hatte ich übersehen). Des weiteren habe ich mich mal verbessert, dass das Modulo-Ergebnis 19 sein muss, da du ja bei 19, 39, 59 und so weiter umbrechen musst. Das printf() zum Zeilenumbruch tut nicht das richtige, und du hast immer noch nicht alle Dinge aus meinem Pseudocode berücksichtigt.

    Zur besseren Lesbarkeit solltest du übrigens [cpp]dein code[/cpp] statt [code]dein code[/code] schreiben.



  • gut welche if ist da falsch?? hab jetz mal beim 2. if einen else if zweig hinzugefügt ... sieht so aus

    for(zaehler1=0; zaehler1<=255; zaehler1++)
        {
                ascii++;
                if(ascii>=32)
                {
                    printf(" %c", ascii);
                }
    
            zeilenh=zaehler1%20;
            if(zeilenh==0)
            {
                printf(" %.3d * \n", zaehler1);
            }
            else if(zeilenh==19)
            {
                printf("\n");
            }
        }
    

    Programm macht jetzt das ... http://www.bildershare.de/?v=unbenannt-1295717984.png
    sieht zwar schon besser aus aber immer noch nicht richtig ...



  • Ich meinte das erste if.
    Beim zweiten if solltest du auf 19 statt auf 0 überprüfen für deinen Zeilenumbruch... die Ausgabe beim Zeilenumbruch ist aber immer noch falsch.
    Beim zweiten if sollte aber siehe Pseudocode auch ein else-Zweig hin.



  • #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int sterne,
            zahlenzeile,
            zaehler1,
            zeilenh;
        int ascii;
        printf("     *");
        for(zahlenzeile=0; zahlenzeile<=19;zahlenzeile++){
            printf(" %d", zahlenzeile);}
        printf("\n");
        for(sterne=0; sterne<=55; sterne++){
            printf("*");}
        printf("\n");
        for(zaehler1=0; zaehler1<=255; zaehler1++)
        {
            zeilenh=zaehler1%20;
            if(zeilenh==0)
            {
                printf(" %.3d *", zaehler1);
            }
    
            ascii++;
                if(ascii>=32)
                {
                    printf(" %c", ascii);
                }
                else
                {
                    printf(" ");
                }
            if(zeilenh==19)
            {
                printf("\n");
            }
    
        }
        return 0;
    }
    

    Fast richtig oder??



  • Mach deine Augen auf und sieh nach, dass es nicht "fast richtig" ist.
    (geschätzte 5 Fehler)



  • Gut vermutlich hast du recht ... kommen wir zum 1. Fehler in welcher Zeile liegt der?



  • ??



  • Du bist registriert, heisst du kannst Editieren statt vier Posts nacheinander abzugeben...

    Hello World schrieb:

    Dan poste es bitte ich verstehe es leichter wenn ich den Code sehe !!

    Sag doch gleich, dass wir dir den Kack coden sollen -.-

    EDIT: Sorry wegen dem Kraftausdruck...



  • Nein ihr sollt mir nicht den "kack" coden sondern das was ich nicht verstehe, was fehlt bzw. falsch habe coden -.-



  • Hello World schrieb:

    Gut vermutlich hast du recht ... kommen wir zum 1. Fehler in welcher Zeile liegt der?

    Willst du Debuggen, oder kannst du den Code so nachvollziehen?
    Welchen Fehler willst du denn gefunden haben?

    P.S.: Es gibt auch Programme, mit denen du Texte vergleichen kannst.



  • Debuggen wäre nicht schlecht (benütze Code::Blocks)
    Was bringt mir das Texte vergleichenen?



  • Hello World schrieb:

    Debuggen wäre nicht schlecht (benütze Code::Blocks)
    Was bringt mir das Texte vergleichenen?

    Damit du merkst, wo der Unterschied zwischen deiner Ausgabe und der Lösung liegt.



  • gut und wie mach ich das?



  • Google



  • xD Wie immer



  • Das mit dem Textvergleich war eigentlich ein verzweifelter Scherz, aber nun gut 😞



  • http://www.bildershare.de/?v=unbenannt-1295725599.png
    Hab jetzt plöztlich einen Warning: ascii may be uninatilized in this function, aber es beginnt jetzt richtig ?? komisch o.O was ist da jetzt passiert?



  • Ich kenne deinen Code nicht, aber du solltest in der Zeile, wo
    int ascii;
    steht, stattdessen folgendes schreiben:
    int ascii = 0;

    UND: Nein, es beginnt immer noch nicht richtig.


Anmelden zum Antworten