Ir para conteúdo

POWERED BY:

Arquivado

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

guilhermerr

valores positivos

Recommended Posts

alo, tenho aqui um vetor com 10 elementos , existem valores diferentes de zero e iguais a zero da ai pra falar como buscar os valores positivos (eliminar os nulos)

ou entao dada uma tabela com dez campos retornar os valores positivos do registro (usando sql). falloou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A solução mais simples que eu conheço seria fazer um loop por todo o vetor, checando cada valor. Com Sql, você precisa usar uma condição no WHERE, se não me engano, algo assim:

 

select * from tbl where valor > 0

Flw.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, se for um vetor (arra [1 .. 10] of integer) você pode retornar os valores com um for.

 

//é necessário declarar um tipo de dados para retornar arrays na sessão "Type" da Unit
TpArrayRetorno = Array of Integer;

você pode então retornar somente os valores positivos com esta função:

function RetornaPositivos: TpArrayRetorno;
var
	Cont: Integer;
begin
	SetLength(Result, 0);
	For Cont := 1 to Length(MeuVetor) do
	begin
		if (MeuVetor[Cont] > 0) then
		begin
			SetLength(Result, Length(Result)+1); //aumenta o tamanho do vetor de retorno
			Result(Length(Result)-1) := MeuVetor[Cont]; //Em vetores dinâmicos, no Delphi, os registros utilizaveis vão de 0 até Tamanho-1
		end;
	end;
end;

:D

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu a solução ai amigo, o problema é fazer uma função em pascal outra é fazer uma função no delphi. O que nao é muito explicito. fiz aqui uma solução em pascal

mas tem algum problema o if admite mais de um valor verdadeiro para um vetor. entao

como pegar todos os verdadeiros? o uso do break para no primeiro valor encontrado?

e o continue poderia pegar somente os valores diferentes. o halt interrompe definitivamente o loop?

var

v1: array[1..10] of integer;

v2: array[1..4] of integer;

i,j,k : integer;

begin

v1[1]:=1;

v1[2]:=3;

v1[3]:=0;

v1[4]:=0;

v1[5]:=0;

v1[6]:=0;

v1[7]:=0;

v1[8]:=0;

v1[9]:=0;

v1[10]:=0;

for i:=1 to 4 do

begin

for j:=1 to 10 do

begin

if v1[j]=v2[j] then

begin

v2:= v1[j];

end

end;

for k:=1 to 4 do

begin

showmessage(inttostr(v2[k]));

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, uma dica: explique melhor o problema... qual a linguagem, onde está a dúvida, etc.... do jeito que postou sua dúvida inicial, não há como saber exatamente o problema que está enfrentando e se o mesmo é em Pascal, Delphi, BD... fica difícil ajudar assim.... outra coisa: você postou seu código, mas até agora não deixou claro o que quer fazer, ai pergunto: o que você realmente quer fazer?? Você quer varrer um vetor em Pascal e mostrar só os positivos? Você quer varrer um vetor em Pascal e apagar os valores iguais ou menores a zero?Enfim... explique detalhadamente o problema que enfrenta, dê um exemplo prático e funcional se possível... afinal, ninguém aqui é uma "Mãe Diná" que vê o futuro e os mistérios do Cosmos numa bola de cristal para adivinhar o seu problema né? rsss

 

De boa, um bom ponto para pesquisar soluções em vetores é a área de algoritmos... tem muito exemplo lá que pode ser migrado para o Pascal tranquilamente.

 

[]'s

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.