Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
Pascal подскажите, где у меня ошибка https://www.cyberforum.ru/ pascal/ thread107317.html
Условие: Найдите натуральные числа m от 2 до 1000 такие, чтобы числа m, m+10, m+14 все были простыми. Мое решение: uses crt; var i:Integer; function prost(ch:integer):boolean; var j,n,k:integer; begin k:=0; For j:=1 to ch do begin if (ch mod j=0) then k:=k+1;
Поиск экстремумов функции одной переменной Pascal
Ребята, сдавать через пару дней.... а я хз как делать такую фигню((( на паскале надо запрогать, выручите... там кода не очень много... Вот задание: Составьте программу вычисления максимума F(x) на интервале с точностью E (значения A, B и E должны вводиться с клавиатуры в процессе выполнения программы; способ задания значения N предоставляется на усмотрение составителя программы). Для...
Pascal не могу написать 4 программы одного типа. кто сможет? 1) Измените значение переменной A$ так, чтобы определялось слово "вертикаль" и получите слово "ветка", "кирка", "кильватер". 2)При помощи функции удаления составьте из слова "Перестройка" составьте слова "стройка",а из слова "Вертикаль " получите слова "ветер". 3)Дан слова "информатика" и "электрофикация". Используя функции вырезки и склейки в программе составить слова: информация,... https://www.cyberforum.ru/ pascal/ thread107314.html Pascal Смена типа данных https://www.cyberforum.ru/ pascal/ thread107287.html
Люди помогите плз, у меня тут возникла небольшая проблемка. У меня дано число K: Integer (Например 1999) и дана числовая переменная Str: String. Как к тексту в переменной str добавить число K?
система сложных уравнений Pascal
условие задачи и мой вариант ответа далее. пытался сделать прогу, вот только, что-то в ней не так
Pascal Наибольший и наименьший элемент матрицы Найти наибольший и наименьший элемент прямоугольной целочисленной матрицы и поменять их местами. https://www.cyberforum.ru/ pascal/ thread107282.html
Pascal Вычислить площади n-угольника , вершины которого имеют координаты Составить программу с использованием подпрограмм для решения задач. Дано натуральное число n>= 3.Вычислить площади n-угольника , вершины которого имеют координаты (x1,y1),(x2,y2),...,(xn,yn). https://www.cyberforum.ru/ pascal/ thread107278.html Pascal Последовательность.
Дана последовательность целых чисел. Выяснить, будет ли она возрастающей?
Pascal Составить алгоритм формирования строки S, содержащей максимальные элементы каждой строки заданной матрицы Задана матрица М размерностью (N*K). Составить алгоритм формирования строки S, содержащей максимальные элементы каждой строки заданной матрицы. https://www.cyberforum.ru/ pascal/ thread107272.html Pascal Найти первый минимальный элемент и заменить его нулем https://www.cyberforum.ru/ pascal/ thread107271.html
Дан массив целых чисел, среди них есть равные. Найти первый минимальный элемент и заменить его нулем.
Pascal Вводится два целых числа. Определить у какого из них больше сумма цифр
Вводится два целых 2-ух значных числа А, В.Определить у какого из них больше сумма цифр (Если можно по подробней заранее спасибо)
Pascal Палиндром Составить программу для поиска натуральных чисел меньше 100,которые при возведении их в квадрат дают палиндром.(Для тех кто не знает что такое Палиндром - это последовательность,которая одинаково читается слева направо и справа налево).Делать не через массивы,а через команды повторения(2 или больше) https://www.cyberforum.ru/ pascal/ thread107226.html
18 / 18 / 9
Регистрация: 07.10.2008
Сообщений: 89
0

201: Ошибка Проверки диапазона - Pascal - Ответ 613445

22.03.2010, 08:12. Показов 20345. Ответов 3
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Дарова Всем)

Столкнулся с теоретически невозможной ошибкой (!=) округления Real-дробного числа
на таком участке кода:

Pascal
1
2
         drwX1:=round(X1); drwX2:=round(X2);
         drwY1:=round(Y1); drwY2:=round(Y2);
