Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб№3.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
162.82 Кб
Скачать

Void main()

{

double x=1.3,s=0;

int i,n=10;

for(i=1;i<=n;i++)

{s=s+(i*i+x)/log(2+i*i);

}

cout<<"summa="<<s<<"\n";

}

Пример. Вычислить значение заданной функции. Осуществить вывод значений аргумента и результатов вычислений значений функции в заданном диапазоне с заданным шагом.

#include<iostream.h>

#include<math.h>

Void main()

{

Double y;

for(double x=-2*3.14;x<=2*3.14;x=x+3.14/4.0)

{

y=sin(x);

cout<<"pri x="<<x<<" y="<<y<<"\n";

}

}

Пример. Для х, изменяющегося от a до b с шагом (b-a)/k, где k=10, вычислить функцию f(х), используя её разложение в степенной ряд в двух случаях:

  1. для заданного n;

  2. для заданной точности ( =0,0001).

Для сравнения найти точное значение функции.

Функция

Диапазон значений

аргумента

Значение n

Степенной ряд

0,1≤х≤1

10



#include<iostream.h>

#include<math.h>

Void main()

{ double x,y,h,x1,x2,sn,p,u,uk,se,e=0.0001;

int k=10,n;

x1=0.1;

x2=1;

x=x1;

h=(x2-x1)/k;

do

{

sn=x;n=1;p=1;

do

{p=p*(n+1)*(n+2);

sn=sn+(pow(-1,n)*((pow(x,2*n+1))/p));

n++;

}

while(n<=10);

se=0;n=0;uk=x;p=1;

do

{

u=uk;

se=se+u;

n++;

p=p*(n+1)*(n+2);

uk=(pow(-1,n)*((pow(x,2*n+1))/p));

}

while(fabs(uk-u)>=e);

y=sin(x);

cout<<"\nx="<<x<<" "<<"y="<<y<<" "<<"sn="<<sn<<" "<<"se="<<se;

x=x+h;

}

while(x<=x2); }

Алгоритм решения задачи сводится к трём циклам, причём два из них вложены в третий. Внутренние циклы суммируют слагаемые при фиксированном параметре х, один - арифметический для заданного n, другой – итерационный для заданной точности .

Пример. Вычислить значение заданной функции. Осуществить ввод значений вводимых исходных данных и результаты вычислений значений функции в заданном диапазоне с заданным шагом, сопровождая ввод наименованиями переменных.

Функция

Условие

Исходные данные

Диапазон и шаг

изменения

аргумента

# include<iostream.h>

# include<math.h>

Void main()

{double y,x,a,t;

cout<<"Введите a,t \n";

cin>>a>>t;

x=0.2;

while (x<=2)

{

if (x<a)

y=(log(x)*log(x)*log(x)+x*x)/sqrt(x+t);

else

if (x==a)

y=sqrt(x+t)+1/x;

else y=cos(x)+t*sin(x)*sin(x);

cout<<"y="<<y<<" \n";

cout<<"x="<<x<<" \n";

x=x+0.2;

}

}

Пример. Вычислить значение функции sin x с погрешностью =10-3 , используя её разложение в степенной ряд, и определить число требуемых итераций для вычисления функции при заданном х.

# include<iostream.h>

# include<math.h>

Void main()

{double x,s,u;

int n;

cout<<"Vvedite x \n";

cin>>x;

n=0;

u=x;

s=0;

do {s=s+u;

u*=((-1*x*x)*(2*n+1))/(2*n+3);

n++;

}

while (fabs(u)>=0.001);

cout<<"x="<<s;

}s=0;

do {s=s+u;

u*=((-1*x*x)*(2*n+1))/2*n+3;

n++;

}

while (fabs(u)>=0.001);

cout<<"x="<<u;

}

Break и continue Чтобы прервать нормальное выполнение цикла, программист может использовать две специальные инструкции:

break; и continue;

Инструкция break кроме использования в циклах может применяться в инструкции switch. Она вызывает выход из тела цикла или инструкции switch.

