pascal : Числа подсчитываются неверно ?

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by hoty, 31 Jul 2008.

  1. hoty

    hoty Elder - Старейшина

    Joined:
    20 May 2008
    Messages:
    57
    Likes Received:
    10
    Reputations:
    1
    Это сортировка Методом Хоара :
    На входе :
    a: массив чисел - integer;
    l,r - границы сортируемой части массива (l=1;r=n);
    c,m - количество сравнений, пересылок элементов.




    Вопрос : почему если n (кол-во элементов массива)
    < 200 то результат c нормально отображается.
    > 200 (300 и более, то при подсчете числа c результат уходит в -, т.е, например, -5123 ?

    Как исправить это ? Необходимо, чтобы считалось c правильно при 400 и более.


    p.s: аналогичное происходит с возведение x в степень 2 :
    если написать x*xто если пишем больше 100 считает в минус.
    если же написать так x=exp(2*ln(x)), то считает, практически любые числа правильно.
     
    #1 hoty, 31 Jul 2008
    Last edited: 31 Jul 2008
  2. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    переполнение. смени тип:поставь extended или longint вместо integer. или реализуй собственное прибавление единицы типа длинной арифметики или просто двух longint'ов
     
    1 person likes this.
  3. hoty

    hoty Elder - Старейшина

    Joined:
    20 May 2008
    Messages:
    57
    Likes Received:
    10
    Reputations:
    1
    to desTiny :
    применял longint, при n>200 c считало неверно.
    применил extended работает, при n=400 и более :)
    пасиб :)