Ascii code tabelle ausgeben C



  • Hello World schrieb:

    wxSkip schrieb:

    1. Dann halt auf Deutsch: http://blatt.htu.tugraz.at/grundlagen/?doc=c-stdio-printf

    Was hat dasdamit zu tun wenn ich wissen will wie viele Stellen eine Zahl hat

    Sorry schon gefunden



  • #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int sterne,
            zahlenzeile,
            zaehler1,
            zaehler2,
            zeilenh;
        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 *\n", zaehler1);
        }
        return 0;
    }
    

    AUSGABE:

    * 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
    ********************************************************
     000 *
     020 *
     040 *
     060 *
     080 *
     100 *
     120 *
     140 *
     160 *
     180 *
     200 *
     220 *
     240 *
    
    Process returned 0 (0x0)   execution time : 0.537 s
    Press any key to continue.
    


  • Da du ja nicht viele Aussagen machst, mach ich mal eine: Nimm eine andere Zeile aus dem Beispiel. (Vielleicht sollte da was von Leerzeichen stehen ?!)
    Noch ein Tipp: Mach das Ganze auch bei der oberen Zeile.



  • TOTALVERWIRRUNG 😕 😕 😕 😕 😕



  • Also ich muss den Ascii i-wo so ausgeben:

    for(ascii=0; ascii<=255; ascii++)
        {
            printf("%c", ascii);
        }
    

    oder?



  • Komm ich so schon näher ????:
    ausgabe:
    edit: http://www.bildershare.de/?v=unbenannt-1295710746.png



  • Noch wer Daaa????



  • Hello World schrieb:

    TOTALVERWIRRUNG 😕 😕 😕 😕 😕

    Sehr informative Aussage.

    Hello World schrieb:

    Also ich muss den Ascii i-wo so ausgeben:

    for(ascii=0; ascii<=255; ascii++)
        {
            printf("%c", ascii);
        }
    

    oder?

    Ja, und wenn ascii < 32, DANN MUSS EIN LEERZEICHEN AUSGEGEBEN WERDEN, zum 5-ten mal! Und wie gesagt, nimm putc().

    Hello World schrieb:

    Komm ich so schon näher ????:
    ausgabe:
    edit: http://www.bildershare.de/?v=unbenannt-1295710746.png

    Kannst du das nicht selbst beurteilen? Siehst du nicht, was passiert? Du gibst die Zeilennummern vor dem Zeilenumbruch aus, und du gibst keine Anfangs-Zeilennummer aus. Außerdem werden deine Zahlen mit Nullen statt mit Leerzeichen aufgefüllt und die Leerzeichenzahl stimmt auch sonst immer noch nicht.

    Hello World schrieb:

    Noch wer Daaa????

    Rund-um-die-Uhr-Service kostet extra.



  • ok gut wie soll ich einen ascii code in putc() ausgeben?



  • Google?



  • 1. Ich mag Google nicht!!
    2. geht es auch mit putchar()?



  • Google/Yahoo/Bing/Web.de/Ecosia/...!



  • Weist du wie das programm geht??



  • Ja!



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



  • 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.


Anmelden zum Antworten