Darstellung ASCII-Tabelle Problem
-
Hey
also ich hoffe mal ich bin hier richtig ^^
ich mache eine ausbildung zum fachinformatiker systemintegration und wir haben gerade mit C angefangen.
Da ich mit dem dozenten einen recht freundschaftlichen umgang pflege, neigt er dazu mich zu necken und mich mit problemem ne zeitlang alleine sitzen zu lassen bis er hilft.
nun ich habs zig-mal durchdacht, komme aber nicht auf die lösung, vielleicht könnt ihr mir ja helfen, das wäre echt nett von euch ^^Also,ich habe folgendes problem ...ich will die ascii-tabelle ausgeben lassen. doppelseitig und mit rahmen drum. das hab ich soweit auch hinbekommen. aber am ende um genau zu sein ab zeichen 252 bekomme ich darstellungsprobleme da auf einmal leerzeichen auftauchen, wo keine sein dürften!!!
mein dozent riet mir ich solle auf else if zurückgreifen, aber ich komme nicht auf die lösung.
wäre echt cool wenn ihr mir helfen könntet. (keine komplette lösung sondern ein schubs in die richtige richtig würde mir schon reichen ^^)MfG
Chris#include <stdio.h> #include <stdlib.h> int main(int agrc, char* argv[]) { int x=0,y=0, start=0, ende=255; do { printf("%c",201); // Symbol linke obere Ecke for (y=0;y<78;y++) { // Symbol = ganze Linie printf("%c",205); } printf("%c",187); // Symbol rechte obere Ecke printf("%cZeichen Dezimal Oktal Hexadezimal Zeichen Dezimal Oktal Hexadezimal %c",186,186); for( x = start; x <= start +17; x++) { if( x <7 || x > 10 && x != 13 && x < 255) { printf("%c %c %3d %3o %2X %c %3d %3o %2X %c",186,x,x,x,x,x+18,x+18,x+18,x+18,186); } else if (x > 255) { printf("%c %c",186,186); } else { printf("%c %3d %3o %2X %c %3d %3o %2X %c",186,x,x,x,x+18,x+18,x+18,x+18,186); } } printf("%c Weiter mit RETURN... %c",186,186); printf("%c",200); for (y=0;y<78;y++) { printf("%c",205); } printf("%c",188); getchar(); system("cls"); start +=36; } while (x < 256); return 0; }
-
Wenn x größer als 238 ist, ist x+18 (das Zeichen in der zweiten Spalte) größer als 256 und du fängst vermutlich wieder damit an, die Sonderzeichen auszugeben.
Ansonsten solltest du deinen Code vernünftig einrücken
-
damn....da hätte ich echt selber drauf kommen müssen.
vielen dank für die schnelle hilfehabs jetzt mal mit for( x = start; x <= start +15; x++) { .......
und x+=16
und start +=32; .....gemacht und es klappt fast ^^ somit habe ich jetzt 8 seiten die die komplette ascii-tabelle ausgeben ( am ende seite 8 steht 255)...blöderweise gibt er mir jetzt ne leere ( bis auf rahmen und zeichen dezimal etc reihe) seite aus. erst nach nochmaligem return beendet er..wenn ich das richtig sehe und verstehe liegt das an zeile 21 und 22. aber wenn ich die rausnehme bekomme ich auf seite 9 nur noch müll raus.....hättest du vielleicht noch ne gute idee dazu? ^^
und ist es denn überhaupt möglich mit meinen ursprünglichen 36 zeichen ( 18 pro halb seite) das programm zu schreiben? worauf du mich ja korrekter weise drauf hingewiesen hast, ist wenn x größer 238 dann ist +18 zu viel und er geht in die sonderzeichen wieder rein. kann ich das abfangen und meinetwegen mit nem weiterem if sagen ab 255 hör auf weiter zu zählen? oder ist das für meine beschränkten kenntnisse zuviel gewollt?
Ps. wie wäre das einrücken denn sinnvoll O.o .. wie gesagt, beschränkte anfängliche kenntnisse
-
SoWhat20 schrieb:
gemacht und es klappt fast ^^ somit habe ich jetzt 8 seiten die die komplette ascii-tabelle ausgeben ( am ende seite 8 steht 255)...blöderweise gibt er mir jetzt ne leere ( bis auf rahmen und zeichen dezimal etc reihe) seite aus. erst nach nochmaligem return beendet er..wenn ich das richtig sehe und verstehe liegt das an zeile 21 und 22. aber wenn ich die rausnehme bekomme ich auf seite 9 nur noch müll raus.....hättest du vielleicht noch ne gute idee dazu? ^^
Hast du schnmal etwas von "break" gehört? Ich bin mir nicht sicher, aber eventuell könnte es helfen.
Ps. wie wäre das einrücken denn sinnvoll O.o .. wie gesagt, beschränkte anfängliche kenntnisse
Da gibt es verschiedene Varianten (siehe hier). Mir ist es egal welche du verwendest, solange du einen einheitlichen Stil nutzt.
-
hmm also
break
kenne ich nicht... werds mir mal im inet raussuchen und durchlesen.
aber danke erstmal für die hilfe, selbst wenn die neunte seite leer bleibt ist es nicht schlimm^^ hauptsache es funktioniertwerd mir das mitm einrücken mal durchlesen und verinnerlichen, danke
und wenn ich dann iwann mal besser bin, werd ich auch anfangen zu helfen, bis dahin bleib ich wohl eher hilfesucher ^^
-
Ich habe Rudimente deines Codes wiederverwendet: