Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
omenufa
1 / 1 / 0
Регистрация: 23.09.2010
Сообщений: 20
#1

Полином Лежандра первого рода. Run-Time error =( - C++

12.10.2010, 16:41. Просмотров 1755. Ответов 2
Метки нет (Все метки)

Доброго времени суток. Требовалось написать программу, для вычисления полинома Лежандра первого рода - рекурсивно и итерационно. Саму программу написал,при компиляции ошибок нет, но когда начинаю вводить данные, выходит RunTime error, будто переменная вызывается без определения, хотя она определена, посмотрите, пожалуйста, где ошибка Заранее спасибо

Сам полином вычисляется по реккурентной формуле:
Полином Лежандра первого рода. Run-Time error =(

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
87
88
89
90
91
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
 
 
float recursion(float x, double n)
{   if(n==0)return 1;
    else if(n==1)return x;
    else return((2*n-1)*x*recursion(x,n-1) - (n-1)*recursion(x,n-2))/n;
}
float iteration(float x, double n)
{       float pol; //полином
        float pol1;//предыдущий полином
        float poln;//вычисляемый полином
        for(int i=0;i<=n;i++)
        {
            if(i!=0)
            {
                if(i!=1)
                {
                    poln=(((2*i-1)*x*pol-(i-1)*pol1)/i);
                    pol1=pol;
                    pol=poln;
                }
                else
                {
                    pol=x;
                    pol1=1;
                }
            }
            else
            {
                pol=1;
                pol1=0;
            }
        }
        return pol;}
 
void main(){
    setlocale(LC_ALL,"rus_rus.1251");
    cout<<"Программа для вычисления полинома Лежандра первого рода\n\n";    
    float x; //double n;
    bool check=false;
    while(!check){
        cout<<"Введите x: ";
        cin>>x;
        if(cin.good()){
            check=true;
        }
        else{
            cout<<"Kernel panic!Check your input.Press any key to continue...";
            cin.clear();
            _flushall();
            _getch();
            system("cls");
            check=false;}
    }
        
    double n;
    while(!check){
Z:      cout<<"Введите n: ";
        cin>>n;
        if(cin.good()){
            check=true;
            if(n<0){
                cout<<"Kernel panic!Check your input.Press any key to continue...";
                cin.clear();
                _flushall();
                _getch();
                system("cls");
                check=false;}
        }
        else{
            cout<<"Kernel panic!Check your input.Press any key to continue...";
            cin.clear();
            _flushall();
            _getch();
            system("cls");
            check=false;
        goto Z;} 
    }
    
    printf("Рекурсивно: %lf\n",recursion(x,n+1));
    printf("Итерационно: %lf\n",iteration(x,n+1));
   
    getch();
    return;}
 Комментарий модератора 
Во избежании потери информации на сторонних ресурсах загружайте изображения на форум через Вложения в Расширенном режиме редактирования сообщений
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2010, 16:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Полином Лежандра первого рода. Run-Time error =( (C++):

Run-time error - C++
Всем здарсте. Подскажите пожалуйста: почему в результате работы такого кода, получаеться run-time ошибка ? #include &lt;iostream&gt;//Defolt...

Затаившийся run-time error - C++
Здравствуйте! Решаю следующую задачу: на стандартный ввод подаётся число вершин выпуклого многоугольника, а потом пары чисел - координаты...

Ошибка Debug error. Run-time check failure #2. C++ - C++
Подскажите, что не так. #include &lt;iostream&gt; #include &lt;locale.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;cstdlib&gt; ...

Templates (composition). exception handling run-time error - C++
Код компилируется. Если делать циклы для push and pop размера такого чтоб не превышало размеры Стока то все работает нормально если...

Создание, заполнение объектами и удаление динамического массива. Выдает run time error - C++
Компилятор ни на что не ругается, но консоль вылетает с виндовской ошибкой #ifndef Point_HPP // anti multiply including gates ...

Полином Лежандра - C++
Здравствуйте, у меня проблема. Мне нужно расчитать полином лежандра до определенной степени и потом использовать его найти корни и тд.... ...

2
Bazan
22 / 22 / 0
Регистрация: 15.04.2009
Сообщений: 100
12.10.2010, 19:07 #2
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
87
88
89
90
91
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
 
 
float recursion(float x, double n)
{       if(n==0)return 1;
        else if(n==1)return x;
        else return((2*n-1)*x*recursion(x,n-1) - (n-1)*recursion(x,n-2))/n;
}
float iteration(float x, double n)
{               float pol; //полином
                float pol1;//предыдущий полином
                float poln;//вычисляемый полином
                for(int i=0;i<=n;i++)
                {
                        if(i!=0)
                        {
                                if(i!=1)
                                {
                                        poln=(((2*i-1)*x*pol-(i-1)*pol1)/i);
                                        pol1=pol;
                                        pol=poln;
                                }
                                else
                                {
                                        pol=x;
                                        pol1=1;
                                }
                        }
                        else
                        {
                                pol=1;
                                pol1=0;
                        }
                }
                return pol;}
 
void main(){
        setlocale(LC_ALL,"rus_rus.1251");
        cout<<"Программа для вычисления полинома Лежандра первого рода\n\n";    
        float x; //double n;
        bool check=false;
        while(!check){
                cout<<"Введите x: ";
                cin>>x;
                if(cin.good()){
                        check=true;
                }
                else{
                        cout<<"Kernel panic!Check your input.Press any key to continue...";
                        cin.clear();
                        _flushall();
                        _getch();
                        system("cls");
                        check=false;}
        }
                
        double n;
        check=false;
        while(!check){
Z:              cout<<"Введите n: ";
                cin>>n;
                if(cin.good()){
                        check=true;
                        if(n<0){
                                cout<<"Kernel panic!Check your input.Press any key to continue...";
                                cin.clear();
                                _flushall();
                                _getch();
                                system("cls");
                                check=false;}
                }
                else{
                        cout<<"Kernel panic!Check your input.Press any key to continue...";
                        cin.clear();
                        _flushall();
                        _getch();
                        system("cls");
                        check=false;
                goto Z;} 
        }
        
        printf("Рекурсивно: %lf\n",recursion(x,n+1));
        printf("Итерационно: %lf\n",iteration(x,n+1));
   
        _getch();
        return;}
Так будет работать. У вас программа не входила во второй цикл while(!check), поскольку в первом цикле переменной check присваивается значение true.
1
omenufa
1 / 1 / 0
Регистрация: 23.09.2010
Сообщений: 20
12.10.2010, 19:20  [ТС] #3
Спасибо! Вот так бывает и не заметишь))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2010, 19:20
Привет! Вот еще темы с ответами:

Ошибка pow:DOMAIN error в написании функции Бесселя первого рода нулевого порядка - C++
Доброго времени суток)) Необходимо записать функцию Бесселя первого рода нулевого порядка. Записала, вроде как, по формуле.. с помощью...

Compile-time и run-time методы и функции - C++
Добрый день. Есть две функции, которые делают идентичную работу: template&lt;bool leftShift, typename T&gt; T byteShift(T data) { ...

Run-Time Check Failure #3 - C++
// // first.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include...

Run-Time Check Failure # 2 - C++
Нужно чтобы програмка находила расстояние между прямыми в пространстве.Она работает,находит правильно,все хорошо.Вот только вконце...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru