Problem bei der Darstellung einer ASCII - Tabelle



  • Schönen Guten Tag,

    Ich möchte eine ASCII Tabelle erstellen, was bisher auch gut funktioniert (Okt, Dec, Hex und Zeichen werden angezeigt) jedoch habe ich ein Problem mit der Formatierung.

    Aussehen soll es so:

    http://img5.imagebanana.com/view/7eeurts/Namenlos.jpg

    Jedoch funktioniert es nicht so ganz 🙂

    http://img5.imagebanana.com/view/bry4qg9s/Namenlos1.jpg

    Ich weiß, das es mit zwei for-Schleifen möglich ist, nur mir fehlt der Gedankenstoß. Probiert mit zwei Schleifen habe ich es zwar schon, nur wird dann die ASCII-Tabelle je nach Bedingung immer wiederholt. (Irgendwie auch logisch 😃 )

    Hier mal der C Code:

    #include	<stdio.h>
    #include	<stdlib.h>
    
    int main ()
    {
    	int i = 0;
    	printf("***\tASCII-Tabelle\t***\n");
    	for (i = 0;i <= 3; i++){
    		printf("Okt Dez Hex Zch\t\t");
    	}
    	printf("\n----------------------------------------------------------------------------------------\n");		
    
    	for(i=0;i<127;i++){
    		if(i<32 || i == 127){
    			printf("%03o %03i %03x ... \n", i, i, i);
    		}else{
    			printf("\t\t\t%03o %03i %03x %3c \n", i, i, i, i);	
    		}
    	}
    	return 0;
    }
    

    Ich bedanke mich jetzt schon einmal für die Hilfe.

    Mit freundlichem Gruss
    Gusty



  • Du musst alles in einem Rutsch ausgeben. In ANSI C gibt es keinen Weg Zeilen zurück zu gehen. Du könntest ansonsten auch systemabhängige Lösungen nehmen, wenn du willst. Welches Betriebssystem/welchen Compiler nutzt du?



  • Hallo,
    ich benutzte den erweiterten Vi Editor unter OpenSuse 10.2 (VMware). Dies ist vom Professor vorgeschrieben 🙂

    Wir haben diese Aufgabe heute theoretisch bearbeitet und der Prof. sagte, das diese Aufgabe mit zwei for-Schleifen realisierbar wäre, was mich persönlich auch verwundert hat, da ich vorher schon mit c++ arbeite und ihn drauf hinwies das ich keiner der Vorschläge umsätzen könnte.

    PS: Ich habe mich noch bisschen durch gegooglt und habe paar Code Schnipsel mit Array's und Modulo gefunden. Sollte ich (ohne Array) eine Antwort finden, werde ich sie hier Posten.

    PPS: Über andere Vorschläge würde ich mich weiterhin freuen.

    MfG



  • Mach doch einfach alle Ausgaben in ein printf Statement

    #include<stdio.h>
    #include<stdlib.h>
    
    int main() {
      printf("***\tASCII-Tabelle\t***\n");
      for( unsigned i = 0;i <= 3; i++) {
        printf("Okt Dez Hex Zch\t\t");
      }
      printf("\n----------------------------------------------------------------------------------------\n");       
    
      for(unsigned i = 0; i < 32; ++i) {
        printf("%03o %03i %03x ...\t\t%03o %03i %03x %3c\t\t%03o %03i %03x %3c \n",
               i, i, i, i+32, i+32, i+32, i+32, i+64, i+64, i+64, i+64);
      }
    }
    


  • Hallo,
    rüdiger ich bedanke mich für deine Hilfe. Das ist genau das was ich wollte 🙂

    MfG



  • Hallo,
    für die, die es noch interessiert habe ich noch eine zweite Lösung.

    #include <stdio.h>
    #include <stdlib.h>
    
    #define ASCII 128
    #define SPALTEN 4
    #define ZEILEN ASCII/SPALTEN
    
    int main ()
    {
    	// Deklaration
        int i = 0, j = 0;
    
    		//Ausgabe ASCII-Tabelle
    		for(i=0;i<SPALTEN;i++){
    			if(i<SPALTEN-1){
    				printf("Okt Dez Hex Zch    ");
    			}else{
    				printf("Okt Dez Hex Zch    \n");
    				}
    		}
    		//Ausgabe Okt, Dez, Hex, Zch
        for(i=0;i<ZEILEN;i++){
    			for(j=0;j<ASCII;j=j+ZEILEN){
        		printf("%03o %03d %03x ", i+j, i+j, i+j);    
            if (( (i+j>=0) && (i+j<=31) )||(i+j == 127)){
            	printf("...    ");
             	}else{
              	printf(" %c     ", i+j);
    						}
        		}
    		printf("\n");
        }
        return 0;
    }
    

    MfG


Anmelden zum Antworten