где эти переменные объявлены как:
Pascal
1
2
3
var
  X1,Y1,X2,Y2: Real;
  drwX1,drwY1,drwX2,drwY2:Integer;

Ошибка происходит на участке
Pascal
1
2
3
4
5
{
 
}        drwX1:=round(X1); drwX2:=round(X2);
         drwY1:=round(Y1); drwY2:=round(Y2); {
при попытке округлить X1:real до Integer`а  }
И описыается справкой как:

Код
>> 201: Ошибка Проверки диапазона
>> 201: Range Check Error

Являющаяся ошибкой во время выполнения.
Появляется в случаях когда
1) Индекс Массива вне диапазона
2) Назначение Переменной значения вне её диапазона
3) Передача Функции значения вне её диапазона
Склоняюсь к третьему варианту. Но не представляю, что нужно сделать Real`у чтобы он вышел за границы

Вступление:
Пишу Игру.
X1,Y1 и X2,Y2 = это реальные координаты объекта в игре
DrwX1,DrwY1 и DrwX2,DrwY2 = это округленные те же координаты, только округленные.
Используются как параметры для отрисовки объекта на экране.


Реальные координаты (X1,Y1 и X2,Y2) раз в 100мс меняются на значение скорости.
Иксы - смещаются на горизонтальную скорость hspeed,
Игреки - на вертикальную скорость vspeed

Pascal
1
2
3
4
5
6
var
    hspeed, vspeed:Real;
...
 
     X1:=X1 + hspeed; X2:= X2 + hspeed;
     Y1:=Y1 - vspeed; Y2:= Y2 - vspeed;

Чтобы Объект на своем пути сталкивался с другими объектами, а не перскакивал сразу через 24 пикселя -
Я ввел код Пошагового Передвижения.


Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
                           stp_count:= MaxInt( Ceil_Round(abs(hspeed)) , Ceil_Round(abs(vspeed)) );
                           if (stp_count=0) then
 
                           h_chg:=hspeed/stp_count;
                           v_chg:=vspeed/stp_count;
                           {FOR}
                           for stp:=1 to stp_count do begin
 
                               If not Collision_Place
                               (Objects.pointer[obj], X1+h_chg,Y1+v_chg,X2+h_chg,Y2+v_chg, [PhT_Solid], DefNeighbors)
                               then begin
                                      X1:=X1 + h_chg;
                                      X2:=X2 + h_chg;
                                      Y1:=Y1 + v_chg;
                                      Y2:=Y2 + v_chg;
                               end else break;
 
                           end; {step by step FOR ends}

После такого перемещения рассчитываются новые координаты(DrwX1,DrwY1 и DrwX2,DrwY2) в которых будет отрисован объект.

Добавлено через 8 минут
----------------------------------------------------------
Всё! Есть)))
Нашел ошибку!)))


Кусок Призрак попался)))
Я его вам выделил как красную строку:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{stp_count:= MaxInt( Ceil_Round(abs(hspeed)) , Ceil_Round(abs(vspeed)) );}
                           'if (stp_count=0) then'
 
                           h_chg:=hspeed/stp_count;
                           v_chg:=vspeed/stp_count;
                           {FOR}
                           for stp:=1 to stp_count do begin
 
                               If not Collision_Place
                               (Objects.pointer[obj], X1+h_chg,Y1+v_chg,X2+h_chg,Y2+v_chg, [PhT_Solid], DefNeighbors)
                               then begin
                                      X1:=X1 + h_chg;
                                      X2:=X2 + h_chg;
                                      Y1:=Y1 + v_chg;
                                      Y2:=Y2 + v_chg;
                               end else break;
 
                           end; {step by step FOR ends}

Всё)) Спасибо Всем Кто ПрочитаЛ)))
Для любознательных привожу Исходник Системы Передвижения))

