Anton Horgan Ответов: 2

Почему мой цикл for отображает ответ в неправильном порядке?


Мой цикл вычисляет ответы правильно, но отображает их в неправильном порядке, почему это должно произойти?

Что я уже пробовал:

Sub SumOfYear()
        Dim SOY As Decimal
        Dim DeprAmount As Decimal
        Dim DepBase As Decimal

        DepBase = Cost2 - Salvage
        SOY = (Life * (Life + 1) / 2) ' Calculate the 15

        For yr As Integer = 1 To Life

            DeprAmount = (yr / SOY) * DepBase

            lstYears.Items.Add(yr & "                       " & DeprAmount)
        Next

    End Sub
The answers should be:
1: 1633.33
2: 1306.67
3: 980.00
4: 653.33
5: 326.67

Instead I get:
1: 326.67
2: 653.33
3: 980.00
4: 1306.67
5: 1633.33

2 Ответов

Рейтинг:
2

Patrice T

Цитата:
Мой цикл вычисляет ответы правильно, но отображает их в неправильном порядке, почему это должно произойти?

Вы должны обращать внимание на детали. Компьютерное программирование - это искусство деталей !
Ты хочешь
1: 1633.33 => 5 * 326.67
2: 1306.67 => 4 * 326.67
3:  980.00 => 3 * 326.67
4:  653.33 => 2 * 326.67
5:  326.67 => 1 * 326.67

вы получаете
1:  326.67 => 1 * 326.67
2:  653.33 => 2 * 326.67
3:  980.00 => 3 * 326.67
4: 1306.67 => 4 * 326.67
5: 1633.33 => 5 * 326.67

Должно быть довольно легко понять, что вы сделали не так, и вывести решение.


0x01AA

+5, гораздо лучше, чем "использовать отладчик" :-)

Patrice T

Спасибо.
Решение только приводит к этой конкретной проблеме.
С другой стороны, отладчик-это инструмент общего назначения, который заставляет вас думать о том, что делает ваш код.

0x01AA

"Решение только дает повод к этой конкретной проблеме."
Я думаю, что вы очень хорошо показываете, как анализировать проблему, и я думаю, что это очень поможет OP добиться прогресса в этой области, опять же *thumbup*

"Отладчик"
Согласен, это очень важно.

Patrice T

Спасибо еще раз :)

Рейтинг:
1

#realJSOP

Я мог бы сказать, потому что вы используете basic, но это можно считать пассивно агрессивным, так что попробуйте вот это:

for yr as integer = Life to 1 step -1


Patrice T

Я боюсь, что вашего решения недостаточно, потому что оно также меняет количество строк.