2016-01-19 17 views
5

Mi chiedevo se (e come) si può stampare solo il segno di una voce di array. Per esempio mi piacerebbe avere qualcosa di simile aC solo segno di interi

{1, -1, -1, 1} 

e vorrei l'uscita di guardare qualcosa di simile

+ - - + 

Sono abbastanza nuovo per C e l'unica soluzione che posso venire in mente è un po ' una sorta di contradizione if (... < 0) che risulta in un carattere + o -. Ma sembra abbastanza strano.

Questo è semplicemente inteso per graziosi "motivi" che disegno con +1 e -1. Sarei davvero felice se qualcuno potesse aiutare.

risposta

1

Sei sulla strada giusta. Questo è l'approccio che userei. Anche se le operazioni bit a bit funzionerebbero, è necessario dire qualcosa per la leggibilità.

#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; 
} 

Oppure si può costruire una stringa con sprintf()/snprintf(); non sono sicuro se lo vuoi produrre o usarlo altrove.

+0

Grazie, con alcune modifiche questo era esattamente quello che stavo cercando! – JFG

+0

Fantastico, nessun problema, felice di poterti aiutare! :) – Will

+1

In un array 1k x 1k sembra davvero molto meglio senza gli '1' – JFG

0

Dai uno sguardo allo this.

La bandiera + forza l'uscita per mostrare il segno di un numero

+0

Ma non si può utilizzare senza stampare il numero di anche. – Will

+0

Per curiosità, sarebbe possibile forzare il segno e quindi 'tagliare' la lunghezza della stringa stampata, in modo tale da stampare solo il segno? – JFG

4

Il modo in cui hai menzionato è efficace per questo scopo. Se si vuole fare stessa cosa in qualche altra maniera, è possibile utilizzare come operatore ternario:

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

Grazie, mi ero dimenticato di questo operatore. – JFG

+0

Piacere mio. Non dimenticare di approvare la risposta come accettata. :) – Imran

0

Si può fare questo in questo modo:

#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; 
}