По-разному работает идентичный код в одной проге
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
По-разному работает идентичный код в одной проге - 2010-09-15 00:31:45.263333
|
|
|
Babylon
Сообщений: 7
Оценки: 0
Присоединился: 2008-08-08 14:52:57.270000
|
program rs2;
{$APPTYPE CONSOLE}
uses
SysUtils;
var a,b,c,x1,x2:array[1..100500] of integer;
xi,i:integer;
procedure masinit(var v:array of integer);
var i:integer;
begin
randomize;
for i:=1 to 10 do
v[i]:=random(40);
end;
procedure masout( v:array of integer );
var i:integer;
begin
// идентичный компонент1
for i:=1 to 10 do
write(' ', v[i], ' [',i,'] ');
end;
begin
masinit(b);
masout(b);
writeln;
// идентичный компонент 2
for i:=1 to 10 do
write(' ', b[i], ' [',i,'] ');
readln;
end.
Проблема в том, что элементы смещаются на 1: Вывод: 30 [1] 8 [2] 22 [3] 33 [4] 2 [5] 2 [6] 6 [7] 2 [8] 23 [9] 15 [10] 0 [1] 30 [2] 8 [3] 22 [4] 33 [5] 2 [6] 2 [7] 6 [8] 2 [9] 23 [10] Вопрос в том, как решить трабл?
|
|
|
RE: По-разному работает идентичный код в одной проге - 2010-09-15 01:35:55.176666
|
|
|
Genco
Сообщений: 1662
Оценки: 90
Присоединился: 2007-12-16 23:11:22.003333
|
Сначала подумал,что ты про вывод в консоль, даже удивился. Нолик уже намекает,что не присваиваешь ты 1й элемент. Потому что передаешь в процедуру статический массив, а параметр в ней - динамический. Нумеруется с нуля. С ошибкой не вылетит,но делать так не надо. Объяви выше свой тип для массива и передавай его (в идеале) .
type
MyMas=array [1..100500] of integer;
-------------
procedure masinit(var v:MyMas);
Вообще расточительно массив так вот весь передавать, ну да ладно (указатель хорошо бы). З.Ы. Вопросы по Delphi наверху в прикрепленном топике.
|
|
|
|
|