Предмет: Информатика,
автор: alivija2212
С++ помогите сделать.
Заранее спасибо
Приложения:
Ответы
Автор ответа:
0
можно так: сумма всех единиц от 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;}
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;}
Автор ответа:
0
да что ж он код-то "съедает"... ((
Автор ответа:
0
https://paste.ee/p/BJtao
Автор ответа:
0
1е задание
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
float s = 0.f;
unsigned n;
cin >> n;
if (n < 0) {
cout << "Error!" << endl;
} else {
for (int i = 1; i <= n; ++i) {
s += 1 + (1 / pow(i, 2));
}
cout << s << endl;
}
return 0;
}
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
float s = 0.f;
unsigned n;
cin >> n;
if (n < 0) {
cout << "Error!" << endl;
} else {
for (int i = 1; i <= n; ++i) {
s += 1 + (1 / pow(i, 2));
}
cout << s << endl;
}
return 0;
}
Автор ответа:
0
https://ideone.com/ciWmpX
Похожие вопросы
Предмет: Французский язык,
автор: romaigraetv
Предмет: История,
автор: aliyaaquarius11
Предмет: Геометрия,
автор: alexeyka20
Предмет: Математика,
автор: Shefrok
Предмет: Математика,
автор: amb1978