Скриншот результатов выполнения программы



 

 


Лабораторная работа №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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!