Консультация онлайн # 161190

Раздел: С / С++
Автор вопроса: Newnata89
Дата: 23.02.2009, 14:31 Консультация неактивна
Поступило ответов: 3
Программирования на C#
Даны натуральное n, действительное x. Вычислить sin x+ sin x^2+ sin x^3 +...+ sin x^n.
Не могу найти ошибку, помогите.

private void button1_Click(object sender, EventArgs e)
{
int n, i;
double s, x, cur;
double power, res;
x = Convert.ToDouble(textBox1.Text);
n = Convert.ToInt32(textBox2.Text);
s = 0;
res = x;
for (i = 2; i < n; i++)
{
res = res * x;
}
power = res;

for (i = 1; i < n; i++)
{
cur = Math.Asin(power(x, i));
}
s = s + cur;

label1.Text = Convert.ToString(s);
}
Последнее редактирование 23.02.2009, 14:43 Лысков Игорь Витальевич (Советник)
Вопрос перенесен

Ответ # 1, witek25 (Посетитель)

Здравствуйте, Newnata89!

Если power в строчке
cur = Math.Asin(power(x, i));
вырешивает х в i-той степени, то надо бы поставить s = s + cur; в тело for(;;), т.е. так:
for (i = 1; i <= n; i++)
{
cur = Math.Asin(power(x, i));
s = s + cur;
}
иначе вы после окончания for присвоили s последний элемент cur, который равняяется sin x^n;

Последнее редактирование 23.02.2009, 14:59 Лысков Игорь Витальевич (Советник)


witek25

Посетитель
23.02.2009, 14:51
Нет оценки ответа
Здравствуйте, Newnata89!
Посмотрите решение в приложении. Все значительно проще...

Приложение:


Лысков Игорь Витальевич

Советник
23.02.2009, 14:52
Нет оценки ответа

Ответ # 3, Person (Посетитель)

Здравствуйте, Newnata89!
В C# я не знаток, но фрагмент собственно вычисления должен выглядеть примерно так (код в приложении).
Вместо SIN и POWER подставьте вызовы функций вычисления синуса и степени соответственно из вашей библиотеки.

Приложение:


Person

Посетитель
23.02.2009, 19:45
Нет оценки ответа

Мини-форум консультации # 161190

неизвестный

177466

= общий =    23.02.2009, 14:58
Лысков Игорь Витальевич, но он тогда не правильно ведь считает?
Лысков Игорь Витальевич

Советник

ID: 7438

177468

= общий =    23.02.2009, 15:02
Что именно неправильно? В отладчике смотрели?
=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
неизвестный

177471

= общий =    23.02.2009, 15:11
Лысков Игорь Витальевич, спасибо большое. Я нашла ошибку в своих подсчетах.
Denisss

177509

= общий =    23.02.2009, 18:53
А почему Math.Asin??? Почему-то я наивно думал, что синус в C# - это Math.Sin...

PS
Согласитесь, что
res *= x;

вместо
res = res * x;

и аналогично, что
s += Math.Asin(res);

вместо
s = s + Math.Asin(res);

выглядят красивее smile

PPS
... а так может даже еще красивее (хотя, "как посмотреть..."):
s += Math.Asin(res *= x);
Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.