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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> floating point error: domain, при сортировке пузырьком double-значений 
:(
    Опции темы
anatox91
Дата 12.4.2009, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


программист-самоучка
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 12.1.2008
Где: ++Украина.Крым++

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



прошу помочь с небольшой проблемой. В программе, приведенной ниже в самом конце при сортировке пузырьком (не всего массива, а только от и до определенных индексов) программа вылетает с ошибкой:
Код

floating point error: domain


код:
Код

#include <iostream.h>
#include <conio.h>
#include <math.h>
int main() {
    int n, p, q, k, l, a, b, i, j, pmin, qmin, counter;
    double *array, temp;

    //clrscr();

    do {
        cout << "‚ўҐ¤ЁвҐ Ї а ¬Ґва p(¤®«¦Ґ­ Ўлвм Ў®«миҐ ­г«п):" << endl;
        cin >> p;
    } while(!(p >= 1));

    do {
        cout << "‚ўҐ¤ЁвҐ Ї а ¬Ґва q(¤®«¦Ґ­ Ўлвм Ў®«миҐ p):" << endl;
        cin >> q;
    } while(!(q > p));


    do {
        cout << "‚ўҐ¤ЁвҐ Є®«ЁзҐбвў® н«Ґ¬Ґ­в®ў ¬ ббЁў (¤®«¦­® Ўлвм Ў®«миҐ q):" << endl;
        cin >> n;
    } while(!(n >= q));

    array = new double[n];

    cout << "‚ўҐ¤ЁвҐ Ї®б«Ґ¤®ў вҐ«м­® ўбҐ н«Ґ¬Ґ­вл ¬ ббЁў ." << endl;

    for(i=0; i < n; ++i) {
        cout << "‚ўҐ¤ЁвҐ " << i+1 << " н«Ґ¬Ґ­в ¬ ббЁў :" << endl;
        cin >> array[i];
    }


    p-=1, q-=1;
    cout << "Ћв« ¤®з­ п ЇҐз вм..." << endl;
    cout << "p=" << p << endl;
    cout << "q=" << q << endl;
    cout << "ЏҐз вм н«Ґ¬Ґ­в®ў ¬ ббЁў :" << endl;

    for(i=0; i < n; ++i) {
        cout << array[i] << ' ';
    }

    cout << endl;

    cout << "ЏҐз вм ўбҐе ў®§¬®¦­ле в®зҐЄ:" << endl;

    k=a=p, l=b=q;
    for( ; k < l; ++k, --l) {
        cout << "(" << array[k] << ", " << array[l] << ")" << endl;
    }
    cin.ignore();
    cin.get();

    cout << "ЋЇаҐ¤Ґ«Ґ­ЁҐ ­ ЁЎ®«ҐҐ Ў«Ё§Є®© в®зЄЁ Є в®зЄҐ б Є®®а¤Ё­ в ¬Ё (-5, -3)..." << endl;

    pmin = p;
    qmin = q;
    counter = 0;
    for( ; p < q; ++p, --q) {
        if((fabs(array[p] + 5) + fabs(array[q] + 3)) < (fabs(array[pmin] + 5) + fabs(array[qmin] + 3))) {
            pmin = p;
            qmin = q;
        }
        if(fabs(array[p]) <= 7.3 && fabs(array[p]) >= 0 && fabs(array[q]) <= 7.3 && fabs(array[q]) >= 0) ++counter;
    }

    cout << "‘ ¬ п Ў«Ё§Є п в®зЄ  Є в®зЄҐ б Є®®а¤Ё­ в ¬Ё (-5, -3) Ё¬ҐҐв Є®®а¤Ё­ вл: (" << array[pmin] << ", " << array[qmin] << ")" << endl;
    cout << "Љ®«ЁзҐбвў® в®зҐЄ, «Ґ¦ йЁе ў ЄагЈҐ а ¤Ёгᮬ 7.3: " << counter << endl;

    cout << "€¤Ґв б®авЁа®ўЄ  ¬ ббЁў ..." << endl;

    for(i=a; i < b; ++i)
        for(j=b-1; j <= i; --j) {
            if(array[j-1] > array[j]) {
                temp = array[j-1];
                array[j-1] = array[j];
                array[j] = temp;
            }
        }

    cout << "Ћвб®авЁа®ў ­­л© ¬ ббЁў:" << endl;
    for(i=0; i < n; ++i) cout << array[i] << ' ';

    cin.get();
    return 0;
}


П.С. сорри за кракозябры - русские буквы в старой кодировке

заранее спасибо за помощь!


--------------------

The code is the design ©

Sony VAIO VGN-FW480J

user posted image
PM MAIL ICQ   Вверх
Soah
Дата 12.4.2009, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



там выход за пределы массива, поменяй на
Код

    for(i=a; i < b; ++i)
        for(j=b-1; j > i; --j)

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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