2021/12/13) 6. 奇数


1.質問


<奇数>
:7個の自然数が与えられた場合、その中から奇数の自然数をすべて選択してその和を求め、
選択した奇数の最小値を検索するプログラムを作成してください.
1行目に奇数の和を出力し、2行目に奇数の最高値を出力します.

2.解決方法


2つの
  • (および、最高値)を出力する必要があるため、答えを配列として選択します.次に、和値を含む変数(sum)と最大値を含む変数(min)を宣言します.
  • for of文で並べ替え、if文で奇数だけ抽出し、そこで奇数と奇数の最高値を求める.
  • ! プラスの概念
    ->繰り返し!
  • for...of:アレイに関する重複文(アレイ内蔵関数でも実現可能)
  • for...in:オブジェクトに関する重複文書
  • 3.正解

            <script>
                function solution(arr){
                    let answer=[];
                    let sum=0,min=Number.MAX_SAFE_INTEGER;
                    for(let x of arr){
                        if(x%2===1){
                            sum+=x;
                            if(x<min) min=x;
                        }
                    }
                    answer.push(sum);
                    answer.push(min);     
                    return answer;
                }
                arr=[12, 77, 38, 41, 53, 92, 85];
                console.log(solution(arr));
            </script>

    4.私のコードとの比較と反省


    奇数のみを含む配列変数と,前の配列のすべてのパラメータを加算する変数と,最も切り上げた変数を含む3つの変数を宣言した.次にfor文を用いて,最初のfor文に奇数を見つけ,2番目のfor文に見つけた奇数の和の最大値を求めた.奇数の数値を見つけて、中で直接和の最高値を求めればいいのですが...そして一度に2つ出力できません(sum,min).答えが順番に並んで終わりました...
          <script>
              function solution(arr){
                  let sum=[], result=0, min = Number.MAX_SAFE_INTEGER;
                  for(let i = 0; i < arr.length; i ++){
                      if(arr[i] % 2 === 1) sum.push(arr[i]);
                  }
                  for ( let i = 0; i < sum.length; i++){
                      result += sum[i];
                      if(min > sum[i]) min = sum[i];
                  }
                  answer = min;
                  return answer;
              } 
              arr=[12, 77, 38, 41, 53, 92, 85];
              console.log(solution(arr));
          </script>