2016-01-19 30 views
5

Zastanawiam się, czy (i jak) można wydrukować tylko znak wpisu tablicy. Na przykład chciałbym mieć coś takiegoC tylko znak liczby całkowitej

{1, -1, -1, 1} 

i chciałbym wyjście aby wyglądać podobnie

+ - - + 

Jestem całkiem nowy, C i jedynym rozwiązaniem mogę wymyślić jakiś sortowanie if (... < 0) contdition, które powoduje, że albo + lub - char. Ale wydaje się to dość niefortunne.

Ma to jedynie na celu duże "wzory" rysowane za pomocą +1 i -1. Byłbym naprawdę zadowolony, gdyby ktoś mógł mi pomóc.

Odpowiedz

1

Jesteś na właściwej drodze. Takie podejście wykorzystam. Podczas gdy operacje bitowe również będą działały, należy coś powiedzieć na temat czytelności.

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

Albo można zbudować ciąg z sprintf()/snprintf(); nie wiesz, czy chcesz go wyprowadzić, czy użyć go gdzie indziej.

+0

Dzięki, dzięki kilku poprawkom to było dokładnie to, czego szukałem! – JFG

+0

Niesamowite, bez problemu, cieszę się, że mogę pomóc! :) – Will

+1

W tablicy 1k x 1k wygląda naprawdę lepiej bez '1's – JFG

0

Spójrz na this.

Flaga + wymusza wyjście, aby pokazać znak liczby

+0

Ale nie można używać go bez drukowania numeru także. – Will

+0

Z ciekawości, czy można wymusić znak, a następnie "wyciąć" długość drukowanego napisu, tak aby drukowany był tylko znak? – JFG

4

Sposób, o którym wspomniałeś, jest skuteczny w tym celu. Jeśli chcesz zrobić to samo przez jakiś inny sposób, można użyć operatora potrójny jak:

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

Dzięki, zapomniałem o tym operatorze. – JFG

+0

Moja przyjemność. Nie zapomnij zatwierdzić odpowiedzi jako zaakceptowanej. :) – Imran

0

Można to zrobić tak:

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