Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нахождение интеграла(код компилится, но результат), Ошибка при заполнении массива 
:(
    Опции темы
Erwin
Дата 30.4.2011, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 30.4.2011

Репутация: нет
Всего: нет



Прога считает определенные интеграл на заданном отрезке.
Пользователь вводит начало и конец отрезка (я ввожу 0.1 и 0.6 соответственно в связи с особенностью интегрирования функции), ну и понеслась.
Ошибка возникает в 46 строчке при расчете I.
Трейсил прогу, выяснил, что значение y[1][0] почему то равно -9.2559631349317831e+061, хотя при заполнении массива y[5][5] значение присваивается вполне нормально...

скрин

Код

#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
void main()
{
        setlocale(LC_ALL,"Russian");
        int i, j, k;
        double xn, xk, x[5], y[5][5], h, I, iz;
 
        cout << "Введите начало отрезка (нижний предел): ";
        cin >> xn; cout << endl;
        cout << "Введите конец отрезка (верхний предел): ";
        cin >> xk; cout << endl;
        
        h = (xk - xn)/4;
 
        cout << "Шаг = " <<h <<endl <<"\n";
 
        for (i=0; i<5; i++)
        {       
                x[i] = xn + i * h; 
        }
                
        for (i=0; i<5; i++)
        {       y[i][0] = asin(sqrt(x[i]));
                
                cout << "x["<<i<<"] = " << x[i] << cout<< "\ty["<<i<< "] = " << y[i][0] << endl;
        }
        cout << "\n\t\tТАБЛИЦА РАЗНОСТЕЙ" <<endl <<"\n";
        cout << "\t1\t\t2\t\t3\t\t4" <<"\n";
        k = 0;
        for(i=0; i<5; i++)
        {       for(j=0; j<5-k; j++)
                {y[j][i+1] = y[j+1][i] - y[j][i];}
                k++;    
        }
        k = 0;
        for(i = 0; i<5; i++)
        {       for(j=1; j<5-k; j++)
                {cout << y[i][j]<<"\t" ;}
                cout<<endl;
                k++;
        }
 
        I=h*((y[0][0]+y[4][0])/2.0+y[1][0]+y[2][0]+y[3][0]);
        cout << "\nПриближенное значение = " <<I;
 
        iz=(asin(sqrt(x[4]))*x[4]+1/2.0*((x[4]*sqrt(-x[4]*(x[4]-1)))/(x[4]*x[4]-x[4]*(x[4]-1)))+1/2.0*atan(sqrt((-x[4]*(x[4]-1)))/x[4]))-
                (asin(sqrt(x[0]))*x[0]+1/2.0*((x[0]*sqrt(-x[0]*(x[0]-1)))/(x[0]*x[0]-x[0]*(x[0]-1)))+1/2.0*atan(sqrt((-x[0]*(x[0]-1)))/x[0]));
        cout << "\n\nИстинное значение = " <<iz;
        cout << "\n\nПогрешность = " << iz-I;
        _getch();
        }

PM MAIL   Вверх
ValeryLaptev
Дата 30.4.2011, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Препод



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 19.8.2010
Где: Астрахань

Репутация: 1
Всего: 1



Неясно, сколько же тебе нужно значений...
Так как при вычислении y[j][i+1] ты явно улетаешь за границу массива.
PM MAIL   Вверх
Erwin
Дата 1.5.2011, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 30.4.2011

Репутация: нет
Всего: нет



да, косяк в этом цикле... раньше его использовал только для таблицы разностей, которую он хорошо считает, и не замечал, что y[1][0] в процессе меняется...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0623 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.