Форум программистов, компьютерный форум CyberForum.ru

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

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

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

12.10.2010, 16:41. Просмотров 1720. Ответов 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;}
 Комментарий модератора 
Во избежании потери информации на сторонних ресурсах загружайте изображения на форум через Вложения в Расширенном режиме редактирования сообщений
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2010, 16:41     Полином Лежандра первого рода. Run-Time error =(
Посмотрите здесь:
C++ Run-time error
C++ Затаившийся run-time error
Ошибка Debug error. Run-time check failure #2. C++ C++
C++ Templates (composition). exception handling run-time error
C++ Создание, заполнение объектами и удаление динамического массива. Выдает run time error
Полином Лежандра C++
Ошибка pow:DOMAIN error в написании функции Бесселя первого рода нулевого порядка C++
C++ Compile-time и run-time методы и функции
C++ Run - Time Check Failure #2 - S
Run-Time Check Failure # 2 C++
Run-Time Check Failure #3 C++
C++ Run-time check failure #0

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bazan
22 / 22 / 0
Регистрация: 15.04.2009
Сообщений: 100
12.10.2010, 19:07     Полином Лежандра первого рода. Run-Time error =( #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.
omenufa
1 / 1 / 0
Регистрация: 23.09.2010
Сообщений: 20
12.10.2010, 19:20  [ТС]     Полином Лежандра первого рода. Run-Time error =( #3
Спасибо! Вот так бывает и не заметишь))
Ответ Создать тему
Опции темы

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