2016-01-19 4 views
5

配列エントリの符号だけを印刷できるかどうか、(どのようにすれば)かと思っていました。たとえば、私はC整数の符号のみを印刷する

{1, -1, -1, 1} 

のようなものを持っているだろうと私はCにかなり新しいだと私が思い付くことができる唯一の解決策はいくつかある

+ - - + 

のような出力が何かを見たいです +または - charのいずれかの結果となる if (... < 0) contditionの並べ替え。しかし、それは非常に不自然なようです。

これは、私が+1-1と描画している大きな「パターン」をかなり上手に意味するだけです。誰かが助けてくれたら嬉しいです。

答えて

1

の兆候を示すために、出力を強制的に+フラグ。これが私が使用する方法です。ビット単位の操作も機能しますが、可読性のために何かが言われています。

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

それとも、sprintf()/snprintf()で文字列を構築することができます。あなたがそれを出力したい場合や他の場所で使用したいのかどうかはわかりません。

+0

ありがとう、これは私が探していたものでした! – JFG

+0

素晴らしいですが、問題はありません。うれしく思っています! :) – Will

+1

1k x 1kの配列では、実際には '1の – JFG

0

thisをご覧ください。

あなたは正しい軌道に乗っている番号

+0

しかし、あなたは数を印刷せずにそれを使用することはできませんあなたは他の方法で同じことをしたい場合は、として三項演算子を使用することができます同じように。 – Will

+0

好奇心ではなく、記号だけを印刷し、印刷された文字列の長さを「切り取る」ことができるので、記号だけが印刷されますか? – JFG

4

あなたが言及した方法はこの目的のために有効です。あなたはこのようにこれを行うことができます

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

ありがとう、私はこの演算子を忘れていた。 – JFG

+0

私の喜び。受け入れられた通りに答えを忘れることを忘れないでください。 :) – Imran

0

#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; 
} 
関連する問題