2問教えてくださし


 2016-06-28 17:09:20  No: 143503  IP: [192.*.*.*]


1+2+3+・・・・+nの合計が1000を超えた時のnの値に、合計値を求めます。
while文を使用コード教えてください。

元金、年利率、年数を入力し、1年からその年数までの元利合計額を一覧表にして表示しなさい。元金をa、年利率をr(%)のn年後の元利合計額kは、k=a(1+r/100)のn乗です。
この2問教えてください。

編集 削除
k  2016-06-28 21:31:11  No: 143504  IP: [192.*.*.*]

明日の午前中までなんで見てくれた方でわかれば急ぎでお願いしまーす(>.<)

編集 削除
魔界の仮面弁士  2016-09-30 11:42:06  No: 143505  IP: [192.*.*.*]

回答期限も過ぎたようなので、あえて別案で回答してみます。


> 1+2+3+・・・・+nの合計が1000を超えた時のnの値に、合計値を求めます。 
n = 45 の時に合計値が 1035 になる、というのが答えです。
n = 44 の時の合計値は 990 ですので、これだと 1000 以下ですね。


1+2+3+…+n の合計値は、
  total = (n + 1) * (n / 2)
という数式で簡単に求まります。

n = 4 なら total = 10 ですし、
n = 5 なら total = 15 です。


そして上記を二次方程式として解くと、total = 1000 のときには
  n = 45.22415454762672201809533760790349622123129373125127…
となります。なので、n = 45 の時点で 1000 以上になることが分かります。


これを VB で処理すると、下記のように書けます。
ループ処理は一切不要なので、While はあえて使っていません。


Dim limit As Integer
Dim n1 As Double, n2 As Double
Dim total As Integer, n As Integer

limit = 1000


'VB6
n1 = Sqr(8 * limit + 1) / 2 + 0.5
n2 = Fix(n2)
n = IIf(n1 > n2, n2, n2 + 1)
total = (n + 1) * (n / 2)


'VB.NET
n1 = Math.Sqrt(8 * limit + 1) / 2 + 0.5
n2 = Math.Truncate(n2)
n = If(n1 > n2, n2, n2 + 1)
total = (n + 1) * (n / 2)



> 元利合計額を一覧表にして表示しなさい。
一覧表は「印刷」ではなく、「表示」で良い、と。


VB6 なら MSHFlexGrid
VB.NET なら DataGridView
に表示するのが良さそうですね。
あるいは ListView も使えそう。

Web アプリとかコンソールアプリとか WPF などという
可能性もありますが、元質問者の環境は不明なので。

編集 削除