Лекция 4
Постановка задачи
Порядок решения задачи
Взаимозаменяемость трех видов циклов
Взаимозаменяемость трех видов циклов
Работа с текстовыми файлами в с С++ (потоковый)
260.00K
Категория: ПрограммированиеПрограммирование

Задача про числовой ряд. Лекция 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();
}
English     Русский Правила