vorzeichen als Pixelmatrix darstellen 1
-
Das Programm soll eine int-zahl einlesen und die Zahl als Pixelmatrix ausgeben.
Die Ausgabe von positiven Int-werten ist kein Problem,
kommt aber ein Vorzeichen vor der zahl, weiß ich nicht mehr weiter.die matrix sieht so aus:
const int zeichen = 12; const pixel_font_t matrix[zeichen] = { { {' ', 'X', 'X', 'X', ' '}, {'X', ' ', ' ', ' ', 'X'}, {'X', ' ', ' ', 'X', 'X'}, {'X', ' ', 'X', ' ', 'X'}, {'X', ' ', 'X', ' ', 'X'}, {'X', 'X', ' ', ' ', 'X'}, {'X', ' ', ' ', ' ', 'X'}, {' ', 'X', 'X', 'X', ' '} }, { {' ', ' ', ' ', 'X', ' '}, {' ', ' ', 'X', 'X', ' '}, {' ', 'X', ' ', 'X', ' '}, {' ', ' ', ' ', 'X', ' '}, {' ', ' ', ' ', 'X', ' '}, {' ', ' ', ' ', 'X', ' '}, {' ', ' ', ' ', 'X', ' '}, {' ', ' ', ' ', 'X', ' '} }, { {' ', 'X', 'X', 'X', ' '}, {'X', ' ', ' ', ' ', 'X'}, {'X', ' ', ' ', ' ', 'X'}, {' ', ' ', ' ', 'X', ' '}, {' ', ' ', 'X', ' ', ' '}, {' ', 'X', ' ', ' ', ' '}, {'X', ' ', ' ', ' ', ' '}, {'X', 'X', 'X', 'X', 'X'} }, { {' ', 'X', 'X', 'X', ' '}, {'X', ' ', ' ', ' ', 'X'}, {' ', ' ', ' ', ' ', 'X'}, {' ', ' ', 'X', 'X', ' '}, {' ', ' ', ' ', ' ', 'X'}, {' ', ' ', ' ', ' ', 'X'}, {'X', ' ', ' ', ' ', 'X'}, {' ', 'X', 'X', 'X', ' '} }, { {' ', ' ', ' ', 'X', ' '}, {' ', ' ', 'X', 'X', ' '}, {' ', 'X', ' ', 'X', ' '}, {'X', ' ', ' ', 'X', ' '}, {'X', 'X', 'X', 'X', 'X'}, {' ', ' ', ' ', 'X', ' '}, {' ', ' ', ' ', 'X', ' '}, {' ', ' ', ' ', 'X', ' '} }, { {'X', 'X', 'X', 'X', 'X'}, {'X', ' ', ' ', ' ', ' '}, {'X', ' ', ' ', ' ', ' '}, {'X', 'X', 'X', 'X', ' '}, {' ', ' ', ' ', ' ', 'X'}, {' ', ' ', ' ', ' ', 'X'}, {'X', ' ', ' ', ' ', 'X'}, {' ', 'X', 'X', 'x', ' '} }, { {' ', 'X', 'X', 'X', ' '}, {'X', ' ', ' ', ' ', 'X'}, {'X', ' ', ' ', ' ', ' '}, {'X', ' ', 'X', 'X', ' '}, {'X', 'X', ' ', ' ', 'X'}, {'X', ' ', ' ', ' ', 'X'}, {'X', ' ', ' ', ' ', 'X'}, {' ', 'X', 'X', 'X', ' '} }, { {'X', 'X', 'X', 'X', 'X'}, {' ', ' ', ' ', ' ', 'X'}, {' ', ' ', ' ', 'X', ' '}, {' ', ' ', 'X', ' ', ' '}, {' ', 'X', ' ', ' ', ' '}, {' ', 'X', ' ', ' ', ' '}, {' ', 'X', ' ', ' ', ' '}, {' ', 'X', ' ', ' ', ' '} }, { {' ', 'X', 'X', 'X', ' '}, {'X', ' ', ' ', ' ', 'X'}, {'X', ' ', ' ', ' ', 'X'}, {' ', 'X', 'X', 'X', ' '}, {'X', ' ', ' ', ' ', 'X'}, {'X', ' ', ' ', ' ', 'X'}, {'X', ' ', ' ', ' ', 'X'}, {' ', 'X', 'X', 'X', ' '} }, { {' ', 'X', 'X', 'X', ' '}, {'X', ' ', ' ', ' ', 'X'}, {'X', ' ', ' ', ' ', 'X'}, {'X', ' ', ' ', 'X', 'X'}, {' ', 'X', 'X', ' ', 'X'}, {' ', ' ', ' ', ' ', 'X'}, {'X', ' ', ' ', ' ', 'X'}, {' ', 'X', 'X', 'X', ' '} }, { {' ', ' ', ' ', ' ', 'X'}, {' ', ' ', ' ', 'X', ' '}, {' ', ' ', ' ', 'X', ' '}, {' ', ' ', 'X', ' ', ' '}, {' ', ' ', 'X', ' ', ' '}, {' ', 'X', ' ', ' ', ' '}, {' ', 'X', ' ', ' ', ' '}, {'X', ' ', ' ', ' ', ' '} }, { {' ', ' ', ' ', ' ', ' '}, {' ', ' ', ' ', ' ', ' '}, {' ', ' ', ' ', ' ', ' '}, {' ', ' ', ' ', ' ', ' '}, {'X', 'X', 'X', 'X', 'X'}, {' ', ' ', ' ', ' ', ' '}, {' ', ' ', ' ', ' ', ' '}, {' ', ' ', ' ', ' ', ' '} } };int fillPixelLineWithInt(int int_input, pixel_int_line_t char_output) { int int_output, addfield; //Ermittelt Anzahl der Stellen der eingegebenen Zahl if (int_input < 0) { //Wenn int_input negativ ist, dann eine Stelle mehr wg. Vorzeichen addfield = 2; } else { addfield = 1; } int_output=log10((double)int_input)+ addfield; //Füllen des Arrays mit INT-wert char chararray[13]; sprintf( chararray,"%d", int_input); int indexstelle = 0; for( int zeile = 0; zeile < 8; zeile = zeile + 1) { for( int index = indexstelle; index < int_output; index = index + 1) { for( int spalte = 0; spalte < 5; spalte = spalte + 1) { char_output[zeile][(spalte +(index * 6))]=matrix[chararray[index]-'0'][zeile][spalte]; } } } for( int zeile = 0; zeile < 8; zeile = zeile + 1) { for( int spalte = 0; spalte < (6 * int_output); spalte = spalte + 1) { printf( "%c", char_output[zeile][spalte]); } cout << "\n"; } //Rückgabe der Stellen return int_output; }Da die Pixelmatrix für '-' in matrix[11] abgelegt ist, wollte ich prüfen ob int_input negativ ist und wenn das der fall ist, sollen die ersten 5 bzw 6 spalten mit der Pixelmatrix für'-' gefüllt werden.
Ich dachte mir das so:if (int_input < 0) { for( int zeile = 0; zeile < 8; zeile = zeile + 1) { for( int spalte = 0; spalte < 5; spalte = spalte + 1) { char_output[zeile][spalte] = matrix[11][zeile][spalte]; } } indexstelle = 1; }Das programm gibt dann aber nichts aus.
Wo liegt der Fehler???????
-
Füg in deinen Post mal C++Code-Tags ein, dann kann man dir helfen.
-
Sorry für Doppelpost aber sonst liest der Threadersteller die Antwort wahrscheinlich nicht.
1.Benutze den Debugger!
Hättest du den benutzt wärst du nach ein paar Sekunden selbst auf den Fehler gestoßen!2. Gib nächstes mal auch deine typedefs an
Ist in dem Fall zwar nicht so schwierig die zu erraten aber in anderen Fällen könnte ein Fehlverhalten auch an einem falschen typedef liegen.3. Benutze den Debugger!!
4. Was hast du den in der Schule über Logarithmen gelernt?
Was genau gibt log10(x) zurück:
Mit welcher Zahl du 10 potenzieren musst um x zu erhalten.
Kann 10 hoch irgendeine Zahl jemals negativ werden?Lösung: abs
5. Benutze den Debugger!!!!
6. Scheinen noch ein paar andere Fehler drin zu sein aber die wirst du ja jetzt selber lösen können weil du den Debugger verwendest!!!!111einseinself

hf
rean