C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

級数の合計1+(1 + 3)+(1 + 3 + 5)+(1 + 3 + 5 + 7)+ ...... +(1 + 3 + 5 + 7 + ... + (2n-1))C++で


この問題では、数nが与えられます。私たちのタスクは、級数の合計を見つけるプログラムを作成することです 1 +(1 + 3)+(1 + 3 + 5)+(1 + 3 + 5 + 7)+……+(1 + 3 + 5 + 7 +…+(2n-1))。

問題を理解するために例を見てみましょう。

入力: n =5

出力: 55

したがって、質問によると、ユーザーが番号「n」を指定し、シリーズ 1 +(1 + 3)+(1 + 3 + 5)+(1 + 3 + 5 + 7)を追加する必要があるとします。 +……+(1 + 3 + 5 + 7 +…+(2n-1))。

まず、このシリーズの意味をよく理解しましょう。

n =1とすると、系列は1になります。

n =2とすると、級数は1+(1 + 3)になります。これは、最後の項2n-1の値が1を超える2 x 2、つまり3として計算できるためです。

シリーズは
nの値
2n-1
1
1
1
2
3
1+(1 + 3)
3
5
1+(1 + 3)+(1 + 3 + 5)
4
7
1+(1 + 3)+(1 + 3 + 5)+(1 + 3 + 5 + 7)

問題の解決策については、2つの方法で解決できます。 1つは数学的なもので、合計の式を取得できるため、ループは必要ありません。もう1つは、コードに2つのループを適用することです。

ループを使用した直接アプローチ

級数の項1+(1 + 3)+(1 + 3 + 5)+(1 + 3 + 5 + 7)+……+(1 + 3 + 5 +7+… +(2n-1))はシリーズそのものです。したがって、ネストされたループを使用します。外側のループは第2項を計算します。一方、内側のループは用語自体の計算に使用されます。

#include<stdio.h>

int calcSum(int n){
   int sum = 0;
   for (int i = 1; i <= n; i++) {
      // the first value of the term is always 1
      int value = 1;
      for (int j = 1; j <= i; j++) {
         sum += value;
         // next term
         value += 2;
      }
   }
   return sum;
}

int main(){
   int n = 35;
   printf("The sum of the series upto %d is %d ", n , calcSum(n));

}

出力

The sum of the series upto 35 is 14910

プログラムの動作:

  • ユーザーはnの値を入力します。たとえば、2。
  • 「sum」という名前の変数は、初期値を0として宣言されています
  • i =1の場合、条件i <=nの場合は真であるため、ループは機能します
    • 変数「ft」の値は1です。
    • jの最初の値は1です。jの値がiの値(1)に等しいため、条件は真です。したがって、jループは機能します。
    • ftの値が合計に追加されます。したがって、合計は1に等しい0+1になります。
    • ftの値が変更されて2増加するため、新しい値は1 + 2=3になります
    • jの値は1増加し、2になります。
    • しかし、j> iのように、insideforループの条件はfalseになります。したがって、jループは終了します。
  • これで、iの値が1増加して2になるため、i =2であり、条件はtrue i <=nであるため、ループに入ります
    • 変数「ft」の値は再び1として定義されます
    • jの値が1の場合、ループはj
    • ftの値が合計に追加されます。合計の値はすでに1です。したがって、合計の新しい値は1 + 1 =2
    • です。
    • ftの値が変更されて2増加するため、ftの新しい値は1 + 2=3になります。
    • jの値は1増加し、2になります。jはiに等しいため、forループ条件は真です。
    • ftの値が合計に追加されます。合計の値はすでに2です。したがって、合計の新しい値は2 + 3=5です
    • ftの値が変更されて2増加するため、ftの新しい値は3 + 2=5になります。
    • ループが存在します
  • これで、iの値が1増加して3になるため、i =3であり、条件はfalse i <=nであるため、ループを終了します。
  • メッセージと合計の値を画面に出力します

数学的解決策:

質問の数学的解決策を見つけてコードを書くことにより、コードを大幅に簡素化できます。

一般的な用語をTnとします。 シリーズの

先に進む前に、シリーズ1 + 3 + 5 + 7 + 9…..(2n-1)の合計がn 2、 であることを知っておく必要があります。 とシリーズ

1 2 +2 2 +3 2 +4 2 ….n 2 i 2 の合計があります =

コードの動作を説明するプログラム

#include<stdio.h>

int calcSum(int n){
   // required sum
   return (( (n) * (n + 1) * (2*n + 1 ) )/6 ) ;
}

int main(){
int n = 35;
   printf("The sum of the series upto %d is %d ", n , calcSum(n));

}

出力

The sum of the series upto 35 is 14910

上記のコードの動作:

たとえば、ユーザーがnの値を2と入力したとすると、2n-1の値は3になり、系列は1+(1 + 3)になります。

しかし、コードを通じて合計を理解して取得しましょう。

  • 関数sum()は値2で呼び出されます
  • この関数は値を5として計算し、それをメイン関数に返します。
  • 回答付きのメッセージが画面に印刷されます。

  1. 算術級数の合計のためのC++プログラム

    「a」(第1項)、「d」(共通の差)、「n」(文字列内の値の数)が与えられ、タスクは級数を生成し、それによってそれらの合計を計算することです。 算術級数とは 算術級数は、シリーズの最初の項が「a」で固定され、それらの間の一般的な違いが「d」である、共通の違いを持つ数列です。 -として表されます a、a + d、a + 2d、a + 3d 、。 。 。 例 Input-: a = 1.5, d = 0.5, n=10 Output-: sum of series A.P is : 37.5 Input : a = 2.5, d = 1.5, n = 20 Output : sum of s

  2. C ++のconstキーワードとは何ですか?

    const修飾子を使用して、変数を定数として宣言します。つまり、変数が初期化されると、値を変更することはできません。 constを使用すると、非常に大きなメリットがあります。たとえば、PIの値のような定数値がある場合、プログラムのどの部分もその値を変更したくないでしょう。したがって、それを定数として宣言する必要があります。 const修飾型で宣言されたオブジェクトは、コンパイラによって読み取り専用メモリに配置される場合があります。また、constオブジェクトのアドレスがプログラムに取り込まれない場合は、まったく格納されない場合があります。たとえば、 #include<iostream&