0 / 0 / 0
Регистрация: 06.06.2017
Сообщений: 4
1

Геометрическая прогрессия

26.09.2017, 07:42. Показов 11121. Ответов 6
Метки нет (Все метки)

Помогите написать программу, которая вычисляет сумму элементов геометрической прогрессии, используя исключения
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2017, 07:42
Ответы с готовыми решениями:

Геометрическая прогрессия
Нужно найти сумму членов геом. прогрессии, знаменатель не должен = 1.При запуске выбивает...

Геометрическая прогрессия
Задача: Дано N десятоков целых чисел. Определить, сколько из них могут составлять геометрическую...

Геометрическая прогрессия
Геометрическая прогрессия У вас есть действительное число и натуральное число n. Вычислить 1 +a +...

геометрическая прогрессия
Составить программу, которая считает члены геометрической прогрессии (N), начальный элемент 2 а...

6
Don't worry, be happy
17769 / 10534 / 2034
Регистрация: 27.09.2012
Сообщений: 26,505
Записей в блоге: 1
26.09.2017, 07:43 2
alex140996, исключения здесь причем?
0
0 / 0 / 0
Регистрация: 06.06.2017
Сообщений: 4
26.09.2017, 08:00  [ТС] 3
Препод сказал сделать код через обработчик исключений
0
Croessmah
26.09.2017, 08:05
  #4

Не по теме:

Это ягодичная мышца, господа.%-)

4
Форумчанин
Эксперт CЭксперт С++
8191 / 5041 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
26.09.2017, 17:44 5
Забудем про формулу 5 класса о сумме первых n членов геом. прогрессии.
<говнокод>
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
int main()
{
    const double b1 = 1, q = 1.1;
    double s = b1, b = b1;
    int n, i = 1;
    std::cin >> n;
    _lbl:
    try
    {
        if (i < n)
            throw(b *= q);
    }
    catch (double)
    {
        s += b;
        i++;
        goto _lbl;
    }
    std::cout << s;
}
</говнокод>
1
0 / 0 / 0
Регистрация: 06.06.2017
Сообщений: 4
29.09.2017, 16:33  [ТС] 6
Есть код, нужно вместо строки, где выводится сообщение об ошибке, сделать тоже самое, но при помощи исключения (Try
и Catch)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <iostream>
#include <cstdlib>
#include <map>
using namespace std;
 
class  progression : protected pair<double, double> {
private:
    double power(unsigned n) {
        switch (n) {
        case 0:
            return 1.;
        case 1:
            return second;
        default: {
            double a2 = power(n / 2);
            a2 *= a2;
            return n & 1 ? second * a2 : a2;
        }
        }
    }
public:
    progression(double first, double denominator) {
        this->first = first;
        second = denominator;
    }
    ~progression(void) {}
    progression(const progression& p) {
        first = p.first;
        second = p.second;
    }
    progression& operator =(const progression& p) {
        first = p.first;
        second = p.second;
        return *this;
    }
    void set(double first, double denominator = 0) {
        this->first = first;
        if (denominator != 0) second = denominator;
    }
    double operator [](int n) {
        return first * power(n);
    }
    double summa(int n) {
        double ret = first / second, sum = 0.0;
        while (--n >= 0)
            sum += (ret *= second);
        return sum;
    }
    void put(double *array, int size) {
        double ret = first / second;
        while (--size >= 0)
            *array++ = (ret *= second);
    }
    friend ostream& operator <<(ostream& out, progression& obj) {
        return out << "<" << obj.first << "|"
                           << obj.second << ">";
    }
};
 
int main(int argc, char* argv[]) {
    unsigned n = argc > 1 ? atoi(argv[1]) : 10;
    double *test = new double[n];
    progression prg(1, 2);
    setlocale(LC_ALL, "rus");
    while (true) {
        int i = 0;
        for (unsigned i = 0; i < n; i++)
            test[i] = prg[i];
        for (unsigned i = 0; i < n; i++)
            cout << test[i] << " | ";
        cout << endl;
        cout << "сколько членов суммировать?: ";
        cin >> i;
        cout << " сумма " << i << " членов = "
                     << prg.summa(i) << endl;
        double first, divisor;
        cout << "новые параметры прогрессии "<< "(начало, знаменатель): ";
        cin >> first >> divisor;
        if (0 == first || 0 == divisor){
                cout<< "error!!! \n Неправильно введены параметры прогрессии"<<endl;
                break;}
        prg = progression(first, divisor);
 
    }
    delete[] test;
}
0
Заклинатель змей
610 / 507 / 213
Регистрация: 30.04.2016
Сообщений: 2,412
29.09.2017, 16:51 7
alex140996,
C++
1
2
3
4
5
6
7
8
try {
   if (0 == first || 0 == divisor){
      throw  string ("OMG IT'S SO FUCKED UP! KERNEL PANIC!!!!!!");
   }
catch (string shit) {
   cout << shit << "ABORTING";
   return 228;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.09.2017, 16:51
Помогаю со студенческими работами здесь

Геометрическая прогрессия из 3х чисел
Ввести 3 числа, определить можно ли сложить геометрическую прогрессию

Геометрическая прогрессия и ошибка в повторениях
Хочу исключить повторения например при b=1 q=8. Но он всё равно продолжается(цикл). И я вообще не...

Геометрическая прогрессия из цифр в числе
Функция проверки. int IfGeometry(int x){ x=abs(x); if ((x%10)==0) return 0; ...

Геометрическая прогрессия на шахматной доске
Всем доброго времени суток.Отписывайтесь кто как решил. #include &quot;head.h&quot; void main() {//на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru