2017-02-07 3 views
-5

私は自分自身でこれを理解しようとしていますし、できません。 教授がこれを求めています。 ユーザーはシーケンスの長さを定義します。 ユーザーは、negとposの両方の範囲の数値を入力します。 プログラム: 2つの最大番号を見つけ、降順で表示します。 2つの最小番号を見つけ、昇順に表示します。C++配列を使用しないユーザ定義の配列の整数

ソートまたは配列を使用できません。 私はアウトラインを持っていますが、私の頭は配列を使用したいだけです.....私は配列なしではこれが簡単ではありません。混乱している。私は初心者です。私はただ助けが必要です。助言?家庭教師?

+0

2つの最大要素と2つの要素ごとに1つの変数があります。次に、データを読み込んで比較し、値を適切に設定します。配列の必要は全くありません。 – NathanOliver

+2

私たちはあなたのためにあなたの宿題をするためにcheggしていないのでDownvoted。提案したアウトラインを再投稿し、目標を達成するために提案された変更を求めるようにしてください。 –

+0

4つの変数(または4つの 'int's:Dの配列)を定義し、その数が大きいほど毎回チェックします。 –

答えて

2

簡単に問題を解決してスタートし、あなたが解決されている実際の問題への解決策にそれを育てる:

  • は、ユーザによって入力された最大数を検索し、出力するプログラムを書きます。これは、 "高水準ウォーターマーク"を追跡している単一の変数で簡単に行うことができます
  • プログラムを変更して、最小の数も追跡します。別の変数を追加して、「低いウォーターマーク」を追跡することで、これを行うことができます。

上記の両方のタスクの課題は、高低ウォーターマークの初期値です。これは一般的なエラーの原因です。複数のQがあります&修正プログラムについて説明しています。楽しい部分について今

  • 以前に最大と考えられていた「降格」数で第二位の数を追跡するようにプログラムを修正するために二番目に大きいあなたは番号を見つけるたびに最大値を超えない値を見つけたときに2番目に大きい値を置き換えることによって、最大値を超えない値を見つけることができます。

これには、if文を書く必要があります。

  • 最後に、上記アルゴリズムの「鏡像」を適用して2番目に小さい番号を記録するようにプログラムを修正します。
+0

ありがとうございます。それを小さな問題に分解することが役に立ちます。そこから進んでいくうちの全体の一部を表示するための小さなシンプルなプログラムを作ることは考えていませんでした。アイデアありがとう!あまりにも多くのもの私の心に私はまっすぐ考えることができませんでした。再度、感謝します :) – learning

0

アルゴリズム(「シーケンスを格納することなく、シーケンスに2つの最大の数字を探す」)

(私はこの答えを復活することにしました。それから逃げるためにOPに役立つかもしれませんアレイフレーム)

Input: A sequence of values S. 
Output: Values Max and SecondMax. 

The consumed, current value of S is E 
1 : Set Max to E 
2 : Set SecondMax to E (Second value in S) 
3 : If Max < SecondMax -> Swap Max and SecondMax. 
4 : while (e:= E exists) 
4.1 : If (e > Max) SecondMax := Max, Max := e 
4.1.1 : Else If (e > SecondMax) SecondMax := e 

これは最小限まで自明に拡張されています。

関連する問題