リンクされたリスト内の数字を受け取り、最も小さい番号と最大の番号を判別する関数を作成しました。私はそれぞれの番号を取ってそれを次のものと比較するはずのwhileループを作成しました。 'newNumber'は現在の番号で、 'next'はリストの次の番号でなければなりません。現在の番号と次の番号を呼び出す方法を理解できない。私のwhileループもまた無限です。なぜなら、私は決定で再び数値を参照しているからです。'NumberSize'関数のバイナリに無効なオペランドがあります
double NumberSize(NewNumber *start){
NewNumber *determine = start;
double SecondNumber =0;
double FirstNumber = 0;
while(determine != NULL){
FirstNumber = determine->newNum;
SecondNumber = determine->next;
if(FirstNumber < SecondNumber){
printf("The biggest number is:\n", SecondNumber);
}else{
printf("The smallest number is:\n", FirstNumber);
}
}
「決定するかどうか」とはどういう意味ですか? 'decide'は' double'、 'decide'はポインタです。それらを比較することはどういう意味ですか? 'while(determine)'を実行してから 'decide'の値を決して変更しないので、ループは無限になります。したがって、ループ条件は決して偽になりません。最大値と最小値を計算したいと思われるが、関数の開始時に 'smallNumber'と' bigNumber'をゼロに設定してから、それらを決して再び変更しないでください。あなたはちょうど推測しているようです。このようにしてプログラミングに成功することはできません。 –
@ericericノードを印刷する方法、平均を計算する方法、またはこの場合、最大/最小のエントリを探す方法は常に同じです。リストを通って何かを実行します。つまり、上記のすべての部分でその部分を再利用できます。 – deamentiaemundi
@deamentiaemundi私はwhileループをもはや無限にする方法について考えています。私は2つの変数が必要です.1つは最大の数値を格納し、もう1つは最小の数値を格納することです。私はまた、作成する必要がありますし、if文はリストの最初のものと次のものを比較しますか? –