Скриншот результатов выполнения программы
Лабораторная работа №5
Суммирование рядов
Цель лабораторной работы: изучение концепций и освоение технологии процедурного программирования, приобретение навыков программирования на языке C/C++ циклических вычислений при решении задач суммирования рядов.
Задание на программирование: используя технологию процедурного программирования разработать программу вычисления суммы ряда с заданной точностью в заданном интервале допустимых значений аргумента.
Программа должна формировать таблицу, содержащую значения аргумента ряда, суммы ряда, количество слагаемых и контрольные значения суммы, полученные с помощью стандартных функций библиотеки.
Порядок выполнения работы:
1) Получить у преподавателя индивидуальное задание. Выполнить постановку задачи: сформулировать условие, определить входные данные и их ограничения, определить вид выходной таблицы значений.
2) Разработать математическую модель:
- вывести рекуррентную формулу для расчета очередного слагаемого;
- описать начальные установки номера слагаемого, слагаемого, суммы;
- описать процесс накопления суммы.
3) Построить схему алгоритма. Обосновать выбор циклических управляющих структур.
4) Составить программу на языке C/C++.
5) Входные данныевводить с клавиатуры по запросу.
6) Выходные данные выводить на экран в форме таблицы с графами:
|
|
аргумент, сумма, количество слагаемых, контрольное значение суммы.
7) Использовать форматированный ввод/вывод в стиле языка C.
8) Проверить и продемонстрировать преподавателю работу программы, при этом значение суммы должно совпадать с соответствующим контрольным значением (с заданной точностью). Выходная таблица должна содержать от 5 до 10 строк.
9) Оформить отчет о лабораторной работе в составе: постановка задачи, математическая модель, схема алгоритма решения, текст программы, контрольные примеры.
Варианты индивидуальных заданий
1.
arctg(x) = , |x| ≤ 1.
2.
arctg(x) = , |x| > 1.
3.
arcth(x) = , |x| < 1.
4.
arcth(x) = , |x| > 1.
5.
ln(x) = , 0 < x ≤ 2.
6.
ln(1+x) = , -1 < x ≤ 1.
7.
ln(1-x) = , |x| < 1.
8.
, |x| < 1.
9.
, |x| > 1.
10.
ex(1+x) = , |x| < 2.4.
11.
, |x| < .
12.
ln(x) = , x > 0.
13.
ln(x) = , x > 0.5.
14.
sin(x) = , |x| < ¥.
15.
16.
sh(x) = , |x| < .
17.
ch(x) = , |x| < .
18.
, x < 1.
19.
, x < 1.
20.
arcctg(x) = , |x| ≤ 1.
21.
arctg(x) = , x < -1.
22.
arcctg(x) = , |x| > 1.
23.
arcsin(x) = x + , |x| < 1.
24.
, |x| < 1.
25.
arcsh(x) = x + , |x| < 1.
26.
arcch(x) = ln (2x)- , x > 1.
|
|
27.
, x < 1.
28.
, x < 1.
Проверочные формулы
Пример программы
//Вычислить a^x=e^(x*ln(a))= 1+x*ln(a)/1!+(x*ln(a))^2/2!+...
//Результаты представить в виде таблицы:
//аргумент, сумма, количество слагаемых, контрольное значение.
#include <stdio.h>
#include <math.h>
#include <locale.h>
float riad(float, float, float, int&);
int main()
{int vid, n, i ;
float a, x, xn, xk, h;
float eps, rez;
setlocale(LC_ALL,"Russian") ;
for(;;)
{
//Ввод исходных данных
printf("\n Вид действия:\n");
printf(" 1 - получение таблицы значений\n");
printf(" 2 - завершение программы\n");
printf(" Выберите вид действия ->");
scanf("%d",&vid);
if (vid == 1)
{
//Ввод исходных данных
printf("\n Введите значение основания ") ;
scanf("%f", &a) ;
printf(" Введите начальное значение степени ");
scanf("%f", &xn);
printf(" Введите конечное значение степени ");
scanf("%f", &xk);
if (xk <= xn)
{printf("\n Ошибка! Значение xk д.б. > xn");
return 1;
}
printf(" Введите шаг изменения степени ");
scanf("%f", &h);
if (h <= 0)
{printf("\n Ошибка! Значение д.б. >0");
return 1;
}
printf(" Введите точность вычисления ");
scanf("%f", &eps);
if ((eps <= 0) || (eps > 0.1))
|
|
{printf("\n Ошибка! Значение д.б. >0 и <=0.1");
return 1 ;
}
//Вывод заголовка
printf("\nТаблица значений %4.1f в степени x:\n", a) ;
for(i = 0 ; i < 50 ; i++) printf("-") ;
printf("\n|Степень | Сумма |Кол.слаг.|Контрольное значение|\n") ;
for(i = 0 ; i < 50 ; i++) printf("-") ;
x = xn ;
do{n = 0 ;
rez = riad(x, a, eps, n) ;
printf("\n|%6.2f |%8.4f|%6i |%14.4f |\n", x, rez, n, exp(x * log(a))) ;
for(i = 0 ; i < 50 ; i++) printf("-") ;
x += h ;
}while(x <= xk) ;
}
else break ;
}
return 0 ;
}
//Вычисление суммы ряда
float riad(float x, float a , float eps, int& n)
{float rez = 0 ;
float pr = 1 ;
n = 0 ;
while (fabs(pr) > eps)
{rez += pr ;
n++ ;
pr *= x * log(a) /n ;
}
return rez ;
}
Лабораторная работа №6
Перегрузка функций
Цель лабораторной работы: изучение концепции подпрограмм и способов передачи аргументов в функции, освоение методов процедурного программирования на языке C++ при решении типовых вычислительных задач.
Задание на программирование: используя технологию процедурного программирования, разработать программу, решающую поставленную задачу в соответствии с индивидуальным заданием.
Порядок выполнения работы:
1) Получить у преподавателя индивидуальное задание и выполнить постановку задачи: сформулировать условие, определить входные и выходные данные, их ограничения.
|
|
2) Разработать математическую модель.
3) Построить схему алгоритма.
4) Составить программу на языке C++.
5) Входные данные на этапах тестирования и демонстрации работы преподавателю должны вводиться с клавиатуры по запросу. Выходные данные должны выводиться на экран с пояснениями.
6) Использовать стандартные потоковые объекты ввода/вывода cin и cout.
7) Разработанная программа должна содержать функцию, выполняющую индивидуальное задание. При этом разработанная функция должна быть реализована 3 способами:
- как функция, возвращающая искомое значение;
- как функция, возвращающая искомое значение через дополнительный аргумент - указатель;
- как функция, возвращающая искомое значение через дополнительный аргумент - ссылку.
Эти три функции должны иметь одно и то же имя, т.е. должны быть перегружены.
Задача должна быть решена с использованием вызовов функций всех трех типов из функции main().
8) Оформить отчет о лабораторной работе в составе: постановка задачи, математическая модель, текст программы, контрольные примеры.
Дата добавления: 2018-04-05; просмотров: 504; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!