![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Если не сложно - напишите ответ на 145й пост
TUser © (2005-01-28 15:17:00)вот из этой ветки
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1106658881&n=0
_Lucky_ (2005-01-28 19:27:00) [1]
> Александр Иванов © (28.01.05 17:09) [14]
> И все решение - в добавлении слова var
браво! на 5+, если честно задай мне такую задачу ввек бы не решил, ну не знаю я на столько хорошо пас.
> TUser © (28.01.05 19:06) [15]
> Понятно, спасибо.
>
> Хорош Делфи размером стека ...
отнють, представть что надо отсортировать массив в 100 мегов, может возникнуть неприятная ситуация, хотя щас 100 мегов никого не удевить, у меня например 512, но все же
TUser (2005-01-28 19:06:00) [2]Понятно, спасибо.
Хорош Делфи размером стека ...
Александр Иванов (2005-01-28 17:09:00) [3]И все решение - в добавлении слова var
Александр Иванов (2005-01-28 17:06:00) [4]По умолчанию 16К? Если так то в Function FindMin (Vect : TVector) : Integer; параметр по значению передается и как раз превышает 16К.
Александр Иванов (2005-01-28 17:04:00) [5]По моему переполнению стека просто неоткуда взяться.
Александр Иванов (2005-01-28 17:02:00) [6]Это не мой массив :). Вот код:
Program FindMinPrg;
Uses Crt;
Type
TVector = Array [1..10000] Of integer;
Var
Vector : TVector;
I : Integer;
Function FindMin (Vect : TVector) : Integer;
Var
X, Min : Integer;
Begin
Min := Vect [1];
For X := 2 To 10000 Do
If Min > Vect [x] Then
Min := Vect [X];
FindMin := Min;
End;
Procedure SetRandom (Var Vect : TVector);
Var
X : integer;
Begin
For X := 1 To 10000 Do
Vect [x] := random (32767)-16384;
End;
Begin
ClrScr;
Randomize;
SetRandom (Vector);
WriteLn ('Min: ', FindMin (Vector));
End.
Александр Иванов (2005-01-28 16:58:00) [7]Извините, не заметил начало [6]
PVOzerski (2005-01-28 16:58:00) [8]Александр, в этой директиве 1-й параметр - размер стека. А твой массив часом не локальный?
Александр Иванов (2005-01-28 16:57:00) [9]PVOzerski © (28.01.05 16:46) [6]
можно поиграть директивой {$M ... (1-е число)
Там всего массив 10000 элементов, целочисленный, так что память не при чем.
PVOzerski © (28.01.05 16:47) [7]
Много рекурсий или локальных переменных?
Никаких рекурсий.
Вы думаете ошибка связана с нехваткой памяти?
PVOzerski (2005-01-28 16:47:00) [10]Много рекурсий или локальных переменных?
PVOzerski (2005-01-28 16:46:00) [11]Stack overflow - можно поиграть директивой {$M ... (1-е число)
TUser (2005-01-28 16:04:00) [12]
> Она, по идее, и в ТР должна работать, я не вижу ошибок
Я тоже так думал.
Хелпа у меня нет по ТР - только консольный компилятор.
Александр Иванов (2005-01-28 15:36:00) [13]Она, по идее, и в ТР должна работать, я не вижу ошибок. А что хелп говорит, по поводу ошибки 202?
Когда-то я их помнил :).
TUser (2005-01-28 15:28:00) [14]Паскалем скомпилированная программа нормально заработала, когда я написал PVector = ^TVector, Vector: PVector, дальше - New и Dispose + операторы разыменования везде, где надо. В вызовах функций убрал var, и заменил типа параметра на TVector.
TUser (2005-01-28 15:27:00) [15]Там статические, но обсуждаемый код после TPC.exe (6я версия) выдал RunTimeError 202, а dcc32.exe (после того, как ублат ТР'шный модуль и написал apptype) сделал безглючную программу.
Александр Иванов (2005-01-28 15:23:00) [16]Насколько помню точно также, за исключением динамических массивов.