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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
omenufa
1 / 1 / 0
Регистрация: 23.09.2010
Сообщений: 20
12.10.2010, 16:41     Полином Лежандра первого рода. Run-Time error =( #1
Доброго времени суток. Требовалось написать программу, для вычисления полинома Лежандра первого рода - рекурсивно и итерационно. Саму программу написал,при компиляции ошибок нет, но когда начинаю вводить данные, выходит 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
C++ Templates (composition). exception handling run-time error
run-time type information C++
Полином Лежандра C++
Run-Time Check Failure #3 C++
Ошибка pow:DOMAIN error в написании функции Бесселя первого рода нулевого порядка C++
C++ Затаившийся run-time error

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
Спасибо! Вот так бывает и не заметишь))
Yandex
Объявления
12.10.2010, 19:20     Полином Лежандра первого рода. Run-Time error =(
Ответ Создать тему
Опции темы

Текущее время: 21:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru