2016-10-06 3 views
1

私はユーザーからの入力として5と6と言う2つの整数を取ろうとしており、それを複素数、つまり文字配列に5 + i6として格納する必要があります。条件は、私は文字列とccomplexライブラリを使用することはできません。std :: stringやSTLを使わずに、C++で文字配列に複素数を格納する方法は?

私はこのような何かを見ていないのようにそれを印刷して見ているわけではない:

char x= 5+'/0'; 
char y= 6+'/0'; 
cout<< x << " i"<<y; 

むしろこれに相当すると何か:あなたは、文字列を使用できない場合

char x[10]= "5 +i6"; 
+0

独自のクラスを作成して使用できますか? –

+0

はい私はそれを行うことができます。 –

+0

次に、値をメンバーデータとして格納し、その値から配列を作成するクラスを作成できます。または単に整数を読み込んで、配列を作成します。 –

答えて

0

std :: stringは使用できません。したがって、問題はなぜですか、問題を設定した人はどのように文字列データを渡す必要がありますか? std :: stringsを許可しないのはまったく合理的ですが、独自のクラスを持っていますか、呼び出し側が提供する固定バッファでC文字列を使用するのですか、malloc()で割り当てられたC文字列を渡しますか?他にも可能な選択肢があります。

独自の文字列クラスがある場合は、表示せずに答えられません。呼び出し元によって提供されるCバッファを埋めるために

/* return 0 on success, -1 if buffer too small */ 
int toString(char *buff, int N, int real, int imaginary) 
{ 
    int sz = snprintf(buff, N, "%d + %di", real, iamginary); 
    if(sz > N-1) 
    return -1; 
    return 0; 
} 

mallocで割り当てられた文字列を渡すこと。

/* return a string allocated with malloc */ 
char *toString(int real, int imaginary) 
{ 
    int sz; 
    char *answer = 0; 
    const char *fmt = "%d + %di"; 

    sz = snprintf(0, 0, fmt, real, imaginary); 
    answer = malloc(sz + 1); 
    if(answer) 
    snprintf("answer, sz+1, fmt, real, imaginary); 

    return answer; 
} 
+0

詳細な説明をありがとう! –

3

、あなたは私が推測するstd :: stringstreamを使用することはできません。したがって、snprintf(buf, sizeof buf, "%d + i%d", 5, 6)にフォールバックします。

+0

ありがとう!このようなことが分かったらかなりシンプルです –

関連する問題