Pascal
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
 for obj:=1 to Objects.count do
  with (Objects.pointer[obj]^) do begin
 
  { MOVING }
 
   { PLAN }
     {save pos}
     {move}
     {check}
     {collide}
     {replace}
     {step by step}
   { PLAN ENDS }
     stp_count:= MaxInt( Ceil_Round(abs(hspeed)) , Ceil_Round(abs(vspeed)) );
     If stp_count=0 then continue;
      {save pos}
          X1prev:=X1;
          X2prev:=X2;
          Y1prev:=Y1;
          Y2prev:=Y2;
      {move}    {}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}
         X1:=X1 + hspeed; X2:= X2 + hspeed;
         Y1:=Y1 - vspeed; Y2:= Y2 - vspeed;
 
 
      {check}
         if Collision_Place(Objects.pointer[obj],X1,Y1,X2,Y2,[PhT_solid],DefNeighbors) then begin
                 {collide with Every Neighbour}
                     for col_i:=1 to Objects.Count do if (col_i in DefNeighbors) then
                     Collide_objects(Objects.pointer[obj],Objects.pointer[col_i]);
 
                  {replace}             {to a Start Position}
                           X1:=X1prev;
                           X2:=X2prev;
                           Y1:=Y1prev;
                           Y2:=Y2prev;
 
                  {step by step}
                           {stp_count:= MaxInt( Ceil_Round(abs(hspeed)) , Ceil_Round(abs(vspeed)) );}
{                           if (stp_count<>0) then begin}
 
                           h_chg:=hspeed/stp_count;
                           v_chg:=vspeed/stp_count;
                           {FOR}
                           for stp:=1 to stp_count do begin
 
                               If not Collision_Place
                               (Objects.pointer[obj], X1+h_chg,Y1+v_chg,X2+h_chg,Y2+v_chg, [PhT_Solid], DefNeighbors)
                               then begin
                                      X1:=X1 + h_chg;
                                      X2:=X2 + h_chg;
                                      Y1:=Y1 + v_chg;
                                      Y2:=Y2 + v_chg;
                               end else break;
 
                           end; {step by step FOR ends}
 
         end; {IF collision ends}
 
      {draw}
 
         drwX1:=round(X1); drwX2:=round(X2);
         drwY1:=round(Y1); drwY2:=round(Y2);
...
end; {WITH ends}
Если будут вопросы -пишите в личку
Поки)

----------------------------------------------------------
Щас еще скольжение Тела вдоль Соседних физических объектов при невозможности переместится на их положение пропишу))

Вообще класс будет =))


А Потом Экзешку выложу)))
Отпразднуем!)))

Вернуться к обсуждению:
201: Ошибка Проверки диапазона Pascal
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.03.2010, 08:12
Готовые ответы и решения:

Ошибка проверки диапазона при работе с типизированным типом файла
Возникает ошибка проверки диапазона? как это исправить? program Lab8; uses crt; type Pol =...

Выдает ошибку проверки диапазона
Выдает ошибку проверки диапазона. Поможете исправить? Program otchot3; type z=record fio:array...

Ошибка 201, проверьте, пожалйста
Здравствуйте, уважаемые форумчане. Подскажите, паскаль выбрасывает 201 ошибку. program poop;...

Турбо Паскаль ошибка 201
Ребят, помогите. Я работаю в Турбо Паскале (первый раз, до этого пользовалась АВС Паскалем), в...

3
22.03.2010, 08:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.03.2010, 08:12
Помогаю со студенческими работами здесь

Не могу найти ошибку, ошибка выполнения 201
Мне нужно было перевести задачу с фортрана на паскаль, в итоге получилось это, но с ошибкой,...

Ошибка 201 или как запустить TP7.0 на Win7
Доброго времени суток! Есть программа на TP: Program Space; Uses Graph, Crt,Dos; const...

Ошибка при проверке диапазона
Program p1; var a:array of integer; x,y,m,i:integer; begin writeln('введите колличество чисел,...

Ошибка 0 - выход за границы диапазона изменения индекса
program masiv; var i, j, n, sum: integer; mas: array of integer; begin ...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru