sortieren und Ausgabe
-
hm wie erklär ichs und reduzire es gleichzeitig aufs wesentliche
ich baue immer noch an dem Programm hier
http://www.c-plusplus.net/forum/285564
es ist etwas verändert so das ich es mit coode bloks Compilern konntenun hab ich mir folgendes gedacht.
ich würde gerne für zeichen und nummern eine vergröserte ausgabe machen
likeprintf(" +\n +\n+++++\n +\n +\n");
eine einzelne zahl soll ungefär so aus schauen
#include <stdio.h> int main() { int variable==145; if (variable=4) { printf(" 444 \n"); printf(" 44 \n"); printf(" 44 4 \n"); printf("444444444 \n"); printf(" 4 \n"); printf(" 4 \n"); } printf("\n"); if (variable==1) { printf(" 1 \n"); printf(" 11 \n"); printf(" 1 \n"); printf(" 1 \n"); printf(" 1 \n"); printf(" 111 \n"); } printf("\n"); if (variable==5) { printf(" 55555555 \n"); printf(" 55 \n"); printf(" 55555555 \n"); printf(" 55 \n"); printf(" 55 55 \n"); printf(" 55555555 \n"); } printf("\n"); return 0; }
aber wie setzte ich jetzt einzelne zahlen zusammen so das auf dem schirm
145
erscheint und nicht
4
1
5
ich hoffe ich hab mich halbwegs klar ausgedrückt.
ich will das so machen das ich nachher eine x beliebig lange zahl ausgeben kann.ach so ich möchte nicht unbedingt fertigen Code haben nur denk Anstöße oder begriffe nach denen ich suchen kann.
danke schon mal im Voraus.
mir ist grade eingefallen
das ich das wohl am besten Zeile für Zeile mache
aber wie lege ich die reinflogen festups edit aus = wurde ==
-
So, wie du jetzt ausgibst, schreibst du die einzelnen Zahlen jeweils zeilenweise hin - du müsstest die einzelnen Ausgaben ineinander verschränken (d.h. erst alle ersten Zeilen, dann die zweiten Zeilen etc.
(und statt deiner if()-Konstruktion würde ich ein mehrdimensionales Array verwenden, in dem die Ausgabeteile untergebracht sind)
-
Voraussetzung: Jedes deiner "Ziffernbildchen" besteht aus der gleichen Anzahl Zeilen, in deinem Fall 6.
Dann fällt mir spontan folgendes ein:- Lege eine 2-dimensionale Datenstruktur an, welche Strings speichern kann (o. B. d. A. ein 2-dim. char*-Array)
- Jede "Spalte" (vermutlich 10 Stück für 0-9) in der Datenstruktur entspricht einem Ziffernbildchen
- Jede "Zeile" (6 pro Spalte) entspricht einer Zeile des jeweiligen Ziffernbildchens
- Initialisiere die Datenstruktur mit den Ziffernbildchenfragmenten[1]
- Konvertiere deine Zahl in "variable" in einen String
- Für z von 0 bis 5 (6 Zeilen) wiederhole folgende Schritte:
- Durchlaufe den String von vorne bis hinten
- Benutze den ordinalen Wert (o. B. d. A. ASCII-Wert) des aktuellen Zeichens (char), um den Spaltenindex in der Datenstruktur zu berechnen
- Greife in der Spalte (sprich für das aktuelle Ziffernbild) mit z auf den Zeilenstring des Ziffernbilchens zu
- Gib den Zeilenstring aus.
- Gib nach jedem Durchlauf des Strings mit der Zahl einen Zeilenumbruch aus
[1]:
z. B.bildchen[4][2] := " 44 4 "
(Pseudocode, 4 steht für das Bildchen, das die "4" darstellt und 2 ist die dritte Zeile des Bildchens.
-
danke sehr des hilft.
Ich konnte mir dazu einfach kein Konzept vorstellen.
-
soo nach ein par Tagen schaut das ganze jetzt so aus
was sagt ihr dazu
ich persönlich bin grade so stoltz drauf das ich unter der zimmer decke hänge *G*
[edit]
ach ja Kritik wäre jetzt nicht schlecht#include <stdio.h> #include <stdlib.h> #include <string.h> char *bild[10][6]={ " 000 ", "00 00 ", "00 00 ", "00 00 ", "00 00 ", " 000 ", " 11 ", "111 ", " 11 ", " 11 ", " 11 ", "1111 ", " 22222 ", "22 22 ", " 222 ", " 222 ", "222 ", "2222222 ", " 333333 ", "33 33 ", " 3333 ", " 3333 ", "33 33 ", " 333333 ", " 4 ", " 444 ", " 44 44 ", " 44 44 ", "4444444444 ", " 44 ", "55555555 ", "55 ", "5555555 ", " 55 ", "55 55 ", " 555555 ", " 66666 ", " 66 ", "6666666 ", "66 66 ", "66 66 ", " 666666 ", "7777777 ", " 77 ", " 77 ", " 77 ", " 77 ", "77 ", " 8888 ", " 88 88 ", " 8888 ", " 88 88 ", " 88 88 ", " 8888 ", " 999999 ", "99 99 ", "99 99 ", " 9999999 ", " 99 ", " 999999 " }; int main (int argc, char *argv[]) { int a[100], a1=1; short int zahl=0, zeile; // Zahl von 0 bis 9 && zeile von 0 bis 5 (6zeilen) // fertige bildchen printf("geben sie eine Zahl ein\n:"); scanf("%d", &a[a1]); //nehmen wir 23423 an /* *********************VV********wert zu string*******VV******************* */ int BufferLaenge; //string länge char buffer [50]; //buffer dings zum string speichern und BufferLaenge=sprintf (buffer, "%d", a[a1]); // folgend ist test säter weg machen WICHTIG printf("[%s]<--string [%d]<--- laenge des strings\n",buffer,BufferLaenge); // test säter weg machen /* ********************VV********String verarbeiten*******VV*************** */ char ASCIImanipulator = '0'; char buffer2; int simpelZahl[9]; for (zeile=0; zeile < 6; zeile++){ printf("\n"); for (zahl=0; zahl < BufferLaenge; zahl++) { buffer2 = buffer[zahl]; simpelZahl[zahl] = buffer2 - ASCIImanipulator; printf("%s", bild[simpelZahl[zahl]][zeile]); } } return 0; }
-
Wie wäre es mit:
#include <stdio.h> #include <stdlib.h> #include <string.h> char *bild[10][6]={ " 000 ", "00 00 ", "00 00 ", "00 00 ", "00 00 ", " 000 ", " 11 ", "111 ", " 11 ", " 11 ", " 11 ", "1111 ", " 22222 ", "22 22 ", " 222 ", " 222 ", "222 ", "2222222 ", " 333333 ", "33 33 ", " 3333 ", " 3333 ", "33 33 ", " 333333 ", " 4 ", " 444 ", " 44 44 ", " 44 44 ", "4444444444 ", " 44 ", "55555555 ", "55 ", "5555555 ", " 55 ", "55 55 ", " 555555 ", " 66666 ", " 66 ", "6666666 ", "66 66 ", "66 66 ", " 666666 ", "7777777 ", " 77 ", " 77 ", " 77 ", " 77 ", "77 ", " 8888 ", " 88 88 ", " 8888 ", " 88 88 ", " 88 88 ", " 8888 ", " 999999 ", "99 99 ", "99 99 ", " 9999999 ", " 99 ", " 999999 " }; int main (int argc, char *argv[]) { int a; short int zahl=0, zeile; // Zahl von 0 bis 9 && zeile von 0 bis 5 (6zeilen) // fertige bildchen printf("geben sie eine Zahl ein\n:"); scanf("%d", &a); //nehmen wir 23423 an /* *********************VV********wert zu string*******VV******************* */ int BufferLaenge; //string länge char buffer [50]; //buffer dings zum string speichern und BufferLaenge=sprintf (buffer, "%d", a); // folgend ist test säter weg machen WICHTIG printf("[%s]<--string [%d]<--- laenge des strings\n",buffer,BufferLaenge); // test säter weg machen /* ********************VV********String verarbeiten*******VV*************** */ char ASCIImanipulator = '0'; int simpelZahl; for (zeile=0; zeile < 6; zeile++) { printf("\n"); for (zahl=0; zahl < BufferLaenge; zahl++) { simpelZahl = buffer[zahl] - ASCIImanipulator; printf("%s", bild[simpelZahl][zeile]); } } return 0; }