第5講 for文を理解しよう 
第6話 上限値を超えない等差数列の和
課題①
等差数列の和を上限値を超えない範囲で計算させるプログラムを考えてください。
解答例
import java.io.*;
class x{
  public static void main(String args[]) throws IOException {
    BufferedReader h= new BufferedReader(new InputStreamReader(System.in));
    int a,b,c;
    System.out.print ("初項=");
    a=Integer.parseInt(h.readLine());
    System.out.print ("上限値=");
    b=Integer.parseInt(h.readLine());
    System.out.print ("公差=");
    c=Integer.parseInt(h.readLine());
    System.out.print ("の場合の上限を超えない等差数列の和:");
    System.out.println(f(a,b,c));
  }
  public static int f(int x,int y,int z){
    int w=0,i;
    for(i=x;w+i+z<y;i+=z)w+=i;
    return(w);
  }
}
実行例
Java
解説
難しかったでしょう。ミソは、w+i+z<yです。
次に足す予定のi+zを加えてから条件判定をしないと、40と答えを出してしまいます。
理由は、2+5+8+11はまだ30を超えていないので、
w<yですと、for文はもう1回実行されて
2+5+8+11+14を計算して40と答えてしまうわけです。
ですから条件をw+i+z<yすなわち26+i+z<40すなわち26+11+3<30としなければならないわけです。

課題②
等差数列の積を上限値を超えない範囲で計算させるプログラムを考えてください。
解答例
import java.io.*;
class x{
  public static void main(String args[]) throws IOException {
    BufferedReader h= new BufferedReader(new InputStreamReader(System.in));
    int a,b,c;
    System.out.print ("初項=");
    a=Integer.parseInt(h.readLine());
    System.out.print ("上限値=");
    b=Integer.parseInt(h.readLine());
    System.out.print ("公差=");
    c=Integer.parseInt(h.readLine());
    System.out.print ("の場合の上限を超えない等差数列の積:");
    System.out.println(f(a,b,c));
  }
  public static int f(int x,int y,int z){
    int w=0,i;
    for(i=x;w*(i+z)<y;i+=z)w*=i;
    return(w);
  }
}
実行例
入門
解説
難しかったでしょう。ミソは、w*(i+z)<yです。
理由は、課題①の解説を参考に考えてください。


課題③
自然配列
基礎
解答例
class y{
  public static void main(String args[]){
    f();
  }
  public static void f(){
    int i;
    for(i=1;i<4;i++){
      System.out.print(i);
      System.out.print(" ");
      System.out.print(2*i);
      System.out.print(" ");
      System.out.print(3*i);
      System.out.print(" ");
      System.out.println();
    }
  }
}

この課題③は、今までの課題に比べ異質に感じたかもしれません。
実は、第7講の2次元ループにつなげるための課題です。



第5話へ 第6講第1話へ

戻る

VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第2部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第3部