Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Лабораторная работа для Гайделя №2 (Геометрическая прогрессия)
- #include <iostream>
- #include <cmath>
- #include <iomanip> // для нуля после целого числа
- using namespace std;
- // функция продолжения
- bool Prod()
- {
- cout << "Continue Y/N" << endl;
- char yn;
- cin >> yn;
- cin.clear(); // очистка потока
- // если пользователь ввел 'Y' или 'N'
- if (yn == 'Y' && cin.get() == '\n') return true;
- else if (yn == 'N' && cin.get() == '\n') return false;
- // обработка ошибки ввода символа
- else
- {
- while (cin.get() != '\n');
- cout << "Error. Try again" << endl;
- Prod();
- }
- }
- // функция ввода b(1)
- double fElem() {
- cout << "Enter a value for b(1), q and n" << endl;
- cout << "b(1) = ";
- double b1;
- cin >> b1;
- cin.clear();
- //обработка ошибки ввода символа
- if (cin.get() != '\n') {
- while (cin.get() != '\n');
- cout << "error inputing! try again" << endl;
- return fElem();
- }
- return b1;
- }
- // функция ввола q
- double denom() {
- double denominator;
- cout << "q = ";
- cin >> denominator;
- cin.clear();
- //обработка ошибки ввода символа
- if (cin.get() != '\n') {
- while (cin.get() != '\n');
- cout << "error inputing! try again" << endl;
- return denom();
- }
- return denominator;
- }
- // функция ввода n
- double iter() {
- double iteration;
- cout << "n = ";
- cin >> iteration;
- cin.clear();
- //обработка ошибки ввода символа (номер элемента не может быть отрицательным)
- if (cin.get() != '\n' || iteration <= 0) {
- while (cin.get() != '\n');
- cout << "error inputing! try again" << endl;
- return iter();
- }
- return iteration;
- }
- // подсчет суммы геометрической прогрессии
- double getSum(double b1, double q, double n)
- {
- return (b1*(pow(q, n) - 1)) / (q - 1);
- }
- int main()
- {
- do {
- // вызываем функции, получающую b(1), q and n
- double firstElement = fElem();
- double denominator = denom();
- double iteration = iter();
- //получаем сумму элементов прогрессии
- double sum = getSum(firstElement, denominator, iteration);
- //при выводе результата получаем значение с 1 знаком после запятой
- cout.setf(ios::fixed);
- cout.precision(1);
- cout << "Resultat = " << sum << endl;
- } while (Prod()); // продолжаем работу программы, пока пользователь не введет 'N'
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement