Ascii-Tabelle



  • Halle leute,

    Folgende Aufgabe:

    Schreiben Sie ein Programm, das eine ASCII-Tabelle der Zahlen von 32 - 127
    in 4Doppel- Spalten ausgibt. Zu jeder Zahl zwischen 32 und 127 soll der ent-
    sprechende ASCII-Characterangezeigt werden:
    32   56 8 80 P 104 h
    33 ! 57 9 81 Q 105 i
    34 " 58 : 82 R 106 j
    35 # 59 ; 83 S 107 k
    36 $ 60 < 84 T 108 l
    . . .
    . . .
    55 7 79 O 103 g 127
    Hinweis: Verwenden Sie das gleiche Grundmuster, wie in der obigen Aufga-
    be und überlegen Sie sich, welchen Wert Sie in der i-ten Zeile und der j-ten
    Spalte darstellen müssen. D.h. wie berechnen Sie aus dem Spalten- und dem
    Zeilen-Index denWert, den Sie – einmalals Zahl und einmal als Buchstaben –
    darstellen wollen?
    

    Mein prog kann die tabelle nur untereinander ausgeben!ich weiss nicht wie ich meine sie in 4spalten ausgeben soll!!!Vielleicht mir Array???
    bitte helft mir

    mein Prog sieht bisjetzt nur so aus:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
    
    int i,j;
    int zahl[95][95];
    
    for (i=32;i<128;i++){
    
                    for (j=32;j<128;j++)
    
                           if (i==j)
                                    printf ("%d = %c\n",i,j);
    
    }
    
      system("PAUSE");	
      return 0;
    }
    

    Gruß Toni



  • Ist doch eigentlich ganz einfach, du addierst einfach für jede Spalte immer 24 zum char hinzu. Ganz billiger Vorschlag:

    #include <stdio.h>
    
    int main() {
      int i=32;
      for ( ; i<56;++i)
        printf("%i %c\t%i %c\t%i %c\t%i %c\n", i, i, i+24, i+24, i+48, i+48, i+72,i+72);
      return 0;
    };
    

    MfG

    GPC



  • In dem Fall soll woll eher der Umgang mit verschachtelten Schleifen gelehrt werden. Eventuell ist etwas in diese Richtung angebrachter:

    for(int i = 0; i < (128-32)/4; ++i)
    {
    	for(int j = 0; j < 4; ++j)
    	{
    		int c = (i + 32) + (128-32)/4 * j;
    		printf("%d %c ",c,c);
    	}
    
    	printf("\n");
    }
    

    Edit: Doch noch richtiggestellt weil meine Bedingung ihn auf die falsche Fährte gelockt hätte.

    MfG SideWinder



  • In dem Fall soll woll eher der Umgang mit verschachtelten Schleifen gelehrt werden.

    kann schon sein, aber warum einfach, wenn's auch kompliziert geht 😉 😃 ?

    MfG

    GPC



  • Außerdem ist bei meiner Übung ohnehin was falsch bei den Schleifenbedinungen wie ich gerade bemerke. Aber das kann ich dann ja zur Übung dem Threadersteller überlassen 🙂

    Edit: s.o.

    MfG SideWinder



  • SideWinder schrieb:

    Außerdem ist bei meiner Übung ohnehin was falsch bei den Schleifenbedinungen wie ich gerade bemerke. Aber das kann ich dann ja zur Übung dem Threadersteller überlassen 🙂

    Eben, Übung macht den Meister. 🤡

    MfG

    GPC



  • SideWinder schrieb:

    In dem Fall soll woll eher der Umgang mit verschachtelten Schleifen gelehrt werden. Eventuell ist etwas in diese Richtung angebrachter:

    for(int i = 0; i < (128-32)/4; ++i)
    {
    	for(int j = 0; j < 4; ++j)
    	{
    		int c = (i + 32) + (128-32)/4 * j;
    		printf("%d %c ",c,c);
    	}
    
    	printf("\n");
    }
    

    Edit: Doch noch richtiggestellt weil meine Bedingung ihn auf die falsche Fährte gelockt hätte.

    MfG SideWinder

    Ich verstehe um ehrlich zu sein grad nur bahnhof 😕
    wie kommst du auf den Ausdruck "i<(128-32)/4" bzw was soll sie bewirken?
    Also nach deiner Lösung zur folge war ich auf dem falschen weg...

    Bitte erklär mal,was du das genau gemacht hast?!



  • (128-32) ASCII-Tabelle der Zahlen von 32 - 127

    /4 ... for(int j = 0; j < 4; ++j) in 4Doppel- Spalten

    PS: Keine fertigen Lösungen!!!ELF Nochmal!



  • (128-32) = Anzahl der ASCII-Zeichen gesamt / 4 = Anzahl der ASCII-Zeichen pro Spalte. i ist somit der Zeilen-Zähler.

    j geht von 0-3 und ist damit der Spalten-Zähler.

    Mit (i + 32) + (128-32)/4 * j rechne ich dann das Zeichen aus. An 0/0 steht ja nicht das Zeichen mit dem ASCII-Code 0 sondern mit dem ASCII-Code 32 (= Erster Ausdruck). Der zweite Ausdruck mulitpliziert dann 32 mit dem Faktor für die einzelnen Spalten. Da j in der ersten Spalte 0 ist, evaluiert der Ausdruck zu 0.

    MfG SideWinder



  • PS: Keine fertigen Lösungen!!!ELF Nochmal!

    Jaja. Ich schau schon, ob er sich damit beschäftigt oder nicht.

    MfG SideWInder



  • SideWinder schrieb:

    (128-32) = Anzahl der ASCII-Zeichen gesamt / 4 = Anzahl der ASCII-Zeichen pro Spalte. i ist somit der Zeilen-Zähler.

    j geht von 0-3 und ist damit der Spalten-Zähler.

    Mit (i + 32) + (128-32)/4 * j rechne ich dann das Zeichen aus. An 0/0 steht ja nicht das Zeichen mit dem ASCII-Code 0 sondern mit dem ASCII-Code 32 (= Erster Ausdruck). Der zweite Ausdruck mulitpliziert dann 32 mit dem Faktor für die einzelnen Spalten. Da j in der ersten Spalte 0 ist, evaluiert der Ausdruck zu 0.

    MfG SideWinder

    Vielen dank erstmal für die mühe!

    Man könnte theoretisch auch anstatt "(128-32)/4" auch nur 24 sagen können!Ist nämlich auf den ersten blick etwas verwirrend!Ich verstehe nur nicht mit welchem ausdruck du in deiner lösung dafür sorgst dass man in die nächste zeile springen soll??

    mfg Toni


Anmelden zum Antworten