IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> Kraz, прошу помочь, если возможно до пятьницы...
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 2
Пол: Мужской

Репутация: -  0  +


Здраствуйте дорогие читатели, возникла каверзная ситуация...вообщем к главному..
Вот нада написать программу, гонки с препятсвиями, возникла ситуация с созданием двумерного масива для создания поля препятсвий, сам накидал чуток но чет аж паскаль начал глючить smile.gif вобщем вот она самаПрикрепленный файл  Оргазм_мозга_34.txt ( 2.65 килобайт ) Кол-во скачиваний: 749
, кто может помагите в течения 1-2 дня, ну или просто на будущие подскажите, и не судите строго по написанию, тока начал учиться ....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Причина отказа программы работать - банальна, обычный Range Check Error - вылет за границу. В данном случае - за границу типа.

Проблема - вот в этом куске кода:
Цитата
 s1:=0;     {Зануление с1}
xa1:=50;
ga1:=0; {Зануление га1}
for j:=1 to f do {Начало двумерного массива, столбец }
begin
ga1:=ga1+1; {накрутка га1 }
xa1:=xa1*ga1; { задание дистанции между столбцами массива,тоесть колонны выхода колец.}

Вот именно в последней строке и происходит вылет. Потому что переменная xa1 описана, как Integer - стало быть может хранить значения от -32768 до 32767, а при J = 6 ты пытаешься запихать туда 6000*6=36000.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 2
Пол: Мужской

Репутация: -  0  +


да с этим понятно поменял на лонг, но толку, сама игра прерываеться на создании масива, и даже начальные местоположение непоказывает, мб кто знает или подкинет пример написания масива или как то по другому , чтоб создать это поле помех, появляющихся с правого угла , рандомно в строках появляють помехи, и с дальнейшим появление за этими же помехами нового ряда, я пока еще несообразил.Заране спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
да с этим понятно поменял на лонг, но толку
... от этого никакого и не будет. Думать начни. Какими ты значениями оперируешь, подумай! У тебя что хранится во всех этих массивах-то? Координаты точек на экране? Извини, разрешение экрана это 640*480, а не сотни тысяч.

А теперь, внимание, маленький эксперимент: меняем типы ВСЕХ переменных и массивов, кроме GD и GM (они должны быть типа Integer) на LongInt, меняем также ВСЕ подпрограммы, чтобы они принимали и возвращали только LongInt, и добавляем в программу одну строку:
 s1:=0; { Зануление с1 }
xa1:=50;
ga1:=0; { Зануление га1 }
for j:=1 to f do
begin
ga1:=ga1+1; { накрутка га1 }
writeln(j:3, xa1:15, ga1:15); { <--- !!! Вот эту !!! }
xa1:=xa1*ga1;
for i:=1 to n do
, чтобы узнать, с какими ты значениями работаешь, насколько они велики... Что видим? А вот что:

1 50 1
2 50 2
3 100 3
4 300 4
5 1200 5
6 6000 6
7 36000 7
8 252000 8
9 2016000 9
10 18144000 10
11 181440000 11
12 1995840000 12

Куда это годится? На что тебе такие огромные значения? Они ж ни в какой целочисленный тип не влезают, я уж не говорю о том, что толку от них вообще никакого нет (отображаться на граф экране они точно не будут).

Во-первых, имена переменным дай нормальные, чтоб можно было не читая твои сноски, а сразу, читая любой кусок программы, разобраться, что там происходит. Во-вторых - код отформатируй лесенкой, а то глаза ломаются, туда-сюда скакать. И в третьих - все-таки разберись, что у тебя происходит в этом цикле, откуда такие огромные значения... И только потом пытайся исправить что-то и запускать...
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.04.2024 5:22
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name