Следующий пример иллюстрирует использование инструкции break. Производится проверка на отрицательное значение, и если условие выполняется (значение отрицательно), инструкция break вызывает выход из цикла for. Управление программой перескакивает к инструкции, следующей сразу за циклом.

for (i = 0; i<10; ++i)

{ cin >> x;

if (x<0.0) {

cout << "That’s all!" << endl;

break; //выход из цикла,

//если значение отрицательно

}

cout << sqrt(x) << endl;

}

//break прыгает сюда

Это типичное применение инструкции break. Когда выполняется специальное условие, производится соответствующее действие и выход из цикла.

Инструкция continue вызывает остановку текущей итерации цикла и немедленный переход к началу очередной итерации. Следующий фрагмент обрабатывает все символы, кроме цифр. В случае ввода с клавиатуры любого символа - не цифры происходит обработка символа, а в случае ввода цифры обработка будет проигнорирована.

for (i = 0; i < MAX; ++i) {

cin >> c ;

if (isdigit(c)) continue;

..... //обработка других символов

//continue прыгает сюда

}

В этом фрагменте программы вы встретились с нововведением – функцией isdigit, которая равна true, если символ в скобках является цифрой, и false, если символ в скобках не является цифрой. Для использования этой функции необходимо подключить библиотеку ctype.h.

Когда выполняется инструкция continue, управление перепрыгивает в точку перед закрывающей фигурной скобкой, что приводит к выполнению цикла с головы. Обратите внимание, что continue завершает текущую итерацию, в то время как инструкция break заканчивает цикл.

Инструкция break может встречаться только внутри тела инструкций for, while, do или switch. Инструкция continue может использоваться только внутри тела инструкций for, while или do.

Задачи для самостоятельного решения:

Задание №1 Решить задачи:

  1. Найти сумму всех целых чисел в диапазоне, указанном пользователе.

  2. Разработайте программу, которая выводит на экран таблицу умножения.

  3. Дано натуральное число n. Написать программу, которая вычисляет факториал неотрицательных целых чисел n (т.е. число целое и больше 0). Формула вычисления факториала приведена ниже.

n! = 1*2*3*....*n,

0! = 1 (по определению факториала).

Задание №2 Согласно своего варианта решить задачу:

1. Составьте программу, реализующую алгоритм вычисления следующей суммы ряда:

.

2. Вывести на экран все трехзначные целые числа, которые делятся на последнюю из своих цифр. Числа, содержащие цифру 0 не учитывать.

3. Определить количество високосных годов между двумя введенными годами.

4. Создать программу, которая выводит на экран простые числа в диапазоне от 2 до 1000. (Число называется простым, если оно делится только на 1 и на само себя без остатка; причем числа 1 и 2 простыми не считаются).

5. Дано произвольное целое число n. Написать программу, которая разбивает число n на цифры и выводит их на экран; подсчитывает сколько цифр в числе n; находит сумму цифр числа n; меняет порядок цифр числа n на обратный.

6. Составить программу, которая вычисляет и выводит значения данной функции в заданном диапазоне и с заданным шагом изменения аргумента.

Функция

Диапазон и шаг изменения аргумента



7. Составить программу для вычисления:

8. Составить программу для вычисления:

.

9. Составить программу для вычисления :

(n раз).

  1. Составьте программу, реализующую алгоритм вычисления суммы данного ряда.

Записать результат работы программы при заданном значении аргумента.

11. Вычислить значение заданной функции. Осуществить вывод значений аргумента и результатов вычислений значений функции в заданном диапазоне с заданным шагом.

Функция

Диапазон и шаг изменения аргумента



12. Составить программу для вычисления суммы бесконечного ряда с погрешностью ε=10-3

.

Процесс суммирования прекращается, как только выполнится неравенство ε, где -текущий член ряда суммирования, а - предыдущий член ряда.

13.Проверить, является ли введённое целое положительное число совершенным. Совершенным называется число, которое равно сумме своих делителей, не включая самого числа.