2011-12-24 12 views
-1

ユーザは配列のサイズを取得し、関数 "MALLOC"を使ってメモリ割り当てを割り当て、ループなしで再帰で配列を入力します!!ループなしで再帰的に関数を入力するscanf配列

再帰関数を使用して "ループ"を作成する方法がわかりません。

私は喜んで助けてください願っています。

ありがとうございました。

+0

あなたが尋ねていることを理解することは本当に難しいですが、明確にしてください。 – cnicutar

+0

私は配列のユーザーサイズからの入力が必要で、この配列に割り当てられたメモリを作成します。そして、この配列にscanfを実行します。私はこの関数を書いていますが、これは機能しません。
'空隙getss(int配列[]、int型のサイズ)
{int型のカウンタ= 0。 \t if(size == 0) \t \t return; \t(カウンタ<サイズ) \t { \t \tのscanf( "%dの"、および配列[i]は、 \t \tカウンタ++; \t \t \t}もし \t getss(アレイ、サイズ-1); } ' – studeng1

答えて

1

再帰の良い使用ではありません - ループは、この場合、より「自然」である - しかし、アイデアは、このような関数のようになります。これは宿題のように思えるので、私があげる

void getInput(int howMany) 
{ 
    if (howMany == 0) 
    return; 
    // get user input 
    getInput(howMany-1); 
} 
+0

私はあなたに同意しますが、私の講師が必要です。しかし、私はmemorey割り当てを作成する必要があります、私は関数のポイントを送る必要はありません? – studeng1

1

宿題指向の答え - 擬似コードで。

define loop(array, index) 
    if index == 0 
     return array 
    array[index] = get input from user 
    loop (array, index-1) 

loop(array, array_size)と呼んでください。

これは、再帰をうまく利用していないMatの感想をエコーし​​たいと思います。

更新

あなたが入力を読み取るためにscanf(3)を使用したいので、私はそれを使用する方法の強力なヒントを与えるでしょう。上記の、私は書いた:

array[index] = get input from user 

をあなたは、次のscanf(3)呼び出して、この行を記述することができます。

scanf("%d", &array[index]); 

これはarray[index]場所に10進数の整数を格納します - &リターンのアドレス配列サブスクリプションを評価するのではなく、配列スロット。

+0

私は配列のユーザー値からscanf入力が必要です。私はループなしで入力をスキャンすることができます。 – studeng1

+0

+1 mこのOPへの努力は妥当なものです。 – cnicutar

関連する問題