Similar presentations:
Задача про числовой ряд. Лекция 4 по алгоритмизации и программированию
1. Лекция 4
2. Постановка задачи
• Числовым рядом называется бесконечнаясумма S некоторой последовательности.
3.
• Найти сумму первых N слагаемых• Найти сумму первых слагаемых,
больших заданной величины (найти
сумму с заданной точностью)
Замечание. Вычисления организовать
оптимально за минимальное число
операций умножения и деления.
4.
5.
6. Порядок решения задачи
• Выписать формулу общего слагаемого• Определить к какой группе относится
сумма
• Написать программу
7.
1 группа (1): каждое слагаемое вычисляется самостоятельно через1
порядковый номер k: a k .
k
2 группа (3, 4): каждое последующее слагаемое вычисляется через
предыдущее (степень какого-либо числа или выражения и факториалы):
xk
x0
x1
x k 1
.
ak ; a0 1; a1 x; ak 1
k!
0!
1!
(k 1)!
Для определения сумм второй группы для получения следующего
слагаемого выписываются рекуррентные соотношения:
8.
9.
3 группа (2, 5, 6): слагаемое представляется в виде произведения двухсомножителей. Один из сомножителей вычисляется самостоятельно, а второй –
через аналогичный сомножитель предыдущего слагаемого:
1
ak=bk ck; с k – самостоятельное выражение; bk – вычисляется через
k
рекуррентное соотношение.
1
(2): a k ( 1) ( k 1)
k
k
x
1
(5): a k x k
k
k
k
x
1
(6): a k ( 1) k 1 ( 1) k 1 x k
k
k
Решение:
k
x2 x3
x
(4): S 1 x .. . ( 1) k 2 ...
2! 3!
k!
ak=–ak-1 x/k; k=1, 2,...
a0=1
1 1 1
1
(2): S 1 ...( 1) k 1 ...
2 3 4
k
10.
11.
12.
#include <iostream>#include <iomanip>
using namespace std;
void main()
{
int i,n;
double x,a,s,b;
cin >>x>>n;
s=1;
a=1;
for (i=1;i<n;i++)
{
a=-a*x*x/(2*i-1)/2/i;
s=s+a;
}
cout <<setprecision(5)<<fixed<<s<<endl;
}
13.
#include <iostream>#include <iomanip>
using namespace std;
void main()
{
int i,n;
double x,a,s,b;
cin >>x>>n;
s=1;
a=1;
for (i=1;i<n;i++)
{
a=-a*x*x/((2*i-1)*2*i);
s=s+a;
}
cout <<setprecision(5)<<fixed<<s<<endl;
}
14.
#include <iostream>#include <iomanip>
using namespace std;
void main()
{
int i,n;
double x,a,s,b;
cin >>x>>n;
s=1; a=1;
for (i=1;i<n;i++)
{
b=2*I;
a=-a*x*x/((b-1)*b);
s=s+a;
}
cout <<setprecision(5)<<fixed<<s<<endl;
}
15.
#include <iostream>#include <iomanip>
using namespace std;
void main()
{
int i,n;
double x,a,s,b;
cin >>x>>n;
s=1; a=1; b=0;
for (i=1;i<n;i++)
{
b+=2;
a=-a*x*x/((b-1)*b);
s=s+a;
}
cout <<setprecision(5)<<fixed<<s<<endl;
}
16.
#include <iostream>#include <iomanip>
#include <math.h>
using namespace std;
void main()
{
int i,n;
double x,a,s,b, eps;
cin >>x>>eps;
s=0; a=1; i=1;
while (fabs(a)>eps)
{
s+=a;
i++
b=2*I;
a=-a*x*x/((b-1)*b);
}
cout <<setprecision(5)<<fixed<<s<<endl;
}
17.
#include <iostream>#include <iomanip>
#include <math.h>
using namespace std;
void main()
{
int i,n;
double x,a,s,b, eps;
cin >>x>>eps;
s=0; a=1; i=1;
for (i=2;fabs(a)>eps;i++)
{
s+=a;
b=2*I;
a=-a*x*x/((b-1)*b);
}
cout <<setprecision(5)<<fixed<<s<<endl;
}
18.
19. Взаимозаменяемость трех видов циклов
20. Взаимозаменяемость трех видов циклов
21.
• Текстовыми называются файлы,состоящие из любых символов.
• Они организуются по строкам, каждая
из которых заканчивается символом
«конец строки».
• Конец самого файла обозначается
символом «конец файла».
• При записи информации в текстовый
файл все данные преобразуются к
символьному типу и хранятся в
символьном виде.
• Текстовый файл можно просмотреть с
помощью любого текстового редактора
22. Работа с текстовыми файлами в с С++ (потоковый)
• В программах при работе с текстовымифайлами необходимо подключать
библиотеки iostream и fstream.
#include <iostream>
#include <fstream>
using namespace std;
23.
Для того чтобы записывать данные в
текстовый файл, необходимо:
1) описать переменную типа ofstream.
ofstream F;
2) открыть файл с помощью функции open.
F.open(«file», mode);
F — переменная, описанная как ofstream,
file — полное имя файла на диске,
mode — режим работы с открываемым
файлом.
3) вывести информацию в файл.
F<<a;
4) обязательно закрыть файл.
F.close();
24.
Для считывания данных из текстовогофайла, необходимо:
1) описать переменную типа ifstream.
2) открыть файл с помощью функции
open.
3) считать информацию из файла, при
считывании каждой порции данных
необходимо проверять, достигнут ли
конец файла.
4) закрыть файл.
25.
• ios::in — открыть файл в режиме чтенияданных; режим является режимом по
умолчанию для потоков ifstream;
• ios::out — открыть файл в режиме записи
данных (при этом информация о
существующем файле уничтожается); режим
является режимом по умолчанию для потоков
ofstream;
• ios::app — открыть файл в режиме записи
данных в конец файла;
• ios::trunc — очистить файл, это же
происходит в режиме ios::out;
• ios::nocreate — не выполнять операцию
открытия файла, если он не существует;
• ios::noreplace — не открывать
существующий файл.
26.
#include <iostream>#include <fstream>
using namespace std;
void main()
{
int a,b;
ofstream f;
f.open("a.txt",ios::out);
cin >>a>>b;
f<<a<<b;
f.close();
}
27.
#include <iostream>#include <fstream>
using namespace std;
void main()
{
int a,b;
ifstream f;
f.open("a.txt",ios::in);
f >>a>>b;
cout<<a<<b;
f.close();
}
28.
#include <iostream>#include <fstream>
using namespace std;
void main()
{
int a,b=0;
ifstream f;
f.open("a.txt",ios::in);
while (!f.eof())
{
f >>a;
if (a<0) b++;
}
cout<<b;
f.close();
}