aLT22

Trusov's_Lab (C++)

Mar 4th, 2015
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.67 KB | None | 0 0
  1. /* Created by Turkin Alexey, AMM, VSU*/
  2.  
  3. // подключаем библиотеки
  4. #include <iostream>
  5. #include <iomanip> // библиотека для функции setprecision();, которая отвечает за вывод знаков после запятой (кол-во цифр в скобках - кол-во знаков после запятой)
  6.  
  7. using namespace std;
  8.  
  9. // int main() || void main() function
  10. int main() {
  11.     setlocale(LC_ALL, "Russian"); // подключение русской локали (чтобы в консоли русские буквы в кавычках воспринимались компилятором)
  12.     unsigned short int n; // unsigned - беззнаковый, short - диапазон по своей сути и памяти меньше берет (в C# 100% также)
  13.     cout << "Введите точность интегрирования n: "; cin >> n;
  14.     int a, b;
  15.     cout << "Введите пределы интегрирования: сначала а, затем b: "; cin >> a >> b;
  16.     if (n <= 0) {
  17.         cout << "INVALID N!" << endl;
  18.         system("pause");
  19.         return 0;  // если у нас int main(), то обязательно пишем возвращаемое значение, т.е. return 0;, если же написано void main(), то return 0; писать не нужно
  20.     } else {
  21.         double slag = ((b-a)/2*n); // наше суммируемое слагаемое в соответствии с заданием
  22.         double sigma = 0; // сам результат вычислений
  23.         if (a == b) {
  24.             cout << "0" << endl;
  25.             system("pause");
  26.             return 0;
  27.         } else if (a < b) {
  28.             for (int i = a; i <= b; i++) {
  29.                 if (i == a || i == b) {
  30.                     slag *= i;
  31.                 } else {
  32.                     slag *= 2*i;
  33.                 }
  34.                 sigma += slag;
  35.                 slag = ((b-a)/2*n);
  36.             }
  37.             cout << "Значение интеграла при заданной точности n равно: " << setprecision(10) << sigma << endl;
  38.             system("pause");
  39.             return 0;
  40.         } else {                   // почему здесь вычитание, а не сумма. Потому что по св-ву интеграла Римана (определенного интеграла), если поменять пределы местами, то интеграл следует брать с минусом
  41.             for (int i = b; i <= a; i++) {
  42.                 if (i == a || i == b) {
  43.                     slag *= i;
  44.                 } else {
  45.                     slag *= 2*i;
  46.                 }
  47.                 sigma -= slag;
  48.                 slag = ((b-a)/2*n);
  49.             }
  50.             cout << "Значение интеграла при заданной точности n равно: " << setprecision(10) << sigma << endl;
  51.             system("pause");
  52.             return 0;
  53.         }
  54.     }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment