2016-01-19 6 views
5

Ich frage mich, ob (und wie) man nur das Vorzeichen eines Array-Eintrags drucken kann. Zum Beispiel würde ich so etwas wieC Druck nur Vorzeichen von Ganzzahlen

{1, -1, -1, 1} 

habe und ich würde die Ausgabe etwas aussehen wie

+ - - + 

Ich bin ziemlich neu in C und die einzige Lösung, die ich mit oben kommen kann, ist einig Art von if (... < 0) Bedingung, die entweder in + oder - Char resultiert. Aber das scheint ziemlich unhandlich.

Dies ist lediglich dazu gedacht, große "Muster", die ich zeichne, mit +1 und -1 anzufertigen. Ich wäre wirklich froh, wenn jemand helfen könnte.

Antwort

1

Sie auf dem richtigen Weg sind zu zeigen. Dies ist der Ansatz, den ich verwenden würde. Während bitweise Operationen ebenfalls funktionieren würden, ist etwas zur Lesbarkeit zu sagen.

#include <stdio.h> 

int main(int argc, char **argv) 
{ 
    int numbers[4] = {1, -1, -1, -1}; 

    for (int i = 0; i < (sizeof(numbers)/sizeof(numbers[0])); i++) 
    { 
     printf("%s ", (numbers[i] < 0 ? "-" : "+")); 
    } 

    printf("\n"); 

    return 0; 
} 

Oder Sie können eine Zeichenfolge mit sprintf()/snprintf() bauen; nicht sicher, ob Sie es ausgeben oder woanders verwenden möchten.

+0

Danke, mit einigen Verbesserungen war dies genau das, was ich gesucht habe! – JFG

+0

Awesome, kein Problem, froh, ich könnte helfen! :) – Will

+1

In einem 1k x 1k-Array sieht es wirklich viel besser aus ohne die '1's – JFG

0

Werfen Sie einen Blick auf this.

Die Flagge + zwingt den Ausgang das Vorzeichen einer Zahl

+0

Aber man kann es nicht ohne den Druck der Nummer verwenden auch. – Will

+0

Aus Neugier, wäre es möglich, das Zeichen zu erzwingen und dann die Länge der gedruckten Zeichenfolge zu "schneiden", so dass nur das Zeichen gedruckt würde? – JFG

4

Die von Ihnen erwähnte Methode ist für diesen Zweck geeignet. Wenn Sie gleiche Sache auf eine andere Weise tun möchten, können Sie ternären Operator verwenden wie:

a[i] < 0 ? printf("-"): printf("+"); 
+0

Danke, ich hatte diesen Operator vergessen. – JFG

+0

Mein Vergnügen. Vergessen Sie nicht, die Antwort als akzeptiert zu genehmigen. :) – Imran

0

du wie dies tun können:

#include <stdio.h> 

int main (void) { 
    int num [4] = {1, -1, -1, 1); 
    int i; 
    for (i = 0; i < 4; i ++) { 
     if (num [i] < 0) { 
      printf ("-"); 
     } 
     else 
      printf ("+"); 
    } 
    return 0; 
}