Регистрация
Войти
Стать экспертом Правила
Информатика

С++ Пожалуйста посчитайте сделать. Заранее спасибо

ОТВЕТЫ
можно так: сумма всех единиц от 1 до n равна n, поэтому в цикле её прибавлять не будем, просто в конце добавим n. В цикле будем только считать дроби и всё складывать. цикл делаем из целочисленных переменных.

double sum1 (int n)  {  int i;
  double tmp, acc = 0.0;
  for (i = 1; i <= n; i++)  {
    tmp = (double)i; // преобразование типов    tmp *= tmp; // возведение в квадрат    acc += 1.0/tmp;  // добавляем дробь к аккумулятору  }  return acc + (double)n;  // в конце добавляем сумму единиц}
Второй способ: можно дроби привести к общему знаменателю:



И уже такую штуку вычислять в цикле (в квадрат возводить, само собой, один раз на одну итерацию цикла). Возможно такой метод даст бОльшую точность при больших n, когда начнём приближаться к пределу по разрядной сетке, но тут на 100% не поручусь.

double sum2 (int n) {  int i;  double tmp, acc = 0.0;  for (i = 1; i <= n; i++)  {    tmp = (double)i;  // преобразование типов    tmp *= tmp;  // возведение в квадрат    acc += (tmp+1.0)/tmp;  // вычисление выражения и прибавление к аккумулятору  }  return acc;}


144
Контакты
Реклама на сайте
Спрошу
О проекте
Новым пользователям
Новым экспертам