2017-01-25 3 views
1

Ich muss ein Programm schreiben, um eine 2-stellige Binärzahl einzulesen und in einem vergrößerten Format auszudrucken (7 x 7 Raster). Ich kann annehmen, dass nur 2 Binärstellen eingegeben werden. Zum BeispielC So schreibe ich vergrößerte Ziffern

input=01 
output= 
....... ...1... 
.00000. ..11... 
.0...0. .1.1... 
.0...0. ...1... 
.0...0. ...1... 
.00000. ...1... 
....... .11111. 

Mein Versuch

int input; 
scanf("%d", &input); 

if(input=0) 
printf("....... 
     .00000. 
     .0...0. 
     .0...0. 
     .0...0. 
     .00000. 
     ......."); 

Ich bekomme immer eine Fehlermeldung

+0

Sie müssen 'if (Eingang == 0) {}'. Stattdessen weisen Sie hier "Input" einem Wert von "0" zu. –

+0

"Ich bekomme immer eine Fehlermeldung" Es ist sinnvoller, den genauen Text der Fehlermeldung zu posten, als nur zu beschreiben. Es verbessert die Post. – chux

Antwort

0

Sie tatsächlich benötigen, um neue Zeile Zeichen einzufügen (dh \n):

int input; 
scanf("%d", &input); 
if(input==0) 
printf(".......\n.00000.\n.0...0.\n.0...0.\n.0...0.\n.00000.\n......."); 
2
  1. Sie brauchen t o Speichern Sie die Daten in einem zweidimensionalen Array. weil es notwendig ist, zwei numerische Daten in einer Zeile anzuzeigen.

  2. Sie müssen Zahlen als Zeichenfolgen eingeben oder jeweils eine Ziffer eingeben. Wenn Sie es als eine Reihe von Zahlen eingeben, wird die führende 0 verloren. ZB Eingabe: 01 bewerten als 1.

So, wie folgt aus:

#include <stdio.h> 

#define HEIGHT 7 
#define WIDTH 7 

char zero[HEIGHT][WIDTH] = { 
    ".......", 
    ".00000.", 
    ".0...0.", 
    ".0...0.", 
    ".0...0.", 
    ".00000.", 
    "......." 
}; 
char one[HEIGHT][WIDTH] = { 
    "...1...", 
    "..11...", 
    ".1.1...", 
    "...1...", 
    "...1...", 
    "...1...", 
    ".11111." 
}; 

int main(void){ 
    char ch, input[3]; 
    if(1==scanf("%2[01]", input)){ 
     for(int i = 0; i < HEIGHT; ++i){ 
      for(int j = 0; ch = input[j]; ++j){ 
       if(j) 
        putchar(' ');//separator 
       switch(ch){ 
       case '0': 
        printf("%.*s", WIDTH, zero[i]); 
        break; 
       case '1': 
        printf("%.*s", WIDTH, one[i]); 
        break; 
       } 
      } 
      puts(""); 
     } 
    } 
    return 0; 
} 
+0

[DEMO] (http://ideone.com/QPWkAi) – BLUEPIXY

+0

@DavidBowling Vielen Dank für Ihre Aufmerksamkeit. Ich habe einen Tippfehler korrigiert. – BLUEPIXY

Verwandte Themen