Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gilcimar

[Resolvido] erro em array dinamico

Recommended Posts

Olá pessoal, tudo bem ?

Será que alguém poderia me ajudar com um erro quando teu termino o programa na rotina de array dinamico ?

É assim, tenho um programa que faz um random de X valores. Estes valores eu jogo em um ListBox e depois armazeno em um array dinamico:

 

SetLength(vArray,QNT);

for X := 0 to QNT do

begin

Y := RandomRange(N, N2);

ListBox1.Items.Add(IntToStr(Y));

vArray[x] := Y;

end;

 

Até aqui o programa tá funcionando, mas quando eu uso o método Quick Sort pra ordenar o vetor com muitas posições, dá esse erro quando eu saio do programa:

 

Exception EInvalidPointer in module Project1.dpr

Invalid Pointer Operation

 

Esse erro ocorre quando eu uso o método Quick Sort com passagem de parametro:

 

pQuickSort(0,QNT) // 0 - posição inicial

//QNT - tamanho do meu vetor

 

Abaixo minha rotina QuickSort:

 

procedure TForm1.pQuickSort(esquerdo, direito: integer);

var

e,d,aux,chave:integer;

begin

e:=esquerdo;

d:=direito;

chave:= varray[(esquerdo+direito)div 2];

repeat

while(varray[e]<chave)do

e:=e+1;

while(varray[d]>chave)do

d:=d-1;

if(e<=d) then

begin

aux:= varray[e];

varray[e]:=varray[d];

varray[d]:=aux;

inc(e);

dec(d);

end;

until(e>d);

if(esquerdo<d)then

pQuickSort(esquerdo,d);

if (e<direito)then

pQuickSort(e,direito);

end;

 

Alguém por favor tem alguma idéia do que seja ? Eu iniciei o vetor com a posição 0 por que li um material que diz que o vetor dinamico inicia em 0.

 

Gilcimar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, tudo bem ?

Será que alguém poderia me ajudar com um erro quando teu termino o programa na rotina de array dinamico ?

É assim, tenho um programa que faz um random de X valores. Estes valores eu jogo em um ListBox e depois armazeno em um array dinamico:

 

SetLength(vArray,QNT);

for X := 0 to QNT do

begin

Y := RandomRange(N, N2);

ListBox1.Items.Add(IntToStr(Y));

vArray[x] := Y;

end;

 

Até aqui o programa tá funcionando, mas quando eu uso o método Quick Sort pra ordenar o vetor com muitas posições, dá esse erro quando eu saio do programa:

 

Exception EInvalidPointer in module Project1.dpr

Invalid Pointer Operation

 

Esse erro ocorre quando eu uso o método Quick Sort com passagem de parametro:

 

pQuickSort(0,QNT) // 0 - posição inicial

//QNT - tamanho do meu vetor

 

Abaixo minha rotina QuickSort:

 

procedure TForm1.pQuickSort(esquerdo, direito: integer);

var

e,d,aux,chave:integer;

begin

e:=esquerdo;

d:=direito;

chave:= varray[(esquerdo+direito)div 2];

repeat

while(varray[e]<chave)do

e:=e+1;

while(varray[d]>chave)do

d:=d-1;

if(e<=d) then

begin

aux:= varray[e];

varray[e]:=varray[d];

varray[d]:=aux;

inc(e);

dec(d);

end;

until(e>d);

if(esquerdo<d)then

pQuickSort(esquerdo,d);

if (e<direito)then

pQuickSort(e,direito);

end;

 

Alguém por favor tem alguma idéia do que seja ? Eu iniciei o vetor com a posição 0 por que li um material que diz que o vetor dinamico inicia em 0.

 

Gilcimar

 

PROBLEMA RESOLVIDO !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.