2016-12-14 12 views
1

私は狂っているのであなたの助けを求める。固定されたしきい値よりも小さい数値を抽出しますか?

int(N、挿入された文字数)と小文字の配列(seqchar)で構成されるlista(typedefinedTechoLの)というメインの構造体を取ります。ユーザーが挿入したしきい値を超えて、最も低い数値を印刷する手順が必要です。 これは、なぜこれが動作しないのか知りたいのですが、最後のprintfがこの出力を出してから何か間違っているように感じるので、これを行う別の方法はありません。 ( 'd')(ASCII '100')の文字は「ここには何もありません」(ASCII「0」)で、理由はわかりません。

ご協力いただきありがとうございます。

void Minimum(TipoL lista) 
{ 
int i,j; 
char k,s,THRESHOLD,ArrTHRESHOLD[lista.N]; 


    scanf("%c", &THRESHOLD); 

    for(i=0; i<lista.N; i++) 
    { 
     if(lista.seqchar[i]>THRESHOLD) 
     { 
     ArrTHRESHOLD[i]=lista.seqchar[i]; 
     } 
    } 

    s=ArrTHRESHOLD[0]; 
    for(j=1; j<lista.N; j++) 
    { 
     if(ArrTHRESHOLD[j]<s) 
     { 
     s=ArrTHRESHOLD[j]; 
     } 
    } 
printf("\nThe smallest character over the threshold '%c' (ASCII '%d') is: '%c'\n(ASCII '%d')\n", THRESHOLD, THRESHOLD, s, s); 
} 

}

+0

「Soglia」と「ArrSoglia」とは何ですか? –

+0

'TipoL'(定義)とは何ですか?なぜ値を入力した後に 'TRESHOLD'を使わなかったのですか? –

+0

ああ申し訳ありませんが、私はすべてのイタリア語の宣言を英語で置き換えるのを忘れました。 TipoLは、使用される構造体のグローバルに宣言された名前です。 –

答えて

1

問題は、次の操作を実行したときにということである。

if(lista.seqchar[i]>THRESHOLD) 
{ 
    ArrTHRESHOLD[i]=lista.seqchar[i]; 
} 

あなたがelseケースが欠落しているので、あなたはArrTHRESHOLD[i]初期化されていないままにしておきます。代わりに、それは次の段階で選択されるのを避けるために、いくつかのmaximum valueに設定する必要があります

else 
{ 
    ArrTHRESHOLD[i]= 127; // or MAX_CHAR; 
} 

がこの方法よりも優れていますが、あなたの方法を動作させるために助けを求めているので、私はこれが役に立てば幸い、確かに。

+0

私は見る!今は本当にありがとう、それは動作し、私は何を間違っていたか理解しています。非常に高く評価!! –

+0

@RuggeroLatellaあなたは大歓迎です。あなたの主な目的は、何が間違っているのかを理解し、自分の仕事を続けることでした。 :) –

0

私はむしろ、この

ArrTHRESHOLDを行うための別の方法を持つよりも、このdoesntの作業は自動継続なし初期化子を持っているので、そのすべての要素が、最初は不確定である理由を知りたいのです。入力配列をスキャンし、しきい値を超える要素をにコピーします。対応する要素ArrTHRESHOLDです。他の要素は不定です。
indeterminate要素を含むArrTHRESHOLDをスキャンし、最小値を特定しようとします。
不確定値を使用すると、未定義の動作が発生します。

今までの要素数をArrTHRESHOLDにコピーし、ギャップのない要素の初期サブセットを埋めるためにこれを使用することが考えられます。その後、今のように要素をスキャンすることができます。

ArrTHRESHOLDがなくてもよいでしょう:あなたがパスで必要なものをすべてlista.seqcharで行うことができるので、あなたはそれを必要としません。

+0

あまりにもあなたの助けのためにverymuchありがとう!今私はそれを行う方法のより良い、よりクリーンなアイデアを得ました。あなたの方法を試してみてください! –

関連する問題